打印

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

[复制链接]
1891|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看结果。
> a=1;b=2;
> for i=1,100 do
>> a=a+b;
>> a,b=b,a;
>> end
> print(a/b)
0.61803398874989
>


使用特权

评论回复
评论
gaoyang9992006 2019-5-12 23:45 回复TA
而黄金分割点的准确值是: > =(5^0.5-1)/2 0.61803398874989 

相关帖子

沙发
gaoyang9992006|  楼主 | 2019-5-12 23:38 | 只看该作者
> for j=1,20 do
>>  a=1;b=2;for i=1,j do a=a+b;a,b=b,a;end print(a/b)
>> end
0.66666666666667
0.6
0.625
0.61538461538462
0.61904761904762
0.61764705882353
0.61818181818182
0.61797752808989
0.61805555555556
0.61802575107296
0.61803713527851
0.61803278688525
0.61803444782168
0.61803381340013
0.61803405572755
0.61803396316671
0.6180339985218
0.61803398501736
0.6180339901756
0.61803398820533
>

测试了从1到20次的迭代操作,发现这个数列其实很快就像0.618收敛了,其实0.618是不准确的,这个数字其实是个无理数

使用特权

评论回复
板凳
leserlee| | 2019-5-15 18:50 | 只看该作者
好!探讨科学

使用特权

评论回复
地板
gaoyang9992006|  楼主 | 2019-5-15 20:00 | 只看该作者


有了计算机编程,以前很多没法完全计算的东西都可以计算出来了,不用凭空猜测了。

使用特权

评论回复
5
swj88ii| | 2020-2-22 19:13 | 只看该作者
> print(a/b)

使用特权

评论回复
发新帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1971

主题

15978

帖子

210

粉丝