1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

18 727 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 18
Dung lượng 308,35 KB

Nội dung

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 .. Trong các bài toán tìm trị riêng v

Trang 1

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ó

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 kT , 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,n1 (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 ; k1,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,i1,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,i1,n (ij ), 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( )n1q1,in2  q n1,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 4

Chú ý 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( ) np1 n1p2 n2 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 k0,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 i1,n theo công thức (4.5)

Trang 6

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:

,

,

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 7

Thí 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 8

Thí 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 e10(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(1k12k)

 

1

2 1

1

,

0

k

k

k

x x x

Rõ ràng  

1

k k nếu c10

Để 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 ece  12{ k  k  k

e c

e

c11 1 2 1 2 0 3 }

 

2

1 2

1

,

0

k

k

k

x

,

1,2 k    k , z1,2 kxk11,.2   k x k

- Nếu k chẵn thì :

z  x   xc ece

1

k

k k

k

=  1

3 1

1 1

2cke k

Trang 10

và    

3 1

1

1 1

0

k

k

z

z

, trong đó k arg(c11k1)

- Tương tự nếu k lẻ thì    1    

zx   x

3 2

2

1 2

0

k

k

z

z

trong đó k arg(c11k1)

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 12

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 =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 13

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 =

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 14

9.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

Ngày đăng: 11/07/2014, 09:20

TỪ KHÓA LIÊN QUAN

w