0

混合法と再帰法を使用して、無限級数の合計を計算する必要があります。これら2つの方法の違いは何ですか?

以下の私のコードは、私がそれをどのように行っているかを示しています。どの方法を使用していますか?

たとえば、系列を計算するには

合計 = -X -(X^2/2) -(X^3/3) -(X^4/4)...など

このコードを使用します

sum := -x;
numerator:= x;
n := 2;
current := -x; 

repeat
  numerator := numerator * x;
  previous := current;
  current := numerator/n;  
  n := n + 1;
  sum := sum - current;
until ( abs(previous-current) < eps )
4

3 に答える 3

2

あなたの問題/質問は曖昧すぎ/一般的すぎます。したがって、私はいくつかの一般的な意見以上のものを提供することはできません。

手始めに、「任意の」無限級数を合計する一般的な方法は存在しません。シリーズごとに個別に、その特定の1つを合計する方法を決定する必要があります。これには、まず、その収束特性の調査が必要です。シリーズは、収束、発散、または条件付きで収束する可能性があります。用語がある制限より小さくなるまで、または連続する用語間の差がある制限より小さくなるまで用語を追加するだけでは、制限の合計に近づくことを保証するものではありません。実際、合計が有限であることを保証するものではありません(たとえば、級数1 + 1/2 + 1/3 + 1/4 ...を考えてみてください)。

次に、例を見てみましょう:-sum(x ^ n / n; n = 1..inf)。この特定のシリーズには、x> = 1の場合も、x <-1の場合も、有限の合計はありません。-1<= x <1でない限り、収束しません。項はどんどん大きくなります...(ただし、読む!)。

連続する項を追加する「単純な」アプローチの場合abs(x)<1、「最後に」正しい答えが得られますが、xが非常に小さい場合を除き、制限合計に近づくまでには長い時間がかかります。有限の小和は取るに足らないものではありません。さらに、そのようなタイプの級数を合計するためのより良い(=より速く収束する)方法があります。

この特定のケースでは、それがMaclaurin級数展開で表されるlog(1-x)であることに気付くかもしれません。したがって、無限の合計の結果はすでにわかっているので、面倒な合計を設定する必要はまったくありません。

ここで、abs(x)が1より大きい場合は常に、項が「n」が高くなるほど大きくなることが簡単にわかるため、単純な合計手順は必ず失敗することを考慮してください。一方、{log(1-x);のこのマクラウリン展開があります。-1 <= x <1}であり、log(1-x)も存在し、x = -4に対して有限であるという知識を使用して、すべてがどのように適合するかを考えることができます。合計の限界を「定義」できるでしょうか。この対数によるx<-1の場合も?!分析接続の素晴らしい世界に入ります。これについては説明しません。ここではスペースがかかりすぎます。

全体として、無限級数を合計することは芸術であり、標準の合計マシンに投入するものではありません。したがって、合計する系列を指定しないと、どの方法を適用するかを事前に指定することはできません。

最後に、「混合メソッド」の意味がわからないため、それについて、または再帰メソッドとの比較についてコメントすることはできません。再帰的な方法は、元の形式と非常によく似た形式でシリーズを記述できる場合はいつでも使用できる可能性がありますが、「少し単純」です。例、無限級数からではなく、有限級数から:フィボナッチ数F(n)は、有限和F(N-1)+ F(n-2)として定義できます。これは再帰であり、「のみ」いくつかの基本値を知っている必要があります-ic:F(0)= F(1)=1-そしてそこに再帰の設定があります。再帰的な形式でシリーズを書き直すと、分析ソリューションを見つけるのに役立つ場合があります。または、分析ソリューションのある部分を分割して、高速収束の数値アプローチに役立つ「より便利な」シリーズを残すことができます。

たぶん、「混合法」は、分析的な総和の混合を示すことを目的としています-あなたのシリーズのように:log(1-x)-といくつかの(スマートまたはブルートフォース)数値近似(他の人が指摘したように、「再帰的」 '反復的'であることを意味する場合があります)。

結論として:(a)「混合」および「再帰的」方法の意味を明確にします。(b)賢明な答えが得られないように、合計する必要のあるシリーズのタイプについて具体的に説明してください。

于 2012-10-22T21:24:14.760 に答える
1

あなたの質問に対する回答の一部:

「混合」メソッドが何を意味するのかわかりませんが、2 つのメソッドがあり、両方のビットから新しいメソッドを作成した場合、混合メソッドがあることがわかると思います。しかし、一般的に使用されている既製の用語としては、私には意味がありません. あなたはそれを「再帰的」と対比しており、私はあなたが英語を母国語としないとすでに判断しているので、「反復的」と書くつもりだったのだろうか?「反復」と「再帰」の方法を比較対照することは非常に一般的です。

あなたが私たちに示したのは「反復」メソッドです。簡単に言えば、反復メソッドは、コードと同じようにループ (またはループ) に依存するメソッドです。

ちなみに、級数の最初の項が他のすべての項と同じ形式を持っていることを認識した場合、コードをより単純にすることができると思います。単純化(X^1)/1するXと、数学的に正しいですが、計算上は、多くの場合、最初の用語が他のすべての用語と形式が異なるシーケンスではなく、同一の用語のシーケンス。

再帰的メソッドは、それ自体を呼び出すメソッドです。私は宿題を手伝っていると思うので、再帰的な方法を書くつもりはありませんが、おおよその形を持つ関数を探しているはずです:

sum([]) = 0
sum([a b c d ...]) = a + sum([b c d ...])

「関数」sum(2 つの「句」で定義されている) は、2 番目の句の左側と右側の両方にあることに注意してください。また、右側では入力引数のサブセット (左側) に適用され、ある段階で関数が終了する可能性があることにも注意してください。

于 2012-10-22T12:33:32.773 に答える
0

ご紹介したシリーズ

-X -(X^2/2) -(X^3/3) -(X^4/4)...

次のように書くことができます

-(X^1/1) - (X^2/2) - (X^3/3) ... -(X^n/n)

これにより、

n-(X^i/i)まで繰り返します。ここで、n はabs(previous-current) < eps毎回 i を増やします

これにより、次のことがわかります。

シリーズ

以下のコードがあなたの期待に応えられることを願っています。

i := 1;
sum := 0;
current := x;

repeat
  previous := current;
  current  := - exp(x, i) / i; {Here you call a function exp that realise x^i}
  sum      := sum + current;
  i        := i + 1;
until ( abs(previous-current) < eps )
于 2012-10-22T14:55:54.113 に答える