2斐波那契数列.docx

上传人:b****5 文档编号:5851235 上传时间:2023-01-01 格式:DOCX 页数:12 大小:210.66KB
下载 相关 举报
2斐波那契数列.docx_第1页
第1页 / 共12页
2斐波那契数列.docx_第2页
第2页 / 共12页
2斐波那契数列.docx_第3页
第3页 / 共12页
2斐波那契数列.docx_第4页
第4页 / 共12页
2斐波那契数列.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

2斐波那契数列.docx

《2斐波那契数列.docx》由会员分享,可在线阅读,更多相关《2斐波那契数列.docx(12页珍藏版)》请在冰豆网上搜索。

2斐波那契数列.docx

2斐波那契数列

实验一斐波那契数列

一、实验目的与要求

1.认识Fibonacci数列,体验发现其通项公式的过程;

2.了解matlab软件中进行数据显示与数据拟合的方式;

3.掌握matlab软件中plot,polyfit等函数的基本用法;

4.提高对数据进行分析与处理的能力。

二、问题描述

某人养了一对兔(公母各一只),一个月后这对兔子生育了一对小兔。

假设小兔一个月后就可以长大成熟,而每对成熟的兔每月都将生育一对小兔,且兔子不会死亡。

问:

一年后共有多少对兔子?

三、问题分析

这个问题,最早由意大利数学家斐波那契(Fibonacci,1170-1240)于1202年在其著作《珠算原理》中提出。

根据问题的假设,兔子的总数目是如下数列:

1,1,2,3,5,8,13,21,34,55,89,144,233,…

问题的答案就是此数列的第12项,即一年后共有144对兔子。

这个数列通常被称为斐波那契(Fibonacci)数列,研究这个问题就是研究Fibonacci数列。

把这个问题作更深入的研究,我们会问:

第n个月后,总共有多少对兔子?

即Fibonacci数列的第n项是多少?

这就需要我们探素Fibonacci数列的通项公式。

根据问题的描述,我们知道第n+2个月后兔子的对数,等于第n+1个月后兔子的对数(表示原来就有的老兔子对数),加上第n个月后兔子的对数(表示生育出来的新兔子对数)。

这样就得到关于Fibonacci数列的一个递推公式:

利用matlab软件的数据可视化功能将这些数据显示成平面曲线的形式后,我们可以观察到Fibonacci数列的变化规律;通过matlab软件的数据拟合功能,我们可以大概知道Fibonacci数列的函数关系式,结合上面的递推公式,就可以推导出来Fibonacci数列的通项公式。

四、背景知识介绍

1.数据的可视化

将离散的数据:

看成平面坐标系里的点:

利用matlab软件的plot函数在平面坐标系里划出一个点列,就可以实现离散数据的可视化。

plot函数的基本使用格式为:

plot(y),其中参数y表示竖坐标,即需要显示的数据。

例1y=1:

20;y=y.^3;plot(y)

2.数据的拟合

数据拟合就是寻找一个目标函数,作为被拟合数据的近似函数关系。

目标函数的类型,可以是多项式、指数函数等。

作数据拟合,首先需要估计目标函数的类型,这一点可以通过数据可视化来观察得到,而一阶多项式是最常见的目标函数,此时称为线性回归。

确定拟合系数的原则是最小二乘法,即所有误差的平方和取最小值。

在matlab软件中以多项式为目标函数作数据拟合的函数是polyfit,它的基本使用格式为:

polyfit(x,y,n)。

其中(x,y)是被拟合的数据,即平面上的一个点列,而n是事先确定的多项式的阶数。

例2x=[1,3,4,5,6,7,8,9,10];y=[10,5,4,2,1,1,2,3,4];p=polyfit(x,y,2)

结果:

调用f=polyval(p,x),可以查看拟合多项式的对应于x的离散数值。

3.数列的通项公式

寻找一个整标函数,使得它在n处的函数值,等于数列的第n项的值,这个函数就是数列的通项公式。

4.黄金分割

把一条线段分割为两部分,使其中一部分与全长之比等于另一部分与这部分之比(如下图)。

其比值是一个无理数

,取其前三位数字的近似值是0.618。

由于按此比例设计的造型十分协调美观,因此称之为黄金分割。

 

五、实验过程

本试验将Fibonacci数列的有限项,看成是待处理的数据。

首先利用matlab软件的可视化功能,将这些数据显示在平面坐标系中,观察其图形类似什么曲线,结论是:

指数函数的曲线。

进一步,利用指数函数与对数函数的互逆关系,将原有数据取对数,再观察其曲线形状是否类似直线,以验证原来的观察是否正确。

通过观察到的目标函数,然后利用matlab软件的数据拟合功能,得到Fibonacci数列通项公式的近似关系。

