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

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

31 575 1

Đ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 31
Dung lượng 412,62 KB

Nội dung

Chương 3 GIẢI TÍCH MA TRẬN VÀ ĐẠI SỐ TUYẾN TÍNH 3.1 GIẢI TÍCH MA TRẬN Để các bạn làm quen với các công cụ của Matlab trong đại số tuyến tính, trước hết chúng tôi cần nhắc lại một số kh

Trang 1

Chương 3 GIẢI TÍCH MA TRẬN VÀ ĐẠI SỐ TUYẾN TÍNH

3.1 GIẢI TÍCH MA TRẬN

Để các bạn làm quen với các công cụ của Matlab trong đại số tuyến tính, trước hết chúng tôi cần nhắc lại một số khái niệm về ma trận và các phép toán trên ma trận

3.1.1 Chuyển vị ma trận

Cho ma trận A=(a ij ) mxn Ma trận chuyển vị của A là ma trận A' =(a' ij ) nxm sao

cho a' ij =a ji Nếu A’=A thì A được gọi là một ma trận đối xứng

Thí dụ 2 Sau đây là ma trận A và các ma trận con M 23 và M 12 tương ứng

Định thức của ma trận A vuông cấp n, gọi là định thức cấp n, được định

nghĩa theo phương pháp qui nạp như sau:

- Nếu A là ma trận cấp 1 hay A=(a 11 ), thì det(A)=a 11;

Trang 2

lớn, người ta cố gắng tránh các phương pháp có sử dụng định thức

3.1.3 Ma trận trận nghịch đảo

Giả sử A là ma trận vuông cấp n Nếu tồn tại ma trận B vuông cấp n sao cho

AB=BA=E (E là ma trận đơn vị cấp n) thì A được gọi là ma trận khả nghịch Khi

đó B được gọi là ma trận nghịch đảo của A và được kí hiệu là B =A -1

Chỉ ma trận có định thức khác không (hay ma trận không suy biến) mới khả

nghịch đảo và ma trận nghịch đảo của A có thể tính được bằng công thức:

Trang 3

Bảng 3-1

Một số hàm ma trận và vector trong Matlab

inv(A) Tính ma trận nghịch đảo của ma trận vuông A

det(A) Tính định thức của ma trận vuông A

A' hoặc A.' Tạo ma trận chuyển vị của ma trận A

trace(A) Hàm vết của ma trận hay tổng các phần tử trên đường chéo

của ma trận A

rank(A) Tính hạng của ma trận A

[m,k]=min(x) Tính giá trị nhỏ nhất m trong các toạ độ của vector x và vị trí

k đạt min Nếu x là ma trận thì kết quả là vector hàng gồm giá

trị min của các cột

[M,k]=max(

x)

Tính giá trị lớn nhất M trong các toạ độ của vector x và vị trí

k đạt max Nếu x là ma trận thì kết quả là vector hàng gồm giá

trị max của các cột

mean(x) Tính giá trị trung bình của các phần tử của vector x Nếu x là

ma trận thì kết quả là vector hàng gồm giá trị trung bình của các cột

[y,k]=sort(x) Sắp xếp lại các phần tử của x theo thứ tự tăng dần, kết quả trả

cho vector y Vector k là vector số thứ tự cũ trong x của các phần tử trong y Nếu x là ma trận thì các cột của x được sắp

xếp tăng dần

sum(x) Tính tổng các phần tử của vector x Nếu x là một ma trận thì

kết quả là 1 vector hàng, mà mỗi phần tử của vector là tổng các phần tử của một cột tương ứng

cumsum(x) Cộng dồn các phần tử của vector x

prod(x) Tính tích các phần tử của vector x Nếu x là một ma trận thì

kết quả là 1 vector hàng, mà mỗi phần tử của vector là tích các phần tử của một cột tương ứng

cumprod Nhân dồn các phần tử của vector x

Trang 4

>> inv(A)

ans = -3/32 -1/8 13/32 -1/16 1/4 -1/16 13/32 -1/8 -3/32

Trang 5

>> sort(x)

ans = -8 -7 -6 -2 0 0 1 3 4 5

>> [y,k]=sort(x)

