Giáo trình tính toán khoa học - Chương 4 pot - Pdf 17


93

Chươ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 x0 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ó

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, 1
n

và vector ban đầu v
0
≠ 0

tuỳ ý của R
n
, ta có:

n
(A)v
0
=
1
0
n

, , ,
T
k k k
n
v v v
, k=
n,1
.
Từ (4.1) ta có
   
1
0
n
k n
n k j j
k
p v v



 

, với j=
n,1
.
Hoặc





v v v v
 
 
 
   
 
   
 
   
 
   
 
 
   
 
   
 
   
   
. (4.2)

Vì v
k+1
=Av
k
nên
   


 

- Giải hệ (4.2) để tính các hệ số p
k
, k=
n,1
. 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
0)(



n

để tìm các trị riêng
.,1, ni
i



- 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 .,1, ni
i


(

0
=
1 1
n n
k k
j j j j j
j j
A e e
  
 

 
, k=1,2…
Bây giờ ta đặt


( )
n
i
i
 
 
 


. Do 
i
là một nghiệm của
( )
n

n
k
n k i
k
q


 



Từ
( ) ( ) ( )
n i i
     
 
hay
1
0
n
n k
n k
k
p
 



 


,1
0
1

.
Ta có



0
vA
i

v
n-1
+q
1,i
v
n-2
+ +q
n-1,i
v
0

=
1 1
1, 1,
0 0 1
n n n
k

  
.

96
Chú ý rằng
 
 
0 khi i
' 0 khi i j
i j
n i
j
 
 




 

(4.4)
nên



0
vA
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
 
 
 

 
 
 
.

   
       
       
       
.
Xây dựng được hệ phương trình:
1
2
3
4
208 30 1 1 2108
178 22 2 0 1704
192 18 3 0 1656
242 20 4 0 1992
p
p
p
p
 
   
 
   
 
   
 
 
   
 
   
   





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à:

1 2
1 2
( )
n n n
n n
p p p
    
 
    

có các nghiệm ni
i
,1, 

= - kp
k
, với
nk ,1

hay
 
 
1 1
2 2 1 1
1 1 1 1
1
2

1

n n n n
p S
p S p S
p S p S p S
n
 
 



  




a
1
với
nk ,1
;
- Tính các p
i
,với
ni ,1
theo công thức (4.5).

98
Cô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:

.
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
=
20
56
40
4

 
 

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
 Hàm TRACE
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.

100
Thí dụ 5.

.
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

2
1
kk
c


và <x
(k+1)
,x
(k)
>=
)(0
2
1
1
2
1
2
11
kkk
c



.
Đặt
 
   
 
1

k
k
nếu c
1
0.
Để tìm vector riêng tương ứng ta đặt:

101
 
 
 


1 1 1 2
1
1 1
1
1
1 1 2
2
1
0
0
1 0
k
k
n
k
k
i i i

 
 

.
Nếu đặt

k
=


)arg(
1
1
k
c 
thì


 
1 1
1
1
1 1
1
k
k
i
k
c e
e e

 










k
k
i
eee
k
1
2
11
0



.
Xét một trường hợp phức tạp hơn:
1 2 3

n
   
   

2
1 1 1 2 1 2 3
0
kk
k
c e c e
  



  2
1


{




k
k
k
ecec
3212111
0




 
 
 
 
 
 
1
1,2 1,2 1,.2
,
k
k k k
k k
z x x
  

   
.
- Nếu k chẵn thì :



 
 


1
1
11
( )


   

 
 
 
 
    
 
 
 
 
 

=


1
31
1
11
02



k
k
ec





 
 
  
 
 
, trong đó )arg(
1
11


k
k
c


.
- Tương tự nếu k lẻ thì








1
2 2
k k






 
 
  
 
 
trong đó )arg(
1
11


k
k
c

.

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

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.

104
Hà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 =

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.

105
Thí 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 =
1
eigs =
9.0990
-3.4142
-1.0990
-0.5858
stopcrit =
8.2712e-016
==========================
iter =
2
eigs =
9.0990
-3.4142
-1.0990
-0.5858
stopcrit =
1.7764e-016
==========================

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.

107
[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];

-0.6268 -0.5542 -0.2917 0.4636
Khi A là ma trận thực đối xứng xác định không âm thì trị kỳ dị cũng chính
là trị riêng.
Thí dụ 9.
>> B=pascal(4);
>> svd(B)
ans =
26.3047
2.2034
0.4538
0.0380
>> eig(B)
ans =
0.0380
0.4538
2.2034
26.3047
109
BÀI TẬP
A. Cài đặt chương trình và lập hàm
1. Cài đặt hàm Krylov.m tìm hệ số của đa thức đặc trưng của ma trận vuông theo
phương pháp Krylov. Lệnh gọi hàm có dạng:
p = Krylov(A)
2. Cài đặt hàm Leverier.m tìm hệ số của đa thức đặc trưng của ma trận vuông
theo phương pháp Leverier. Lệnh gọi hàm có dạng:
p = Leverier(A)
3. Giả sử biết được một trị riêng L của ma trận A, hãy cài đặt hàm EigVec.m

Tìm 2 trị riêng có modul lớn nhất của ma trận Hilbert cấp 20.
3. Tính hệ số của đa thức đặc trưng, tất cả các trị riêng và vector riêng tương
ứng của các ma trận:
0 1 3 4 1 1 5 0 1 1 3 4
2 0 1 3 2 3 0 8 1 1 2 3
, ,
3 1 0 2 3 1 6 7 3 2 1 5
1 3 2 0 9 0 7 2 4 3 5 1
A B C
 
     
     

     
  
     

     

     
.
4. Tính hệ số của đa thức đặc trưng, chuẩn và số điều kiện loại +  của ma trận
vuông cấp 50 có dạng:
4 2 0 0 0 0 0
1 4 2 0 0 0 0
0 1 4 2 0 0 0
0 0 1 4 0 0 0

0 0 0 0 1 4 2
0 0 0 0 0 1 4

.
6. Tìm ma trận P làm chéo hoá trực giao ma trận:
1 2 3 4
2 1 1
2 1 2 3
1 2 1 ,
3 2 1 2
1 1 2
4 3 2 1
A B
 
 
 
 
 
 
   
 
 
 
 
 
 
 
.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status