0

この式の反復バージョンを計算する必要があります。

f(i)=integral ( x^i/(4x+1) ) from 0 to 1

次の式を使用します。

f(0)=ln(5)/4;
f(i)=1/(i+1) - 4*f(i+1);

次のことを試してみました: 0 から 1 までの積分 ( x^100/(4x+1) ) を計算し、結果を保存します。次に、反復バージョンを使用して、この結果から f(i) を計算します。
しかし、誤差が大きすぎるため、間違った結果が得られます。
このエラーは、i<=25 の場合にのみ許容されます。
このアルゴリズムが安定していない理由と、i=100 以上から結果を計算する解決策があるかどうかを知りたいです。

これはコードです:

function y=Integral(i,max)

if i==0
    y=1/4*log(5);
elseif i==max
    y=0.0;
else
    y=1/(i+1)-4*Integral(i+1,max);
end


end

この関数では、累積された誤差が大きすぎるため、正確な値を取得することはできません。この式のバージョン。

4

1 に答える 1

2

この再帰関数は、100に到達するまでの途中で部分的な結果を保存する必要なしにジョブを実行する必要があります。

function y = Integral(i)

if i==0
    y=log(5)/4;
else
    y = (-Integral(i-1) + 1/i)/4;
end
end

再帰を機能させるには、i = 100から開始し、i=0に達するまでi-1で関数を呼び出す必要があります。

Integral(100)は、部分的な結果を保存する必要なしに最終的な答えを提供します。

于 2012-10-23T16:31:04.597 に答える