1. 程式人生 > >特徵值和奇異值分解(SVD)

特徵值和奇異值分解(SVD)

特徵值分解和奇異值分解兩者有著很緊密的關係,兩者的目的都是為了提取矩陣最重要的特徵。本節先解釋特徵值分解。先用一個例項來說明特徵值和特徵向量的起因和實際意義,然後給出定義,計算方法,python程式碼以及其他解釋。

特徵值分解

例項

某城市有10000名女性,其中8000名已婚,2000名未婚。每年有30%的已婚女性離婚,有20%的未婚女性結婚。計算若干年後該城市已婚女性和未婚女性的數量。

10000名女性可以用一個向量來表示,即w0=[8000,2000]T,每年的婚姻情況變化可以用矩陣來表示。

A=[0.70.20.30.8]
這樣,一年後已婚人數和未婚人數可以表示為
w1=Aw0=[0.70.20.30.8][80002000]=[60004000]
一直這麼變化下去,從第12年開始已婚未婚人數就穩定下來,到達一個穩態(steady state)。
w12=A12w0=[0.70.20.30.8]12[80002000]=[0.40.40.60.6][80002000]=[40006000]
這裡會提出一個疑問,如果一開始已婚和未婚人數不是w0=[8000,2000]T,結果還會是w12=[4000,6000]T嗎?從上式可以看出,只要An收斂到等式中的值,不管初值是多少,結果總會是
[4000,6000]T
。如果我們把初值就設定為向量[4000,6000]T,那麼結果也會是[4000,6000]T。根據這一點我們可以得到以下等式,設定向量 x1=[2,3]TAx1=A[23]=1[23]

接下來看另一個等式,設定向量x2=[1,1]T