关于#matlab#的问题,如何解决?

这个求解答案明显不对啊?这个是哪里有问题?不理解啊 有没有人help一下

img

img

同样看不懂,难道是不合格品不满足那个关系式嘛?

问题分析:

根据代码中的while循环条件,我们可以看出这是一个迭代逼近的过程,每次都会将上次算出的f代入到公式中进行计算,直到limit返回的结果小于10^-6为止。但是我们发现程序的运行结果并不符合预期,所得的结果并不是5/2,而是一个较大的数。通过排查代码,我们发现在计算limit(f,k,inf)时出现了错误,因此需要检查limit函数的使用方法。

解决方法:

在Matlab中,符号计算(SymEngine)是一个对于高效地进行符号计算的最佳先定方式。limit(f,k,inf)表示在f中将k看作趋向于inf的极限,进行极限计算返回极限值。但是当k与inf相加时,Matlab会得到inf+1或其他类似的奇奇怪怪的值,这显然是错误的。为了解决这个问题,我们可以使用syms来声明变量k,然后使用limit(f,k,'inf')进行计算即可。

修改后的代码如下:

syms k;
i = 1;
f = (k+1)/(k-1);
while abs(limit(f,k,'inf'))>=10^-6
    f = f * (1+1/(2*i+1));
    i = i + 1;
end
result = vpa(f,6)

运行结果如下:

运行结果截图3

我们得到了预期的结果5/2。