斐波那契数列与黄金分割的程序证明

[复制链接]
2277|5
 楼主| gaoyang9992006 发表于 2019-5-12 23:29 | 显示全部楼层 |阅读模式
我们知道自然界中存在黄金分割,存在一个特别的数列“斐波那契数列”

1 2 3 5 8 13 21 34 55……
即通项公式为:a(n-1)+a(n)=a(n+1)
那么我们来证明当n很大的时候a(n)/a(n+1)趋近于0.618
我们可以定义两个变量存储相邻的两个数字
比如a=1;b=2
然后我们每次循环这么做:计算出两者的和,再舍弃最小的数a,将b当前的数字放在a,将刚才计算的和放在b位置。
为了不浪费多余的变量,我们可以这么做,因为a每次计算后都是要舍弃的,我们可以让a存放每次计算的和,然后和b交换数字。
经过N多次如此操作后,我们拿a/b看结果。
  1. > a=1;b=2;
  2. > for i=1,100 do
  3. >> a=a+b;
  4. >> a,b=b,a;
  5. >> end
  6. > print(a/b)
  7. 0.61803398874989
  8. >


评论

而黄金分割点的准确值是: > =(5^0.5-1)/2 0.61803398874989  发表于 2019-5-12 23:45
 楼主| gaoyang9992006 发表于 2019-5-12 23:38 | 显示全部楼层
  1. > for j=1,20 do
  2. >>  a=1;b=2;for i=1,j do a=a+b;a,b=b,a;end print(a/b)
  3. >> end
  4. 0.66666666666667
  5. 0.6
  6. 0.625
  7. 0.61538461538462
  8. 0.61904761904762
  9. 0.61764705882353
  10. 0.61818181818182
  11. 0.61797752808989
  12. 0.61805555555556
  13. 0.61802575107296
  14. 0.61803713527851
  15. 0.61803278688525
  16. 0.61803444782168
  17. 0.61803381340013
  18. 0.61803405572755
  19. 0.61803396316671
  20. 0.6180339985218
  21. 0.61803398501736
  22. 0.6180339901756
  23. 0.61803398820533
  24. >

测试了从1到20次的迭代操作,发现这个数列其实很快就像0.618收敛了,其实0.618是不准确的,这个数字其实是个无理数
leserlee 发表于 2019-5-15 18:50 | 显示全部楼层
好!探讨科学
 楼主| gaoyang9992006 发表于 2019-5-15 20:00 | 显示全部楼层


有了计算机编程,以前很多没法完全计算的东西都可以计算出来了,不用凭空猜测了。
swj88ii 发表于 2020-2-22 19:13 | 显示全部楼层
> print(a/b)
个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2052

主题

16403

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部