黄金比例的 MATLAB 代码继续分数



我正在尝试编写一个 Matlab 函数来计算需要多少项 m,黄金分数才能达到 n 位精度。这是我到目前为止所拥有的,但我的输出一直为 0。

phi = (1+sqrt(5))/2;
p=1;
p=[1+1/p];
LoopCounter = 0;
while (phi-p)>10^(-n)
    p=[1+1/p];
    LoopCounter = LoopCounter + 1;
end
m=LoopCounter;
m

我认为对于那些学习数论或刚刚开始学习 Matlab 的人来说,这是一个常见问题。有什么建议吗?谢谢!

while条件缺少abs。它应该是

while abs(phi-p)>10^(-n)

按照您的代码,p的初始值(即 2)大于 phi ,因此phi-p为负数,并且永远不会进入while循环。这就是为什么你得到m等于0.

最新更新