MATLAB - Fibonacci代码的局限性

时间:2017-03-13 10:09:29

标签: matlab

我尝试使用while循环编写Fibonacci系列的代码。我写了以下代码
after editing to 46

Original code upto 45

f=[1,1]; %Valid till 44 terms, for larger numbers this method can't be used
i=3;
while i<45
    fNew=f(i-1)+f(i-2);
    f=[f,fNew];
    i=i+1;

end

最多45个数字,它工作正常。如果我在上面的代码中写入46而不是45,我得到随机零(数量约为40),然后是一些随机数。为什么会这样?

1 个答案:

答案 0 :(得分:2)

Fibonacci行的计算没有问题。你只是误解了它的图形表示。

如果打印矩阵,则应始终检查开始时的倍增因子。请注意1e+9 * 0.0000 != 0,但1e+9 * 0.0000 < 1e+5默认情况下,matlab不会以完整分辨率打印结果。您可以使用format命令更改此设置,例如:

format longg

另外,您可以使用注释中建议的指定格式打印矩阵:

fprintf('%i\n',f)

或者您可以向量中提出一个元素:

f(1) % will return allways 1

请注意,默认情况下,Matlab会尝试对打印矩阵中的所有元素使用通用比例因子,这可能不适合所有元素。