y = -8 -7 -6 -2 0 0 1 3 4 5

Trang 6

Trong không gian vector V, tích vô hướng của 2 vector x và y, được ký hiệu

là <x,y>, là một số thực hoàn toàn xác định đối với mọi cặp vector x và y, thoả

       (3.3)

3.1.5 Chuẩn của vector

Cho một hàm vector hàm f(x) xác định trên không gian vector V, ký hiệu là

x Nếu nó thoả mãn các tính chất sau đây với xV:

1) x 0, x 0 x0,

2) x x , R,

3) xyxy (gọi là bất đẳng thức tam giác),

thì x được gọi là chuẩn của vector x

Trang 7

Từ định nghĩa về chuẩn vector, với mỗi số p>0 có một chuẩn loại p tương ứng trong R n như sau:

p p n

x

/ 1

A  , với  j là các trị riêng của ma trận đối xứng A T A  j

còn được gọi là các trị kì dị (single value) của ma trận A

Các chuẩn của ma trận cũng thỏa mãn các tính chất 1)-3) của chuẩn vector Ngoài ra, giữa chuẩn loại p=0,1,2 của vector và chuẩn loại tương ứng của ma trận thoả mãn tính chất sau:

Bất đẳng thức trên gọi là tính tương thích của chuẩn ma trận đối với chuẩn

vector Chuẩn loại 2 cúa vector trong không gian R n:

1 2

2 x n

còn được gọi là chuẩn Euclide

Thí dụ 4 Để tính các tích vô hướng và các chuẩn ma trận và chuẩn vector trong Matlab có thể làm như sau:

Trang 8

Giải thích Hàm NORM tính chuẩn loại p của ma trận và vector V

- Nếu V là một vector p > 0 hoặc  inf thì

norm(V) = norm(V,2) : Chuẩn Euclide;

Trang 9

norm(V,inf) = max(abs(V)) : Chuẩn loại vô cùng;

norm(V,-inf) = min(abs(V))

- Nếu V là một ma trận thì p chỉ có thể 1, 2, inf hoặc 'fro' và

norm (V) = max(svd(V)) : Trị kì dị lớn nhất của V;

norm (V,2) = norm (V);

norm (V,1) = max(sum(abs(V)));

