我必须计算这个公式的迭代版本:

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我想知道,为什么这个算法是不稳定的,如果有一个解决方案来计算结果从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

使用这个函数,我永远不会得到一个精确的值,因为累积的误差太大了。如果我使用i=15和max=18,我会得到一个接近的值(甚至是3或4倍,所以不可接受)。我需要这个公式的稳定版本。

最佳答案

这个递归函数应该在不需要存储部分结果的情况下完成工作,直到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-1调用函数,直到它达到i=0。
积分(100)将给出最终答案,而无需存储部分结果。

10-08 05:39