最后,从近似关系出发,推导出来Fibonacci数列的通项公式。

1.观察数据的大概函数关系

为了研究Fibonacci数列的变化规律,我们取此数列的前30项来观察。

利用Matlab软件的数据可视化功能,将这些数据显示在平面坐标系中,观察其中蕴涵的函数关系。

具体的实现流程为:

(1)定义数组fn;

(2)显示数组fn。

具体的代码如下:

functionplotfibo(n)%定义函数显示Fibonacci数列前n项

fn=[1,1];%将数列的前两项放到数组fn中

fori=3:

n%fn的第3项到第n项

fn=[fn,fn(i-2)+fn(i-1)];%将第i项添加到数组fn中

end%循环结束

plot(fn)%将装有数列前n项的数组显示出来

这个函数的调用方式是:

plotfibo(30),显示出来的图像为图1,经观察,觉得曲线的形状象指数函数的曲线,其数据无限增大。

可以改变参数n的值,反复观察。

 

图1n=30图2n=50

 

图3n=500图4n=1000

2.进一步验证上一步得到的结论

经过上一步的观察,觉得这些数据应该是指数函数的形式。

为了进一步验证这个结论是否正确,可以利用指数函数与对数函数的互逆关系。

如果这些数据确实是指数函数的形式,则经过取对数后应该是一个线性关系,即一阶多项式,从图形上看应该象一条直线。

因此,再利用Matlab软件的数据可视化功能,将这些数据取对数后显示在平面坐标系中,观察它是否象一条直线。

具体的实现流程为:

(1)定义数组fn;

(2)数组fn取对数;(3)显示数组fn。

具体的代码如下:

functionplotlnfibo(n)%显示取对数后的前n项

fn=[1,1];%将数列的前两项放到数组fn中

fori=3:

n%fn的第3项到第n项

fn=[fn,fn(i-2)+fn(i-1)];%将第i项添加到数组fn中

end%循环结束

fn=log(fn);%将原来的数据取对数

plot(fn)%将装有数列前n项的数组显示出来

这个函数的调用方式是:

plotlnfibo(30),显示出来的图像为图5,经观察,觉得它确实象一条直线。

可以改变参数n的值,反复观察。

 

 

图5n=30图6n=50

 

图7n=500图8n=1000

3.获得数据的近似关系式

经过以上第一步的观察,确定Fibonacci数列的数据是指数函数的关系,第二步验证了第一步得到的结论,因此我们认为Fibonacci数列的数据关系就是指数函数,取对数后就是线性函数,即一阶多项式。

利用Matlab软件的数据拟合功能,通过取对数后的数据,用一阶多项式拟合出它的函数关系式,可以得到Fibonacci数列通项公式的一个近似表达式。

具体的实现流程为:

(1)定义数组fn;

(2)数组fn取对数;(3)用一阶多项式拟合数组fn。

具体的代码如下:

functionfitlnfibo(n)%根据取对数后的数据,拟合出线性表达式

fn=[1,1];%将数列的前两项放到数组fn中

fori=3:

n%fn的第3项到第n项

fn=[fn,fn(i-2)+fn(i-1)];%将第i项添加到数组fn中

end%循环结束

xn=1:

n;%定义横坐标

fn=log(fn);%将原来的数据取对数

polyfit(xn,fn,1)%拟合装有数列前n项的数组

这个函数的调用方式是:

fitlnfibo(30),运行后返回结果是:

0.4799,-0.7768。

这两个数据就是一阶多项式的系数,即:

为了提高精度,可以加大n的值。

取n=1000时得到:

从上面的表达式,可以得到数列通项公式的近似:

4.观察拟合数据与原始数据的吻合程度

经过第三步的拟合,得到了Fibonacci数列近似的通项公式,为了观察其吻合程度,我们将Fibonacci数列的拟合数据与原始数据的图形显示出来,进行对比观察。

具体的实现流程为:

(1)定义数组fn1,fn2;

(2)显示数组fn1,fn2。

具体的代码如下:

functionplotfibo2(n)%显示拟合数据与原始数据的前n项

fn1=[];%装拟合数据的数组

fori=1:

n%fn1的第1项到第n项

fn1=[fn1,0.4476*1.618^i];%将第i项添加到数组fn1中

end

fn2=[1,1];%装原始数据的数组,前两项放到数组fn2中

fori=3:

n%fn2的第3项到第n项

fn2=[fn2,fn2(i-2)+fn2(i-1)];%将第i项添加到数组fn2中

end

x=1:

n;

plot(x,fn1,x,fn2,'r*')%显示,fn1―兰线,fn2-红星

这个函数的调用方式是:

fitlnfibo2(20),显示出来的图像为图9,或fitlnfibo2(50),显示出来的图像为图10。

 

图9n=20图10n=50

5.猜测Fibonacci数列的通项公式

通过以上的观察和分析,我们知道Fibonacci数列的数据大概是指数函数的关系。

因此,我们猜测它的通项公式具有形式:

将这个表达式代入递推公式

中,得到:

经过简化得到:

这是一个一元二次的代数方程,其两个根形式如下:

考虑到Fibonacci数列的数据无限增大,我们取

,于是得到通项公式如下:

上面的公式对吗?

我们可以来验证。

取n=1和n=2代入上面的公式中计算,显然得不到

,因此它不是Fibonacci数列的通项公式。

但这个公式并非一无是处,我们可以来考虑这个公式与Fibonacci数列到底相差多少。

因此,我们引入以下一个数列:

可以验证,这个新的数列也满足同样的递推公式:

,因此我们猜测它同样是指数函数的形式,可以假设其表达式为:

,代入递推公式后,同样可以得到:

这里的r显然不同于上面的r,故这个r取值为:

,从而得到:

故有:

由条件

确定其中的常数,得到:

可以验证,它确实就是Fibonacci数列的通项公式。

这个公式是法国数学家比内(Binet)在1843年发现的,称为比内公式。

6.推导Fibonacci数列的通项公式

Fibonacci数列具有如下递推关系:

这个等式实际上是一个二阶常系数线性齐次差分方程,可以仿照二阶常系数线性齐次微分方程来求解。

首先由递推等式得到如下特征方程:

这是一个一元二次的代数方程,其两个根形式如下:

因此,我们得到差分方程的通解如下:

取n=1和n=2代入上面的公式中,解得:

从而得到:

六、结论与应用

1.Fibonacci数列的阶

通过以上实验过程,我们得到了Fibonacci数列的通项公式,它类似一个指数函数,当n无限增大时,其数据也无限增大,变化的阶是:

在Fibonacci数列的通项公式中,出现了

等无理数,而它们运算以后的结果确是正整数,多么奇妙啊!

2.Fibonacci数列与黄金分割数的关系

上面的两个无理数之间,存在着这样的关系:

就是著名的黄金分割数。

因此,Fibonacci数列的通项公式又可以写成如下形式:

可以验证,Fibonacci数列与黄金分割数之间还有如下的关系:

 

(怎么证明上式?

3.Fibonacci数列通项公式的其它形式

Fibonacci数列的通项公式还有其它形式,比如:

 

4.自然界中的Fibonacci数列

Fibonacci数列与自然界中的许多现象有着紧密的联系。

例如,树木的生长,由于新生的枝条,往往需要一段“休息”时间,供自身生长,而后才能萌发新枝。

所以,一株树苗在一段间隔,例如一年,以后长出一条新枝;第二年新枝“休息”,老枝依旧萌发;此后,老枝与“休息”过一年的枝同时萌发,当年生的新枝则次年“休息”。

这样,一株树木各个年份的枝桠数,便构成斐波那契数列。

这个规律,就是生物学上著名的“鲁德维格定律”。

又如植物的分枝生长、向日葵种子的排列、花瓣的数量、晶体的结构等都是Fibonacci数列。

 

花瓣的数量,一般都是Fibonacci数

 

以斐波那契螺旋方式的排列

如果顺时针与逆时针螺旋的数目,是斐波那契数列中相邻的2项,可称其为斐波那契螺旋,也被称作黄金螺旋。

这样的布局能使植物的生长疏密得当、最充分地利用阳光和空气。

5.应用

Fibonacci数列在纯粹数学、运筹优化、计算机科学等领域具有重大的应用价值,在现代物理、准晶体结构、化学等领域有直接的应用。

本实验研究的是Fibonacci数列的变化规律,而数列本质上就是一些数据。

因此,对于一般的数据(比如:

从调查中获得的数据、从试验中获得的数据),我们也可以参照这样的方式,来分析其中蕴涵的规律。

利用Matlab软件的数据可视化功能和数据拟合功能,可以极大地方便我们进行数据处理分析。

七、练习

1.讨论数列

的变化规律。

(1)在平面坐标系中画出数列变化的折线图;

(2)观察图形,你认为数列的极限是什么;

(3)观察图形,寻找恰当的函数去拟合这个数列;

2.讨论调和级数的变化规律。

(1)画出部分和数列变化的折线图,观察变化规律;

(2)引入数列:

,作图观察其变化,猜测是否有极限;

(3)引入数列:

,作图观察其变化,寻找恰当的函数拟合;

(4)调和级数的部分和数列的变化规律是什么?

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1