norm (V,inf) = max(sum(abs(V')));

norm (V,'fro')= sqrt(sum(diag(V'*V))) : chuẩn Frobenius

3.1.6 Phân loại ma trận

Khi nghiên cứu các bài toán trong đại số tuyến tính, người ta thường chia

ma trận thành 2 loại:

- Ma trận lưu trữ được: Các ma trận mà các phần tử của chúng có thể lưu

trữ và xử lí được trong bộ nhớ của MTĐT Kích thước của các ma trận này

thường không lớn lắm n = 0(103)

- Ma trận thưa: Ma trận có kích thước rất lớn, nhưng phần lớn các phần tử

của chúng đều bằng 0 hoặc ma trận có phần tử không cần lưu trữ mà có thể tính được bằng qui tắc nào đó

Thí dụ 5 Một ma trận thưa có dạng 3 đường chéo:

4 1 0 0 0 0 0

1 4 1 0 0 0 0

0 1 4 1 0 0 0

0 0 1 4 0 0 0 0

3.1.7 Số điều kiện của ma trận

Giả sử là một chuẩn nào đó của vector và ma trận và A là một ma trận vuông Nếu đặt :

Trang 10

Giả sử x là nghiệm đúng của hệ phương trình tuyến tính Ax = b và x+ x là

nghiệm của hệ phương trình xấp xỉ A x(  x)  b b Khi đó bAxM x

Biểu thức trên cho thấy sai số tương đối của nghiệm có thể lớn bằng sai số

tương đối của vế phải nhân với cond(A) Ma trận A được gọi là ma trận có số điều kiện xấu (ill-conditioned-matrix ) nếu cond(A)>>1 Vì vậy việc giải gần đúng một hệ phương trình với ma trận hệ số A có số điều kiện xấu rất kém ổn định; Vế phải b chỉ cần thay đổi nhỏ cũng có thể gây sai số khá lớn cho lời giải

của hệ phương trình

Số điều kiện của ma trận có các tính chất:

i) cond(A)  1;

ii) Nếu A là ma trận trực giao (tức là A'=A -1 ) thì con(A)=1;

iii) Với mọi c  0R : ta đều có cond(cA) = cond(A);

iv) Nếu D = diag n

i

d 1 thì cond(D) =

max min

i i

0 , khi đó det(A)=10 -100 nên A là ma trận gần suy biến Tuy nhiên do A=0,1E nên A là ma trận có số điều kiện rất tốt và hệ phương trình Ax=1 dễ dàng giải được một cách chính xác là: x i =10, i 1,100

 Hàm COND

Cú pháp:

cond(A,p)

Giải thích Hàm COND tính số điều kiện của ma trận A theo chuẩn loại p

cond(A,p)= norm(A,p)*norm(inv(A),p), nếu p=1,2, inf hoặc 'fro';

cond(A) = cond(A,2)

Trang 11

Ta thấy ma trận Hilbert là ma trận có số điều kiện rất xấu

3.2 MỘT SỐ MA TRẬN ĐẶC BIỆT TRONG MATLAB

invhilb(n) Ma trận nghịch đảo của ma trận Hilbert cấp n

kron(x,y) Ma trận tích tensor Kronecker của ma trận x và y

vander(x) Ma trận Vandermonde của vector x

Ma trận ma phương là ma trận vuông cấp n sinh bởi các số 1, 2, 3, , n2 có các tổng của cột, các tổng hàng và các tổng đường chéo đều bằng nhau

Trang 12

Ma trận Hadamard là ma trận vuông H cấp n gồm các phần tử 1 và -1 sao cho H'*H= n*eye(n) Nó chỉ tồn tại khi n chia hết cho 4 Matlab chỉ tính được

ma trận Hadamard khi n, n/12 hay n/20 là lũy thừa của 2

Trang 13

2 1

2 2 2 1 2

1 1 1

n n n

n

n

x x x

x x x

x x x

Ma trận Vandermonde được sử dụng trong nội suy bằng đa thức

Tích tensor Kronecker của 2 ma trận A mxn và B là ma trận có dạng:

diag(A,p) Nếu A là 1 ma trận thì hàm sẽ tạo ra 1 vector cột từ đường chéo thứ

p của ma trận A Nếu A là 1vector thì hàm sẽ tạo ra 1 ma trận vuông

có đường chéo thứ p là vector A, còn các phần tử khác đều bằng 0 Mặc định của p là 0 (đường chéo chính)

triu(A,p) Hàm sẽ tạo ra một ma trận cùng cỡ với ma trận A, có các phần tử từ

đường chéo thứ p trở lên được lấy từ A, còn các phần tử khác (phía dưới đường chéo thứ p) đều bằng 0 Mặc định của p là 0

tril(A,p) Hàm sẽ tạo ra một ma trận cùng cỡ với ma trận A, có các phần tử từ

đường chéo thứ p trở xuống được lấy từ A, còn các phần tử khác (phía trên đường chéo thứ p) đều bằng 0 Mặc định của p là 0

Trang 15

j j

A

A

  (3.5)

trong đó Aj là ma trận vuông cấp n suy từ A bằng cách thay cột thứ j của A

bởi vector vế phải b

Xét về hiệu quả tính toán thì phương pháp này rất tồi Người ta tính được

số phép tính số học (+, -,  và / ) của phương pháp này là:

N C (n)=(n+1)!n

Bạn hãy tưởng tượng, nếu phải giải hệ phương trình 15 ẩn (n=15) theo phương pháp Cramer trên MTĐT có tốc độ tính toán là 1 tỷ phép tính/giây thì phải mất 3,6 ngày tính toán liên tục; Còn nếu số ẩn là n=20 thì thời gian tính toán

là 32 nghìn năm Những con số thật khủng khiếp Tuy nhiên công thức Cramer

có ý nghĩa khi ta nghiên cứu một số tính chất của lời giải

Trang 16

3.3.2 Phương pháp ma trận nghịch đảo

Đây là một hình thức thể hiện khác của phương pháp Cramer Nếu A là ma trận không suy biến thì từ biểu thức Ax=b suy ra hệ phương trình có duy nhất nghiệm xác định bởi biểu thức x=A -1 b Vì vậy bạn dễ dàng có thể sử dụng Matlab

để tính nghịch đảo của ma trận A và giải hệ phương trình như sau:

Xét hệ phương trình Ax =b trong trường hợp A là ma trận tam giác trên và

các hệ số trên đường chéo chính đều khác 0:

Khi đó hệ phương trình Ax=b có thể giải một cách đơn giản bằng phương

pháp thế ngược từ dưới lên theo công thức sau đây mà không phải tính một định thức nào:

Tương tự, nếu A là ma trận tam giác dưới với các phần tử trên đường chéo

chính khác 0, thì có thể giải hệ phương trình bằng phương pháp thế xuôi từ trên

Trang 17

xuống như sau:

- - - -

k

k kj j j

Nếu A không phải một ma trận tam giác, có thể dùng các phép biến đổi sơ

cấp về hàng của ma trận để biến đổi dần ma trận mở rộng A =[A,b] của ma trận

A về dạng ma trận tam giác trên, rồi dùng phương pháp thế ngược nói trên để tính

vector x Công việc đó được gọi là quá trình xuôi của phương pháp Gauss:

Nếu trong quá trình tính toán các phần trử trụ akk k 1đều khác không thì khi

kết thúc quá trình xuôi ta được ma trận A (n-1) có dạng tam giác trên

 Phương pháp Gauss -Jordan (Còn gọi là phương pháp Gauss cải tiến

hay phương pháp Chọn trụ tối đại)

Trong quá trình tính toán của phương pháp Gauss, nếu gặp phần tử trụ

Trang 18

+ Nếu a rk =0 thì ma trận A suy biến, nên phải ngừng giải; Ngược lại, nếu

rk thì tiến hành đổi chỗ 2 hàng r và k của ma trận A (k-1) ;

3.3.4 Phương pháp phân tích QR và phương pháp phân tích LU

Để giải hệ phương trình tuyến tính trên MTĐT người ta thường phân tích

ma trận A thành tích của 2 ma trận, mỗi ma trận đó dễ nghịch đảo hơn ma trận A

Do đó sẽ giảm nhẹ khối lượng tính toán Có 2 phương pháp phân tích ma trận:

 Phương pháp phân tích QR

Phân tích ma trận A thành tích của ma trận trực giao Q (ma trận unitar) và

ma trận tam giác trên R Ta có thể viết lại hệ phương trình gốc như sau:

Trang 19

Giải thích:

- A là một ma trận vuông cần phân tích;

- Q là ma trận trực giao và R là ma trận tam giác trên;

- P là ma trận giao hoán thỏa mãn Q*R = P*A

Sở dĩ cần phải sử dụng thêm ma trận giao hoán vì trong quá trình tính toán, giống như phương pháp Gauss, khi gặp trường hợp phải chia cho 0 thì cần phải hoán vị các hàng của ma trận

 Phương pháp phân tích LU

Hãy xem xét lại phương pháp khử Gauss Tại bước thứ k=1,n1 của

phương pháp Gauss, ta giữ lại k hàng đầu của ma trận A (k-1) và biến đổi phần tử

k 1 

ik

a (i>k) thành 0 Mỗi bước như vậy tương đương với việc nhân bên trái ma

trận A (k-1) với một ma trận sơ cấp có dạng tam giác dưới E k Quá trình đó đưa dần

dần ma trận A về dạng ma trận tam giác trên U có các phần tử trên đường chéo bằng 1 Nói cách khác E n E n-1 E 1 A= MA=U hay A =M -1 U=LU

Phép phân tích này thực hiện được nếu như tất cả các phần tử trụ

a   , giống

như phương pháp Gauss cải tiến, ta cần đổi chỗ hàng k với một hàng r nào đó ở

dưới Vì vậy cũng cần lưu trữ các phép đổi chỗ bằng một ma trận giao hoán để sử dụng cho việc biến đổi tương ứng vector vế phải của hệ phương trình

Để tìm các ma trận L và U ta có thể dùng thủ tục Crout gồm n-1 bước Vì L

là ma trận tam giác dưới có các phần tử đường chéo bằng 1 và U là ma trận tam

giác trên nên trong khi tính toán ta có thể lưu trữ chúng chung vào ma trận kí

Trang 20

trong đó Dk là ma trận vuông cấp n-k+1 (tức là có k-1 hàng và k-1 cột của B

đã được tính toán xong) Tiếp tục biến đổi Dk= 

T k kk

H s

u u

T k kk

D l

u u

Ux=y bằng quá trình thế ngược để tìm nghiệm x Như vậy chúng ta cũng không

cần phải tính ma trận nghịch đảo nào cả

Để xác định các ma trận L và U có thể sử dụng lệnh của Matlab theo cú

pháp như sau:

[L,U,P] =lu(A)

Giải thích:

- A là một ma trận vuông cần phân tích ;

- L là ma trận tam giác dưới và U là ma trận tam giác trên;

- P là ma trận giao hoán thỏa mãn L*U = P*A

Trang 21

Tuy nhiên, để giải hệ phương trình Ax=b bằng phương pháp phân tích LU

ta có thể dùng dòng lệnh của Matlab sau:

>> x = A\ b %% Giải phương trình bằng phương pháp phân tích LU và

%% hai thủ tục giải tiến và lùi luân phiên nhau

Cần chú ý là cả hai phương pháp ma trận nghịch đảo và phương pháp phân tích LU đều dẫn đến một kết quả vì đều là các phương pháp chính xác Tuy

nhiên tính bằng phương pháp phân tích LU có hiệu quả hơn Do đó nên chọn phương pháp này để giải hệ phương trình tuyến tính Việc phân tích LU đặc biệt

có lợi nếu ta phải giải nhiều hệ phương trình có ma trận hệ số A giống nhau,

nhưng vector vế phải khác nhau

Hãy xem xét một thí dụ về ứng dụng của giải hệ phương trình

Thí dụ 12 Hãy tính các cường độ dòng điện i1, i 2, i 3 của một mạch điện như trên hình vẽ:

Trang 22

% MATLAB code for electric circuit analysis

R1 = input( 'Enter resistor R1');

R2 = input( 'Enter resistor R2');

R3 =input( 'Enter resistor R3');

R4 = input( 'Enter resistor R4');

R5= input( 'Enter resistor R5');

V1= input( 'Enter voltage source V1');

V2= input( 'Enter voltage source V2');

b= [ V1; 0; -V2]; %% Forming the right-hand-side vector A=[ R1+R2 -R3 0

-R2 R2+R3+R4 -R4

0 -R4 R4+R5]; %% Forming the matrix

3.3.5 Phương pháp Cholesky (Phương pháp căn bậc 2)

Đâylà một trường hợp riêng của phương pháp phân tích LU Nếu A là ma trận đối xứng, tức là A=A T, người ta đã chứng minh được rằng khi đó tồn tại tam

giác trên S =(s ij ) nxn sao cho A=S T S Khi đó hệ phương trình Ax=b trở thành

S T Sx=b Đặt Sx=y thì S T y=b Cần chú ý là s ij =0 nếu i>j và ma trận S T là ma trận

tam giác dưới Nên có thể tính vector y như sau:

Trang 23

Vấn đề còn lại là tìm cách tính ma trận S như thế nào Từ phương trình

S T S=A ta có:

, ij

kj ki kj ik

   với j >i ; s ij = 0 với j <i

Chú ý rằng nếu các phần tử trên đường chéo chính (s ii ) của ma trận S đều khác không thì det(A)= 

 2

1 ii

n

i s 0 khi đó hệ phương trình có duy nhất nghiệm

Phương pháp Cholesky tính toán được cả trong trường hợp sij có thể là các số phức Tổng khối lượng tính toán của phương pháp là:

Xét hệ phương trình Ax=b Bằng cách nào đó ta đưa hệ về dạng tương đương x=Bx+g Sau đó tính toán theo thủ tục lặp đơn như sau:

- Chọn nghiệm xấp xỉ đầu x (0) ;

- Bước lặp k=1,2,3 : tính x (k) = Bx (k-1 +g;

Thuật toán sẽ dừng lại khi x (k) đạt được sai số cho phép

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w