2014-02-24 39 views
1

我正在尝试编写一个计算多少项m的Matlab函数,它需要得到n个数字的精确度的黄金分数。这里是我到目前为止,但我不断收到的0用于黄金比例的matlab代码续部分

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

while条件缺失abs。它应该是

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

与您的代码,因为它代表的p(即2)初始值大于phi越大,所以phi-p为负,并且永远不会进入while循环。这就是为什么你得到m等于0

+0

此外,请注意'p = [1 + 1/p]'中的括号不是必需的 –

+0

谢谢!那就是诀窍。 – kettlebar