提供一道有兴趣的数学题供各路神仙研究

1个回答

  • 即斐波那契数列,“斐波那契数列”的发明者,是意大利数学家列昂纳多·斐波那契(Leonardo Fibonacci,生于公元1170年,卒于1240年.籍贯大概是比萨).他被人称作“比萨的列昂纳多”.1202年,他撰写了《珠算原理》(Liber Abaci)一书.他是第一个研究了印度和阿拉伯数学理论的欧洲人.他的父亲被比萨的一家商业团体聘任为外交领事,派驻地点相当于今日的阿尔及利亚地区,列昂纳多因此得以在一个阿拉伯老师的指导下研究数学.他还曾在埃及、叙利亚、希腊、西西里和普罗旺斯研究数学.

    斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21……

    这个数列从第三项开始,每一项都等于前两项之和.它的通项公式为:(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}【√5表示根号5】

    很有趣的是:这样一个完全是自然数的数列,通项公式居然是用无理数来表达的.

    【该数列有很多奇妙的属性】

    比如:随着数列项数的增加,前一项与后一项之比越逼近黄金分割0.6180339887……

    还有一项性质,从第二项开始,每个奇数项的平方都比前后两项之积多1,每个偶数项的平方都比前后两项之积少1.

    如果你看到有这样一个题目:某人把一个8*8的方格切成四块,拼成一个5*13的长方形,故作惊讶地问你:为什么64=65?其实就是利用了斐波那契数列的这个性质:5、8、13正是数列中相邻的三项,事实上前后两块的面积确实差1,只不过后面那个图中有一条细长的狭缝,一般人不容易注意到.

    如果任意挑两个数为起始,比如5、-2.4,然后两项两项地相加下去,形成5、-2.4、2.6、0.2、2.8、3、5.8、8.8、14.6……等,你将发现随着数列的发展,前后两项之比也越来越逼近黄金分割,且某一项的平方与前后两项之积的差值也交替相差某个值.

    斐波那契数列的第n项同时也代表了集合{1,2,...,n}中所有不包含相邻正整数的子集个数.

    【斐波那契数列别名】

    斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”.

    斐波那契数列

    一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来.如果所有兔都不死,那么一年以后可以繁殖多少对兔子?

    我们不妨拿新出生的一对小兔子分析一下:

    第一个月小兔子没有繁殖能力,所以还是一对;

    两个月后,生下一对小兔民数共有两对;

    三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对;

    ------

    依次类推可以列出下表:

    经过月数:0123456789101112

    兔子对数:1123581321345589144233

    表中数字1,1,2,3,5,8---构成了一个数列.这个数列有关十分明显的特点,那是:前面相邻两项之和,构成了后一项.

    这个数列是意大利中世纪数学家斐波那契在<算盘全书>中提出的,这个级数的通项公式,除了具有a(n+2)=an+a(n+1)/的性质外,还可以证明通项公式为:an=1/√[(1+√5/2) n-(1-√5/2) n](n=1,2,3.)

    【斐波那挈数列通项公式的推导】

    斐波那契数列:1,1,2,3,5,8,13,21……

    如果设F(n)为该数列的第n项(n∈N+).那么这句话可以写成如下形式:

    F(1)=F(2)=1,F(n)=F(n-1)+F(n-2) (n≥3)

    显然这是一个线性递推数列.

    通项公式的推导方法一:利用特征方程

    线性递推数列的特征方程为:

    X^2=X+1

    解得

    X1=(1+√5)/2,X2=(1-√5)/2.

    则F(n)=C1*X1^n + C2*X2^n

    ∵F(1)=F(2)=1

    ∴C1*X1 + C2*X2

    C1*X1^2 + C2*X2^2

    解得C1=1/√5,C2=-1/√5

    ∴F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}【√5表示根号5】

    通项公式的推导方法二:普通方法

    设常数r,s

    使得F(n)-r*F(n-1)=s*[F(n-1)-r*F(n-2)]

    则r+s=1,-rs=1

    n≥3时,有

    F(n)-r*F(n-1)=s*[F(n-1)-r*F(n-2)]

    F(n-1)-r*F(n-2)=s*[F(n-2)-r*F(n-3)]

    F(n-2)-r*F(n-3)=s*[F(n-3)-r*F(n-4)]

    ……

    F(3)-r*F(2)=s*[F(2)-r*F(1)]

    将以上n-2个式子相乘,得:

    F(n)-r*F(n-1)=[s^(n-2)]*[F(2)-r*F(1)]

    ∵s=1-r,F(1)=F(2)=1

    上式可化简得:

    F(n)=s^(n-1)+r*F(n-1)

    那么:

    F(n)=s^(n-1)+r*F(n-1)

    = s^(n-1) + r*s^(n-2) + r^2*F(n-2)

    = s^(n-1) + r*s^(n-2) + r^2*s^(n-3) + r^3*F(n-3)

    ……

    = s^(n-1) + r*s^(n-2) + r^2*s^(n-3) +……+ r^(n-2)*s + r^(n-1)*F(1)

    = s^(n-1) + r*s^(n-2) + r^2*s^(n-3) +……+ r^(n-2)*s + r^(n-1)

    (这是一个以s^(n-1)为首项、以r^(n-1)为末项、r/s为公差的等比数列的各项的和)

    =[s^(n-1)-r^(n-1)*r/s]/(1-r/s)

    =(s^n - r^n)/(s-r)

    r+s=1,-rs=1的一解为 s=(1+√5)/2,r=(1-√5)/2

    则F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}

    【C语言程序】

    main()

    {

    long fib[40] = {1,1};

    int i;

    for(i=2;i