Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何使该算法稳定_Algorithm_Matlab_Numerical - Fatal编程技术网

Algorithm 如何使该算法稳定

Algorithm 如何使该算法稳定,algorithm,matlab,numerical,Algorithm,Matlab,Numerical,我必须计算这个公式的迭代版本: 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此递归函数应在不需要存储部分结果的情况下执行任务,直至100: function y = Integral(

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

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此递归函数应在不需要存储部分结果的情况下执行任务,直至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)将给出最终答案,无需存储部分结果。

无需确认;“f(i)=1/(i+1)-4*f(i+1)”的定义准确吗?另外,请你把你的代码发出来,我有点困惑,你到底做了什么,你两次定义f(I)的确切含义是什么…它看起来更像是一个数学作业,而不是一个编程问题…我同意,除非他提供的代码是好的,错误的原因是使用了错误的变量,计算机上的某些计算不够“精确”…共享您的代码以便我们可以帮助是的,很好,这很有效。但是还有一个问题:如果我是负数,我该怎么办?抛出异常还是返回nan?你能告诉我如何处理这类值吗?如果我没弄错的话,对于I的负值,积分发散到inf,所以不需要计算它们,只需返回inf。
function y = Integral(i)

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