1. 程式人生 > >使用線性代數求解斐波那契數列第n項

使用線性代數求解斐波那契數列第n項

一:問題

已知斐波那契數列,f1=1,f2=1,f3=3,f4=5...求第n項的數值

二:問題轉化為線性代數問題

可以得到方程

f(n+2)=f(n+1)+f(n)

為了解決問題,新增方程

f(n+1)=f(n+1)

記向量u_{n}=\begin{pmatrix} f_{n+1}\\ f_{n} \end{pmatrix},則上兩式可以寫作

u_{n+1}=\begin{bmatrix} 1 & 1\\ 1& 0 \end{bmatrix}u_{n}

要求f_{n},只需知道u_{n},例如,要求n=100時的數值

u_{100}=\begin{bmatrix} 1 & 1\\ 1& 0 \end{bmatrix}^{99}u_{1}

三:將矩陣相似對角化

可以得到矩陣的兩個特徵值為\lambda _{1}=(1+\sqrt{5})/2\lambda _{2}=(1-\sqrt{5})/2,對應的變化矩陣為A,則

u_{100}=A^{-1}\begin{bmatrix} (1+\sqrt{5})/2& 0\\ 0 & (1-\sqrt{5})/2 \end{bmatrix}Au_{1}

u_{1}=\begin{bmatrix} 1\\ 1 \end{bmatrix},代入可得