我正在尝试编写一个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的人来说是个常见问题。有什么建议?谢谢!
答案 0 :(得分:0)
while
条件缺少abs
。它应该是
while abs(phi-p)>10^(-n)
根据您的代码,p
(即2)的初始值大于phi
,因此phi-p
为负数且while
循环从不进入。这就是为什么m
等于0
。