10.特徵值和特徵向量和對角矩陣

本文的主要內容:特徵向量和特徵值的含義,特徵向量和基向量和對角矩陣的關聯,對角矩陣的計算意義.

1.什麼是特徵向量和特徵值

經過線性變換後,大多數向量脫離了其本身的張成空間.不脫離本身張成空間的向量稱之為特徵向量,其數乘(縮放)的倍數稱之為特徵值(可以是負數).

對於[[3,1],[0,2]]變換矩陣,[-1,1]為特徵值為2的特徵向量,[1,0]為特徵值為3的特徵向量.

2.特徵向量的幾何意義

例如我們將一個3維立體繞著某個軸進行旋轉,這時候通過3*3的變換矩陣去描述會顯得很複雜(複雜的原因是我們只能通過坐標系去描述).

但是如果找到這個軸,並描述旋轉的方式,就會顯得很簡單,特徵值為1的特徵向量的張成的一個向量就是旋轉軸.

3.計算特徵值和特徵向量的計算方式

lambda 在矩陣乘法中可以看做一個矩陣:

egin {bmatrix} lambda &0 & 0\ 0 &lambda & 0\ 0&0 & lambda\ end {bmatrix}= lambda egin {bmatrix} 1 &0 & 0\ 0 &1 & 0\ 0&0 & 1\ end {bmatrix}= lambda I

移項後可得 (A-lambda I )vec v = vec 0 .其中 vec v 不能是零向量,因為0向量總會是0向量,沒有求解的意義.

由於式子的左邊等於零向量,所以可以認為降秩了,因此行列式 det( A-lambda I ) = 0.

例如假設A=[[3,1],[0,2]],求特徵值和特徵向量.

import sympy as sp l = sp.symbols("l") #根據行列式為0,通過sympy推導特徵值 M1=sp.Matrix([[3-l, 1], [0, 2-l]])  det_M1 = sp.det(M1)#det(A-lambda I) = 0 #solve用於解方程, #根據行列式為0,2*2矩陣解出來是一元二次方程,可能有0~2個解,代表存在0~2個特徵值 ans = sp.solve([det_M1],[l]) # det_M1 = (-l + 2)*(-l + 3),ans特徵值 = [(2,), (3,)] #根據(A-lambda I)v = 零向量,v不是零向量,設v=[[x],[y]] #帶入第一個解 M1.subs([[l,ans[0][0]]]) #Matrix([[1, 1],[0, 0]]) # x+y=0 # 0x+0y=0 #可知,y=-x直線上的向量為特徵向量 #根據(A-lambda I)v = 零向量,v不是零向量,設v=[[x],[y]] #帶入第二個解 M1.subs([[l,ans[1][0]]]) #Matrix([[0, 1],[0, -1]]) # 0x+y=0 # 0x-y=0 #可知,y=0直線上的向量為特徵向量 #試著用numpy求特徵向量和特徵值 import numpy as np from numpy import linalg as LA w, v = LA.eig(np.array([[3, 1], [0, 2]])) print (w,v) #特徵值:[3. 2.] #特徵向量:[[ 1.,-0.70710678] [ 0,0.70710678]] #注意應該當做[1,0]和[-0.70710678,0.70710678]來看

注意不是所有矩陣都有特徵向量,例如對於旋轉90°的2*2變換矩陣.

但有特徵值就一定有特徵向量,且特徵向量個數>=特徵值個數.例如對於[[1,0],[1,0]]變換,特徵值為1,就有無數個特徵向量.

4.對角矩陣

就是只有從左上到右下的直線上的數字不為0的矩陣.

等價於:

4.基向量和特徵向量和對角矩陣

當基向量和都是特徵向量時,變換矩陣形式為對角矩陣:

egin {bmatrix} x &0\ 0& y \ end {bmatrix}

顯然L( vec i )=x vec i ,L( vec j )=y vec j ,特徵值為x和y.

因此,對於對角矩陣的一種解釋方式就是:線性變換的過程中,所有 vec ivec j (坐標軸)直線上的向量都是特徵向量.

5.特徵向量的計算意義

我們知道A=[[3,1],[0,2]]的特徵值是3和2,特徵向量分別為[1,0]和[-1,1],那麼在以特徵向量作為基向量的坐標軸中,因為特徵值(數乘倍數)為3和2.

其含義為,當基向量為[1,0]和[-1,1]時,進行A=[[3,1],[0,2]]變換的時候.

其向量會由:

egin {bmatrix} 1 &0\ 0& 1 \ end {bmatrix}轉換為 egin {bmatrix} 特徵值1 &0\ 0& 特徵值2 \ end {bmatrix}= egin {bmatrix} 3 &0\ 0& 2 \ end {bmatrix}

根據基變換(見09.基變換5.通過其他基表達vec i vec j 上的線性變換),所以可以得到如下公式:

egin {bmatrix} 1 &-1\ 0& 1 \ end {bmatrix}^{-1} egin {bmatrix} 3 &1\ 0& 2 \ end {bmatrix} egin {bmatrix} 1 &-1\ 0& 1 \ end {bmatrix}= egin {bmatrix} 3 &0\ 0& 2 \ end {bmatrix}

如果A=[[3,1],[0,2]],我們要求的A的連續10次矩陣乘法(AAAAAAAAAA),這個很難手動算,但是如果轉換為特徵向量的計算就很簡單.

我們知道:

egin {bmatrix} 1 &-1\ 0& 1 \ end {bmatrix}^{-1} egin {bmatrix} 3 &1\ 0& 2 \ end {bmatrix} egin {bmatrix} 1 &-1\ 0& 1 \ end {bmatrix}= egin {bmatrix} 3 &0\ 0& 2 \ end {bmatrix}

同樣:

egin {bmatrix} 1 &-1\ 0& 1 \ end {bmatrix}^{-1} egin {bmatrix} 3 &1\ 0& 2 \ end {bmatrix} ...自乘10次...egin {bmatrix} 3 &1\ 0& 2 \ end {bmatrix} egin {bmatrix} 1 &-1\ 0& 1 \ end {bmatrix}= egin {bmatrix} 3 &0\ 0& 2 \ end {bmatrix}...自乘10次... egin {bmatrix} 3 &0\ 0& 2 \ end {bmatrix}

推導為:

egin {bmatrix} 3 &1\ 0& 2 \ end {bmatrix} ...自乘10次...egin {bmatrix} 3 &1\ 0& 2 \ end {bmatrix} = egin {bmatrix} 1 &-1\ 0& 1 \ end {bmatrix} egin {bmatrix} 3 &0\ 0& 2 \ end {bmatrix}...自乘10次... egin {bmatrix} 3 &0\ 0& 2 \ end {bmatrix}egin {bmatrix} 1 &-1\ 0& 1 \ end {bmatrix}^{-1}

由於對角矩陣自乘計算比較簡單,就很容易算出AAAAAAAAAA的值.

本文參考3Blue1Brown視頻教程<線性代數的本質>而寫,配上python代碼,並進行一些修訂.

下一節內容的鏈接為:


推薦閱讀:

將線性代數形象化 總結篇
線性代數筆記 1 - 矩陣的理解
求解零空間的思考

TAG:線性代數 | Python | 可視化 |