黄金比例连续分数的matlab代码
-
20-12-2019 - |
题
我正在尝试编写一个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
.
不隶属于 StackOverflow