1

我正在尝试编写一个 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 的人来说,这是一个常见的问题。有什么建议吗?谢谢!

4

1 回答 1

0

while条件abs缺少. 它应该是

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

就目前的代码而言,(即 2)的初始值p大于phi,因此phi-p为负数,并且while永远不会进入循环。这就是你得到m等于的原因0

于 2014-02-24T22:54:44.480 回答