我正在尝试编写一个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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top