2.4矩陣的特征值與特征向量
矩陣特征值的數學定義
求矩陣的特征值與特征向量
特征值的幾何意義
1.矩陣特征值的數學定義
設A是n階方陣,如果存在常數λ和n維非零列向量x,使得等式Ax=λx成立,則稱λ為A的特征值,x是對應特征值λ的特征向量。
2.求矩陣的特征值與特征向量
在MATLAB中,計算矩陣的特征值和特征向量的函數是eig,常用的調用格式
有兩種:
E=eig(A):求矩陣A的全部特征值,構成向量E。
[X,D]=eig(A):求矩陣A的全部特征值,構成對角陣D,並產生矩陣X,X
各列是相應的特征向量。
>> A=[1,1,0;1,0,5;1,10,2]
A = 1 1 0
1 0 5
1 10 2
X = //特征向量矩陣x
0.0722 0.9751 0.0886
0.5234 -0.0750 -0.6356
0.8490 -0.2089 0.7669
D = //對角陣
8.2493 0 0
0 0.9231 0
0 0 -6.1723
0.9231對應的特征向量為x的第二列。
驗證:A乘以特征向量等於特征值乘於特征向量
>> A*X(:,1) //X矩陣的第一列
ans = 0.5956
4.3174
7.0040
>> D(1)*X(:,1)
ans = 0.5956
4.3174
7.0040
例1 設
又設𝝀𝒊為R的特征值,𝝀𝒋為S的特征值,𝒙𝐢 = 𝜶𝟏,𝜶𝟐,𝜶𝟑 ′是R對應於𝝀𝒊的特征 向量,𝒚𝐣 = 𝜷𝟏,𝜷𝟐 ′是S對應於𝝀𝒋的特征向量,試驗證:
(1)𝝀𝒊、𝝀𝒋為A的特征值。
(2)𝐩𝐢 = 𝜶𝟏,𝜶𝟐,𝜶𝟑,𝟎,𝟎 ′是A對應於𝝀𝒊的特征向量,𝒒𝐣 = 𝟎,𝟎,𝟎,𝜷𝟏,𝜷𝟐 ′是 A對應於𝝀𝒋的特征向量。
R=[-1,2,0;2,-4,1;1,1,-6];
S=[1,2;2,3];
A=[R,zeros(3,2);zeros(2,3),S];
[X1,d1]=eig(R)
[X2,d2]=eig(S)
[X3,d3]=eig(A)
A矩陣的特征值由R矩陣的特征值和S矩陣的特征值組成,關於A矩陣每個特征 值的特征向量,前三個特征向量的前三個元素是R的特征向量,后兩個特征向 量的后兩個元素是S的特征向量,運算結果與結論相符。
3.特征值的幾何意義
y1、y2是x1、x2經過矩陣A變換以后的結 果,A相當於一個變換矩陣。把λ1、λ2 當作伸縮因子,y1、y2是x1、x2經過λ1、 λ2伸縮以后的結果,如圖所示。黑色部 分代表向量x1和x2,紅色部分代表對x1 和x2進行拉伸的結果。
更進一步,連續取單位向量x,讓它大小保持為1,那么Ax就將四分之一圓弧進行拉伸,變成四分之一橢圓。
MATLAB提供了一個eigshow命令,可以演示向量x和Ax之間的關系。用鼠標拖動綠色的 單位向量x繞原點轉動,圖中同步出現藍色的Ax向量。Ax的大小在變化,方向也在變化,而且Ax的方向與x不一定相同。在變化過程中,x與Ax共線的位置稱為特征方向。 在特征方向上有Ax等於λx。
例2 已知大寫字母M的各個結點坐標如表所示(第一行代表橫坐標,第二行代表縱坐標)。
(1)繪制M的圖形。
(2)設用A對M的結點坐標進行變換,並繪制變換后的圖形。
x=[0,0.5,0.5,3,5.5,5.5,6,6,3,0;0,0,6,0,6,0,0,8,1,8];
A=[1,0.5;0,1];
y=A*x;
subplot(2,2,1); %選擇1號子圖,詳見專題四
fill(x(1,:),x(2,:),'r'); %繪制M的圖形,並用紅色(red)填充
subplot(2,2,2); %選擇2號子圖
fill(y(1,:),y(2,:),'r'); %繪制變換后的M圖形,並用紅色填充
定義變換矩陣A,再利用A對x進行變換,得到y矩陣,最后分別繪制變換前后的圖形,M原來是正體,變換后改為斜體。
啟示:在構建字庫時,不必單獨創建斜體字庫,而只需對正體字庫進行適當的線性變換即可,這樣可以大大節省存儲空間。
2.5稀疏矩陣——0元素的個數遠遠多於非0元素的個數的矩陣
矩陣的存儲方式
稀疏存儲方式的產生
稀疏矩陣的應用實例
1.矩陣的存儲方式
完全存儲方式:將矩陣的全部元素按列存儲。
稀疏存儲方式:只存儲矩陣的非零元素的值及其位置,即行號和列號。
注意,采用稀疏存儲方式時,矩陣元素的存儲順序並沒有改變,也是按列的順序進行存儲。
A矩陣的稀疏存儲方式:
(1,1),1
(3,1),2
(2,2),5
(3,4),7
當矩陣的規模很大時,采用稀疏存儲方式可以大大節約存儲空間。
2.稀疏存儲方式的產生
(1)完全存儲方式與稀疏存儲方式之間的轉化
A=sparse(S):將矩陣S轉化為稀疏存儲方式的矩陣A。
S=full(A):將矩陣A轉化為完全存儲方式的矩陣S。
>> A=sparse(eye(5))
A = (1,1) 1
(2,2) 1
(3,3) 1
(4,4) 1
(5,5) 1
>> B=full(A)
B = 1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
>> whos //查詢存儲空間
Name Size Bytes Class Attributes
A 5x5 128 double sparse
B 5x5 200 double
(2)直接建立稀疏存儲矩陣
sparse函數的其他調用格式:
sparse(m,n):生成一個m×n的所有元素都是零的稀疏矩陣。
sparse(u,v,S):其中u、v、S是3個等長的向量。S是要建立的稀疏存儲矩陣的非零元素,u(i)、v(i)分別是S(i)的行和列下標。
>> A=sparse([1,2,2],[2,1,4],[4,5,-7])
A = (2,1) 5
(1,2) 4
(2,4) -7
>> B=full(A)
B = 0 4 0 0
5 0 0 -7
使用spconvert函數直接建立稀疏存儲矩陣,其調用格式為:B=spconvert(A),其中,A為一個m×3或m×4的矩陣,其每行表示一個非零元素,m是非零元素的個數。
A(i,1)表示第i個非零元素所在的行。 A的第一列為行
A(i,2)表示 第i個非零元素所在的列。 A的第二列為列
A(i,3)表示第i個非零元素值的實部。 A的第三列元素為非0元素的值
A(i,4)表示第i個非零元素值的虛部。
若矩陣的全部元素都是實數,則無須第4列。
>> A=[2,2,1;2,1,-1;2,4,3] //3個非0元素
A = 2 2 1
2 1 -1
2 4 3
>> B=spconvert(A)
B = (2,1) -1
(2,2) 1
(2,4) 3
(3)帶狀稀疏矩陣的稀疏存儲
稀疏矩陣有兩種基本類型:無規則結構的稀疏矩陣與有規則結構的稀疏矩陣。
帶狀稀疏矩陣就是一種十分典型的具有規則結構的稀疏矩陣,它是指所有非零元素集中在對角線上的矩陣。
[B,d]=spdiags(A):從帶狀稀疏矩陣A中提取全部非零對角線元素賦給矩陣B及其這些非零對角線的位置向量d。
A=spdiags(B,d,m,n):產生帶狀稀疏矩陣的稀疏存儲矩陣A,其中m、n為原帶狀稀疏矩陣的行數與列數,矩陣B的第i列即為原帶狀稀疏矩陣的第i條非零對角線,向量d為原帶狀稀疏矩陣所有非零對角線的位置。
>> A =[11,0,0,12,0,0;0,21,0,0,22,0;0,0,31,0,0,32;41,0,0,42,0,0;0,51,0,0,52,0]
A = 11 0 0 12 0 0
0 21 0 0 22 0
0 0 31 0 0 32
41 0 0 42 0 0
0 51 0 0 52 0
>> [B,d]=spdiags(A)
B = 0 11 12
0 21 22
0 31 32
41 42 0
51 52 0
d =
-3
0
3
利用帶狀稀疏矩陣非零對角線元素組成的矩陣B,以及對角線位置組成的向量d,命令執行后產生一個稀疏存儲矩陣A。
>> A=spdiags(B,d,5,6)
A =
(1,1) 11
(4,1) 41
(2,2) 21
(5,2) 51
(3,3) 31
(1,4) 12
(4,4) 42
(2,5) 22
(5,5) 52
(3,6) 32
總 結:用spdiags函數產生帶狀稀疏矩陣的稀疏存儲A:A=spdiags(B,d,m,n)
其中,m、n為原帶狀矩陣的行數與列數。B為r×p矩陣,這里r=min(m,n),p為 原帶狀矩陣所有非零對角線的條數,矩陣B的第i列即為原帶狀矩陣的第i條非零 對角線。取值方法是:若非零對角線上元素個數等於r,則取全部元素;若非零 對角線上元素個數小於r,則應該用零補足到r個元素。補零的原則是:若m<n (行數<列數),則d<0時(主對角線以下)在前面補0,d>0時(主對角線以上) 在后面補0;當m≥n(行數≥列數),則d<0時在后面補0;d>0時在前面補0。
(4)單位矩陣的稀疏存儲
speye(m,n)返回一個m×n的稀疏存儲單位矩陣。
>> speye(3)
ans =
(1,1) 1
(2,2) 1
(3,3) 1
3.稀疏矩陣應用舉例
求下列三對角線性方程組的解。
>> kf1=[1;1;2;1;0];
>> k0=[2;4;6;6;1]; //主對角線
>> k1=[0;3;1;4;2]; //主對角線以上第一條
>> B=[kf1,k0,k1];
>> d=[-1;0;1]; //非0角線位置組成的向量d
>> A=spdiags(B,d,5,5);
>> f=[0;3;2;1;5]; //建立方程右邊的常數向量
>> x=A\f //左除求方程的解
x =
-0.1667
0.1111
2.7222
-3.6111
8.6111
TIP:當參與運算的數據對象不全是稀疏存儲矩陣時,所得結果是完全儲存形式。