特征值与特征向量的应用

科学   2021-04-04 21:55  

今天我们要“手算”斐波那契数列的任意位置的数字是什么,就是算出它的表达式,利用的方法是矩阵对角化。当然,虽然可以手算,因为涉及的只是2阶矩阵,但为了简便,还是利用程序求解。


首先,一个n阶矩阵可以对角化的前提是有n个线性无关的特征向量。假设A矩阵可对角化,即

其中各项的意义学过线性代数的都知道,不在此赘述。


现有一递归函数为

其中V代表一向量,上式也就是如下意思

在继续进行之前,首先明白一件事,那就是V0可以表示为A的各特征向量的线性组合。因为A是n阶方阵,并且A有n个线性无关的特征向量,所以对于SC=V0这个线性方程组,S矩阵的秩为n,并且S为方阵,所以对于任意V0,该方程组都有且只有唯一解,换句话说,任意V0都能表示为A的特征向量的线性组合。


联立以下各式

可得

对于斐波那契数列,序列中的一个数为前两个数之和,即0,1,1,2,3,5,8,,,,,,

我们设第k个数字是Nk,很容易看出,斐波那契数列满足下列等式

接下来要做的只有两件事,1,解出A的特征值和特征向量,2,将V0用A的特征向量线性表示出来,然后就能根据之前推出的公式写出斐波那契数列的表达式了,接下来的几步交给程序去做。

a=2;                      %要计算的范围b=10;
A=[1,1;1,0];[S,D]=eig(A); %求A的特征值对角阵D和特征向量矩阵SC=S\[1;0]; %求SC=V0的C矩阵myF=ones(size(a:b)); %初始化一个适当大小的全一矩阵,用于存储for i=a:b Vk=S*(D^i)*C; %用推出的公式算出需要范围的斐波那契数,并存入myF矩阵 myF(i-(a-1))=Vk(2);endplot([a:b],myF); %画出图像


以下为计算的结果


可以看出这就是正确的斐波那契数列

你可能觉得这个方法一般,这些数口算也能算,那要是算第100个数、第10000个数呢,对这个程序只需改改数值就行了。


我们用tic toc来测试一下算到第100个数,和第10000个数的用时。


首先是100个数


然后是10000个数



计算10000个数比100个数只是多用了0.02878,秒,但如果口算呢???


最后,我们还可以用斐波那契数列得出黄金比例。如下

黄金比例是斐波那契数列的后一个数比前一个数。我们用刚刚算出来的10000个数求一下黄金比例

mysize=size(myF);G=ones(size(1,mysize(2)-1));for i=1:(mysize(2)-1)    G(i)=myF(i+1)/myF(i);      %代入公式endplot(G);


以下为结果


可以看出,越往后越趋于黄金比例,图像如下


其实用不了10000个数,后边就已经是一条直线了。


1.618,记住,这是我们亲自算出来的噢!


以上这种计算递归函数的方法是我看网课学到的,MIT线性代数,有兴趣也可以看看。

地球远征军
普通一本毕业的物理大学生,在普通一本继续读物理研究生,当个普通人的同时多多思考宇宙。记录学习物理之路上的有趣见闻,一起保持住刚学习物理时的惊喜感和好奇心,希望有生之年看到人类遨游宇宙,走向星空。
 最新文章