10.特徵值和特徵向量和對角矩陣
本文的主要內容:特徵向量和特徵值的含義,特徵向量和基向量和對角矩陣的關聯,對角矩陣的計算意義.
1.什麼是特徵向量和特徵值
經過線性變換後,大多數向量脫離了其本身的張成空間.不脫離本身張成空間的向量稱之為特徵向量,其數乘(縮放)的倍數稱之為特徵值(可以是負數).
對於[[3,1],[0,2]]變換矩陣,[-1,1]為特徵值為2的特徵向量,[1,0]為特徵值為3的特徵向量.
2.特徵向量的幾何意義
例如我們將一個3維立體繞著某個軸進行旋轉,這時候通過3*3的變換矩陣去描述會顯得很複雜(複雜的原因是我們只能通過坐標系去描述).
但是如果找到這個軸,並描述旋轉的方式,就會顯得很簡單,特徵值為1的特徵向量的張成的一個向量就是旋轉軸.
3.計算特徵值和特徵向量的計算方式
在矩陣乘法中可以看做一個矩陣:
移項後可得 .其中 不能是零向量,因為0向量總會是0向量,沒有求解的意義.
由於式子的左邊等於零向量,所以可以認為降秩了,因此行列式 det( ) = 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.基向量和特徵向量和對角矩陣
當基向量和都是特徵向量時,變換矩陣形式為對角矩陣:
顯然L( )=x ,L( )=y ,特徵值為x和y.
因此,對於對角矩陣的一種解釋方式就是:線性變換的過程中,所有 和 (坐標軸)直線上的向量都是特徵向量.
5.特徵向量的計算意義
我們知道A=[[3,1],[0,2]]的特徵值是3和2,特徵向量分別為[1,0]和[-1,1],那麼在以特徵向量作為基向量的坐標軸中,因為特徵值(數乘倍數)為3和2.
其含義為,當基向量為[1,0]和[-1,1]時,進行A=[[3,1],[0,2]]變換的時候.
其向量會由:
根據基變換(見09.基變換5.通過其他基表達 和 上的線性變換),所以可以得到如下公式:
如果A=[[3,1],[0,2]],我們要求的A的連續10次矩陣乘法(AAAAAAAAAA),這個很難手動算,但是如果轉換為特徵向量的計算就很簡單.
我們知道:
同樣:
推導為:
由於對角矩陣自乘計算比較簡單,就很容易算出AAAAAAAAAA的值.
本文參考3Blue1Brown視頻教程<線性代數的本質>而寫,配上python代碼,並進行一些修訂.
下一節內容的鏈接為:
推薦閱讀: