Nếu tồn tại một số và một vector x0 sao cho Ax=x thì được gọi là trị riêng của ma trận A và x được gọi là vectơ riêng của A ứng với trị riêng .. Trong các bài toán tìm trị riêng v
Trang 1Chương 4 TÍNH TRỊ RIÊNG VÀ VECTOR RIÊNG CỦA MA TRẬN
4.1 MỞ ĐẦU
Cho một ma trận vuông cấp n Nếu tồn tại một số và một vector x0 sao cho Ax=x thì được gọi là trị riêng của ma trận A và x được gọi là vectơ riêng của A ứng với trị riêng
Có nhiều bài toán ứng dụng trong cơ học và vật lí được qui dẫn về việc tìm trị riêng và vector riêng của ma trận Trong các bài toán tìm trị riêng và vectơ riêng của ma trận người ta chia ra làm 2 loại:
- Bài toán nhỏ: tìm các trị riêng có modul lớn nhất và nhỏ nhất của ma trận
và các vector riêng tương ứng Bài toán này đến nay đã giải được cho ma trận có
cỡ n= 0(10 6 )
- Bài toán lớn: tìm tất cả các trị riêng và vector riêng của một ma trận Bài
toán này đến nay đã giải được cho ma trận có cỡ n=0(10 2 )
Giải bài toán tìm trị riêng và vector riêng theo phương pháp đại số:
- Đầu tiên phải giải phương trình đặc trưng của ma trận A:
det(E-A) =0
để tìm các trị riêng
- Sau đó thế vào hệ phương trình thuần nhất:
Ax=x hay (E-A)x = 0
để tìm vector riêng tương ứng
Chú ý rằng đa thức đặc trưng của ma trận là đa thức bậc cao (bằng cấp của
ma trận A) đối với Mặt khác do hệ phương trình thuần nhất (E-A )x =0 có
ma trận hệ số suy biến và do đó tập nghiệm của hệ là không gian con của R n, nên không thể giải bằng các phương pháp đã trình bày trong chương 3
Trong chương này chúng ta sẽ nghiên cứu các phương pháp:
- Phương pháp trực tiếp: dùng các phép biến đổi tương đương đưa ma trận
A về ma trận có cấu trúc đơn giản hơn để dễ dàng tìm đa thức đặc trưng và các vectơ riêng
Trang 2- Phương pháp lặp: khuếch đại sự khác biệt về modul của các trị riêng bằng luỹ thừa bậc cao
4.2 CÁC PHƯƠNG PHÁP TRỰC TIẾP
4.2.1 Phương pháp Krylov
Giả sử ma trận A có đa thức đặc trưng là:
1
0
( )
n
k p
Do n (A)= det(E-A), nên theo định lí Haminton-Kelly ta có n (A)=0 Xét
dãy lặp v k+1 = Av k , với k= 0,n 1 và vector ban đầu v 0 ≠ 0 tuỳ ý của R n, ta có:
n (A)v 0 =
1
0
n
n n k k k
= 0 (4.1)
Do đó các hệ số p i chính là nghiệm của hệ phương trình (4.1) Việc giải hệ
phương trình (4.1) để tìm các hệ số p i gọi là các phương pháp trực tiếp Tuy nhiên nếu ma trận A có trị riêng bội thì hệ phương trình (4.1) suy biến với mọi
vector v 0 Do đó phương pháp trực tiếp không ổn định Một thay đổi nhỏ hệ số có thể làm cho hệ vô nghiệm Nghiệm của hệ phương trình cũng không ổn định nếu các trị riêng của ma trận A có modul gần nhau Vì vậy khả năng ứng dụng của các phương pháp này không lớn
Để xây dựng hệ phương trình đại số tuyến tính (4.1) ta làm như sau:
Đặt v k =v1 k ,v2 k , ,v n k T , k= 1,n
Từ (4.1) ta có 1
0
n
n k j j k
, với j= 1,n
Hoặc
2
p
p
(4.2)
Vì v k+1 =Av k nên 1
1
n
i j
với i 1,n , k 0,n1 (4.3)
Trang 3 Quá trình tính toán của phương pháp Krylov
- Chọn v 0 tuỳ ý, sau đó lần lượt tính v j k , j1,n ; k 1,n theo (4.3)
- Giải hệ (4.2) để tính các hệ số p k , k= 1,n của phương trình đặc trưng
Nếu hệ phương trình (4.2) không duy nhất nghiệm thì bài toán trở nên phức tạp
Để khắc phục, thông thường người ta chọn v (0) mới và tính toán lại
- Sau khi tính được các hệ số p k , giải phương trình đặc trưng n()0
để tìm các trị riêng i,i1,n
- Tìm các vector riêng : Giả sử phương trình đặc trưng có n trị riêng phân
biệt i,i1,n (i j ), khi đó trong R n tồn tại một cơ sở gồm n vector riêng n
i
i
e} 1
{ tương ứng Phân tích v o theo cơ sở vừa nêu : v o=
1
n
j j j e
Vì vậy:
v k = A k v 0 =
( ) n
i
i
Do i là một nghiệm của n( ) nên i( )là
một đa thức bậc n-1 của :
i( )n1q1,in2 q n1,i =
1 1, 0
n
k
n k i k
Từ n( )( i) i( ) hay
1
0
n
n k k
p
( i)
1 1, 0
n
k
n k i j k
suy ra các hệ số q ji có thể được tính theo sơ đồ Horner như sau:
j i ji
i
p q
q
q
, 1
Ta có i A v0 v n-1 +q 1,i v n-2 + +q n-1,i v 0
=
k
n k i k n k i j j j
k
j n k i j j j i j j
Trang 4Chú ý rằng i j 0 khi i' 0 khi i j
n i
j
(4.4)
nên i A v0
n
j j i j j
e
1
=ii i e i
Từ đó suy ra nếu i 0 thì:
A v0
i
v n-1 +q 1,i v n-2 + +q n-1,i v 0
là một vector riêng của ma trận A tương ứng với trị riêng i
Thí dụ 1 Tìm đa thức đặc trưng của ma trận theo phương pháp Krylov:
1 2 3 4
2 1 2 3
3 2 1 2
4 3 2 1
A
Giải Chọn
0
1 0 0 0
v
Tính v k =Av k-1 ta có:
Xây dựng được hệ phương trình:
1 2 3 4
p p p p
Giải hệ phương trình trên ta được : p 1 = -4, p 2 =-40, p 3 =- 56 , p 4 =-20
Từ đó đa thức đặc trưng của ma trận A là:
4 = 4 43 402 56 20
Trang 5Để tìm nghiệm của đa thức 4 trong Matlab, có thể làm như sau:
>> p=[ 1 -4 -40 -56 -20];
>> roots (p) %% Tính các trị riêng
ans=
9.0990 -3.4142 -1.0990 -0.5858
4.2.2 Phương pháp Leverier
Phương pháp Leverier dùng để tính các hệ số của đa thức đặc trưng của một
ma trận vuông Giả sử A là một ma trận vuông cấp n và đa thức đặc trưng là:
n( ) n p1 n1p2 n2 p n
có các nghiệm i, i 1,n kể cả bội Đặt S k =
n i
k i
1
, với k0,n Theo công thức Newton ta có :
S k + p 1 S k-1 + p 2 S k-2 + + p k-1 S 1 = - kp k , với k 1,n
hay
1 2
1
p S
p S p S
(4.5)
Các hệ số Sk được tính theo công thức S k =Trace(A k ) (Trace là hàm vết của
ma trận) với k 1,n
Quá trình tính toán của phương pháp Leverier
- Tính A k , S k =Trace(A k ) =
n i
k ii
a
1
với k 1,n;
- Tính các p i ,với i1,n theo công thức (4.5)
Trang 6Công thức tính của phương pháp tương đối đơn giản, không cần xây dựng
và giải hệ phương trình như phương pháp Krylov Tuy nhiên, khối lượng tính toán của phương pháp này rất lớn
Thí dụ 2 Tìm đa thức đặc trưng của ma trận theo phương pháp Leverier:
1 2 3 4
2 1 2 3
3 2 1 2
4 3 2 1
A
Giải:
,
,
và 4
2108
1388 *
* 1388
2108
A
Sau đó, dùng hàm vết tính được S 1 =4, S 2 =96, S 3 =712, S 4 =6992 Tính tiếp
theo công thức (4.5) ta được: p 1 =-4, p 2 =- 40, p 3 =-56, p 4 =-20
Do đó 4 = 4 43 402 56 20
4.2.2 Một số hàm dùng để tính hệ số của đa thức đặc trưng của ma trận
Cú pháp :
p = poly(A)
Giải thích Hàm POLY dùng để tính hệ số của đa thức đặc trưng của ma
trận Hàm POLY còn dùng để tính hệ số của một đa thức khi biết các nghiệm của nó
- Nếu A là vector, thì p là vector hệ số của đa thức có nghiệm là vector A
- Nếu A là ma trận vuông thì p là vector hệ số của đa thức đặc trưng của
ma trận A: det( E-A)
Trang 7Thí dụ 3 Tính hệ số của đa thức đặc trưng của ma trận:
1 2 3 4
2 1 2 3
.
3 2 1 2
4 3 2 1
A
Giải
>> A=[ 1 2 3 4; 2 1 2 3; 3 2 1 2 ; 4 3 2 1];
>> p = poly(A)
p =
1.0000 -4.0000 -40.0000 -56.0000 -20.0000
Chú ý: Hàm ROOTS và hàm POLY là hai hàm ngược của nhau
Thí dụ 4
>> x =[ 2 3 4];
>> poly(x)
ans =
1 -9 26 -24
>> roots([1 -9 26 -24])
ans =
4.0000
3.0000
2.0000
Cú pháp :
s = trace (A)
Giải thích Hàm TRACE dùng để tính vết (tổng các phần tử trên đường
chéo chính) của một ma trận vuông
Nếu gọi s = trace (A) thì hàm trả sẽ về s là tổng của các phần tử trên đường chéo gốc của ma trận vuông A, đổng thời đó cũng chính là tổng các trị riêng của
ma trận A
Trang 8Thí dụ 5
>> A=pascal(5);
>> trace(A)
ans =
99
>> sum(eig(A))
ans =
99.0000
4.3 PHƯƠNG PHÁP LẶP
Giả sử ma trận A có một trị riêng trội và các trị riêng được đánh số thứ tự
và họ các vector riêng tương ứng e 1 , e 2 , ,e n ( e i 1) lập
thành cơ sở của không gian R n Ta cần tính trị riêng có modul lớn nhất 1
Khi đó với giả thiết trên, mọi vectơ x (0) R n đều có khai triển (0)
1
n
i i i
x c e
Xét dãy lặp x (k+1) =Ax (k) k=1,2, Ta có:
x (k) =
1
n k
i i i
c A e
n
k
i e c
1
= c11k e10(2 k)
Do đó các tích vô hướng:
<x (k) ,x (k) > = c1212k 0(12k)
và <x (k+1) ,x (k)>=1c1212k 0(1k12k)
1
2 1
1
,
0
k
k
k
x x x
Rõ ràng
1
k k nếu c10
Để tìm vector riêng tương ứng ta đặt:
Trang 9
1
1 1 1
1
1
0
0
1 0
k k
n k
k
i i i k
k
c e
x e
c x
Nếu đặt k =arg(c 1 1k ) thì
1
k
k
i k
c e
e e
c e
Như vậy
k i
k
e e
1
2 1
k k
i
e e
1
2 1
Xét một trường hợp phức tạp hơn: 1 2 3 n , trong đó
1 0 và 2 1 0
là hai trị riêng thực của ma trận A
e c
e
c11 1 2 1 2 0 3 và
x (k+2) = 2 2 2
c e c e 12{ k k k
e c
e
c11 1 2 1 2 0 3 }
2
1 2
1
,
0
k
k
k
x
,
và 1,2 k k , z1,2 k xk11,.2 k x k
- Nếu k chẵn thì :
z x x c e c e
1
k
k k
k
= 1
3 1
1 1
2cke k
Trang 10và
3 1
1
1 1
0
k
k
z
z
, trong đó k arg(c11k1)
- Tương tự nếu k lẻ thì 1
z x x và
3 2
2
1 2
0
k
k
z
z
trong đó k arg(c11k1)
4.4 CÁC HÀM TÍNH TRỊ RIÊNG CỦA MA TRẬN TRONG MATLAB
4.4.1 Hàm EIG
Cú pháp:
[V,D] = eig(A,B)
Giải thích Hàm EIG được dùng để tính tất cả các trị riêng và các vector
riêng của ma trận
E = eig(A) : Sinh ra một vector E gồm các trị riêng của ma trận vuông A;
[V,D] = eig(A) : Sinh ra ma trận đường chéo D, trên đường chéo là các trị riêng của ma trận A và ma trận vuông V gồm các vector riêng tương ứng sao cho AV=VD;
E = eig(A,B) : Sinh ra một vector chứa các trị riêng suy rộng của các
ma trận vuông A và B sao cho A.V= B.V.D;
[V,D] = eig(A,B) : Sinh ra ma trận đường chéo D gồm các trị riêng suy rộng và ma trận vuông V chứa các vectơ riêng tương ứng
Thí dụ 6 Tính tất cả các trị riêng và vector riêng của ma trận:
1 2 3 4
2 1 2 3
.
3 2 1 2
4 3 2 1
A
Giải
Trang 11>> A=[ 1 2 3 4; 2 1 2 3; 3 2 1 2 ; 4 3 2 1];
>> [ V, D] = eig(A)
V = 0.2706 0.4483 0.6533 0.5468
-0.6533 -0.5468 0.2706 0.4483
0.6533 -0.5468 -0.2706 0.4483
-0.2706 0.4483 -0.6533 0.5468
D = -0.5858 0 0 0
0 -1.0990 0 0
0 0 -3.4142 0
0 0 0 9.0990
>> B=pascal(4);
>> [ V, D] = eig(A,B)
V =
-0.3003 -0.9789 -0.7395 -0.4417 0.7258 -0.1382 0.2644 -0.3299 -0.5957 -0.1498 0.5591 -0.4726 0.1678 -0.0168 -0.2659 0.6875
D =
-15.7482 0 0 0
0 1.3804 0 0
0 0 -2.2172 0
0 0 0 -0.4150
4.4.2 Hàm EIGS
Cú pháp:
[V,D,F] = eigs(A,B,K,SIG)
Giải thích Hàm EIGS tính một số trị riêng có modul lớn nhất hoặc nhỏ
nhất bằng phương pháp lặp
Trang 12Hàm dùng để giải từng bước bài toán tìm trị riêng Av =v hoặc tìm trị
riêng suy rộng theo nghĩa Av =Bv Tuy nhiên chỉ một vài trị riêng hoặc vector
riêng được tính toán Trong đó A là một ma trận vuông (thực hay phức), là đối số
bắt buộc phải có Các đối số còn lại là tuỳ chọn và có thể như sau:
- B : là một ma trận đối xứng xác định dương, có cùng cỡ với A Nếu
B không xác định thì xem B như ma trận đơn vị cùng cấp với A; Còn nếu B xác
định thì phương pháp phân tích Cholesky được sử dụng để tính
- K : là số trị riêng cần tính Nếu K không xác định thì K = min(N,6)
trị riêng được tính
- SIG : là một số thực hoặc phức hay một xâu gồm 2 chữ cái Nếu SIG không xác định thì K trị riêng có modul lớn nhất được tính Nếu SIG=0, thì K trị riêng có modul nhỏ nhất sẽ được tính Nếu SIG là một số thực hay số phức khác
0 thì K trị riêng gần SIG sẽ được tính và phương pháp phân tích LU đối với
A-SIG*B được sử dụng Nếu SIG là một trong các xâu hai chữ cái sau đây thì các trị
riêng cần tính được xác định như sau:
‘BE’ Tính K/2 trị riêng từ mỗi phía của phổ trị riêng (Both Ends,
thêm 1 từ phía lớn nếu K lẻ)
Khi gọi hàm:
- với 1 tham số ra thì D là một vector chứa K trị riêng;
- với 2 tham số ra thì D là ma trận đường chéo cấp K và V là một ma trận gồm K cột sao cho A*V=V*D hay A*V=B*V*D;
- với 3 tham số ra, F chỉ ra rằng liệu các trị riêng có hội tụ đến sai số cho phép hay không F = 0 là hội tụ, F = 1 là không hội tụ và F = 2 là thông báo hàm
EIGS bị đình trệ, nghĩa là hai bước lặp liên tiếp đưa đến cùng một kết cục nhưng
chưa phải là kết quả mong muốn
Trang 13Thí dụ 7
>> A=[ 1 2 3 4; 2 1 2 3; 3 2 1 2; 4 3 2 1];
>> [V,D,F] = eigs(A)
iter =
eigs = 9.0990 -3.4142 -1.0990 -0.5858 stopcrit =
========================== iter =
2
eigs = 9.0990 -3.4142 -1.0990 -0.5858 stopcrit = 1.7764e-016
==========================
V = -0.5468 -0.6533 0.4483 -0.2706 -0.4483 -0.2706 -0.5468 0.6533 -0.4483 0.2706 -0.5468 -0.6533 -0.5468 0.6533 0.4483 0.2706
D =
Trang 149.0990 0 0 0
0 -3.4142 0 0
0 0 -1.0990 0
0 0 0 -0.5858
F =
0
>> B=pascal(4);
>> [ V, D, F] = eigs(A,B,2)
V =
-0.8770 0.8899 0.1808 -0.2484 0.4146 -0.3522 -0.1622 0.1491
D =
101.5543 0
0 -83.4936
F =
2
4.4.3 Hàm SVD (Singular Value Decomposition: Phân tích trị kì dị)
Giả sử A là ma trận thực cấp n thì A T A là ma trận thực đối xứng xác định
không âm Do đó nó có n trị riêng thực không âm Nếu j là một trị riêng của ma
trận A T A thì j còn được gọi là một trị kì dị (Singular Value) của ma trận A Như vậy nếu A là ma trận thực đối xứng thì một trị kỳ dị của A chính là trị tuyệt
đối của một trị riêng của nó Phân tích trị kỳ dị được sử dụng để tính chuẩn Euclide của ma trận
Cú pháp:
[U,S,V] = svd(A)
Giải thích
Trang 15[U,S,V] = svd(A) : Sinh ra một ma trận đường chéo S, có cùng cỡ với
ma trận A, các phần tử đường chéo đều không âm, sắp xếp giảm dần; Hai ma trận trực giao U và V sao cho A = U*S*V'
S = svd (A) : Trả về vector S chứa các trị kì dị
[U,S,V] = svd (A,0) : Thực hiện sự phân tích “ cỡ tiết kiệm” Nghĩa là
nếu A là một ma trận cỡ m×n và m > n thì chỉ có n cột đầu của ma trận U được tính, và ma trận S sẽ có cỡ n n
Thí dụ 8
>> A=[ 1 2 3; 4 5 6; 7 8 9];
>> eig(A)
ans =
16.1168 -1.1168 -0.0000
>> svd(A)
ans =
16.8481
1.0684
0.0000
>> C=[ 1 2 3 4; 5 6 7 8];
>> svd(C)
ans = 14.2274
1.2573
>> [U,S,V] = svd (C,0)
U =
-0.3762 -0.9266 -0.9266 0.3762