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

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

Đ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

62 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ụ 1. Nếu 1 2 3 4 5 6 7 8 9 10 11 12 A          thì 1 5 9 2 6 10 ' 3 7 11 4 8 12 A            . 3.1.2 Định thức của ma trận vuông Cho ma trận vuông A cấp n . Ta gọi ma trận con của ma trận A tương ứng với phần tử a ij là ma trận vuông cấp n-1 suy từ A bằng cách bỏ đi các phần tử hàng i và cột j . 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 với các phần tử a 23 và a 12 của nó: 23 12 1 2 3 1 2 4 6 4 5 6 , , 7 8 7 9 7 8 9 A M M                        . Đị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 ; 63 - Nếu A là ma trận cấp 2 hay 11 12 21 22 a a A a a        thì det(A) = a 11 a 22 - a 12 a 21 =a 11 det(M 11 ) - a 12 det(M 12 ); - Tổng quát: Nếu A là ma trận cấp n≥2 thì det( ) A  a 11 det(M 11 )-a 12 det(M 12 )+ + (-1) 1+n a 1n det(M 1n ), hay 1 1 1 1 det( ) ( 1) det( ) n j j j j A a M      . (3.1) Để tính định thức của ma trận cấp n theo công thức qui nạp, ta phải tính n định thức cấp n-1. Do đó số phép tính để tính định thức của ma trận cấp n sẽ tăng theo tốc độ của n!. Trong thực tế, khi cần giải các bài toán về đại số tuyến tính cỡ 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: 11 21 1 1 12 22 2 1 2 1 1 det( ) det( ) n T n n n nn c c n c c c A C A A c c c                . (3.2) trong đó C=(c ij ) nxn , với c ij =(-1) i+j det(M ij ) gọi là phần phụ đại số của phần tử a ij của ma trận A. Chú ý rằng với khái niệm về phần phụ đại số ta có: 1 1 det( ) . n n ij ij ij ij j i A a c a c       Với công thức trên, để tính ma trận nghịch đảo của ma trận cấp n thì cần phải tính n 2 định thức cấp n-1. Rõ ràng đây là phương pháp rất kém hiệu quả. Vì vậy ta cần phải tìm kiếm các phương pháp tính khác, hiệu quả hơn. Sau đây là một số các hàm ma trận và vector trong Matlab: 64 Bảng 3-1 Một số hàm ma trận và vector trong Matlab Hàm Ý nghĩa 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. 65 Thí dụ 3. >> A=[ 1 2 3 1 5 1 3 2 1]; >> det(A) ans = -32 >> inv(A) ans = -3/32 -1/8 13/32 -1/16 1/4 -1/16 13/32 -1/8 -3/32 >> max(A) ans = 3 5 3 >> min(A) ans = 1 2 1 >> sum(A) ans = 5 9 5 >> cumsum(A) ans = 1 2 3 2 7 4 5 9 5 >> x= [ 0 0 1 -2 3 4 5 -6 -7 -8]; >> [M,k]=max(x) M = 66 5 k = 7 Chú ý k là vị trí đầu tiên của phần tử đạt max trong x.Tương tự ta có: >> [m,p]=min(x) m = -8 p = 9 >> mean(x) ans = -10/9 >> 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 k = 10 9 8 4 1 2 3 5 6 7 >> D= sort(A) D = 1 2 1 1 2 1 3 5 3 >> prod(A) ans = 3 20 3 67 >> cumprod(A) ans = 1 2 3 1 10 3 3 20 3 >>rank (D) ans = 2 3.1.4 Tích vô hướng 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ả mãn các tính chất: - <x , y >= < y, x >; - <x + y, z> = < x, z > + <y, z >; - <k x, y > = <x, ky >= k <x, y>, với mọi kR; - <x, x>  0 ; <x, x>= 0  x=0. Trong mỗi không gian vector có thể định nghĩa nhiều tích vô hướng khác nhau. Tuy nhiên, tích vô hướng Euclide là loại tích vô hướng được sử dụng nhiều nhất trong không gian R n . Tích vô hướng Euclide của hai vector x và y được xác định như sau: 1 1 2 2 1 , n n n i i i x y x y x y x y x y         . (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) 00,0  xxx , 2) x .  x , R, 3) yxyx  (gọi là bất đẳng thức tam giác), thì x được gọi là chuẩn của vector x. 68 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 i i p xx /1 1          với 0 < p  +. Trong đó có 3 loại chuẩn vector thường được sử dụng nhiều nhất là: -   x max x i i   ; - 1 2 1 = x n x x x    ; -   1 2 2 2 2 1 2 2 x n x x x     . Từ đó có 3 loại chuẩn của ma trận tương thích với chuẩn vector. Cho A là một ma trận vuông A =( a ij ) n  n , khi đó: - ij j = max i A a             ; - ij 1 =max j i A a            ; -   2 = max j j 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: p p p Ax A x  . 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 : 2 2 2 1 2 2 x n x x x     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: 69 >> x = [1 2 3 4]; >> y = [ 5 6 7 8]; >> tvh = x*y' %% Tích vô hướng Euclide tvh= 70 >> chuanVC=max(abs(x)) chuanVC = 4 >> chuan1=sum(abs(x)) chuan1 = 10 >> chuan2 = sqrt(x*x') chuan2 = 5.4772 >> chuan =sqrt(x' *x); %% Lỗi : sai kích thước >> A=[ 1 2 3; 4 5 6; 7 8 9]; >>ChuanVC =max(sum(abs(A'))) ChuanVC = 24 >> Chuan1 =max(sum(abs(A))) Chuan1 = 18  Hàm NORM Cú pháp: norm(V,p) 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,p) = sum(abs(V).^p)^(1/p) : Chuẩn loại p; norm(V) = norm(V,2) : Chuẩn Euclide; 70 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(10 3 ). - 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 0 0 0 0 1 4 1 0 0 0 0 0 1 4 A                    . 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 : M = x Ax x sup 0 và m = x Ax x inf 0 71 thì dễ dàng chứng minh rằng M = A và nếu A không suy biến thì m = 1 1- A  . Khi đó, tỷ số -1 A . A M m  .được gọi là số điều kiện của ma trận A và được ký hiệu là cond(A). 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 đó b Ax M x   và b A x m x      . Từ đó suy ra: ( ) x b b M cond A x m b b      . (3.4) 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 d d . Thí dụ 6. Giả sử A=diag   100 1 1,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, 1,100 i  .  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). [...]... [10 :-1 :1]'; >> x=A\b; >> y= inv(A)*b; >> cond(A) ans = 1.6025e+0 13 >> format long >> [x y] ans = 1.0e+008 * 0.0000088998 931 0 0.00000889 836 968 -0 .00087118999914 -0 .00087105920054 0.02067097462091 0.02066820221695 -0 .20660426208645 -0 .20657915670952 1.07206045679 731 1.07194109660446 -3 .17 834 542579418 -3 .1780182 035 2051 5.5 831 27651264 63 5.58259204280029 -5 .74100041956764 -5 .7404 838 76 536 87 3. 189 931 965669 43. .. -5 .7404 838 76 536 87 3. 189 931 965669 43 3.1896612 737 133 8 -0 . 739 01815067450 -0 . 738 95871662781 >> max(abs(x-y)) %% Sự khác nhau của 2 lời giải ans = 5 .35 60846 433 87795e+004 88 %% Kiểm tra sai số của x >> max(abs(A*x-b)) ans = 1.2107e-008 %% Kiểm tra sai số của y >> max(abs(A*y-b)) ans = 2.8844e-004 Qua thí dụ trên ta thấy, sai số tính toán khi sử dụng phương pháp phân tích LU nhỏ hơn hẳn sai số tính toán khi sử dụng phương... Matlab 1 Tính giá trị (radian) của góc nhọn  tạo bởi 2 vector: x=(2,4,5) và y= (-2 ,- 5, 7) 2 Tính tg, với  là góc nhọn tạo bởi 2 vector: x=(1 ,3, 5) và y=(2,5,8) 91 3 Giải hệ phương trình bằng phương pháp phân tích LU:  x1 2 x2 2 x  1  x2  3 x1 2 x2 2 x1 3 x2  3 x3 2 x3 2 x4  6 3 x4  8  x3 2 x3 2 x4  4  x4  8 4 Cho hệ phương trình Ax = b sau đây:  2 1  1 1  -1 2  0 1 0 3 1... đưa hệ phương trình Ax=b về dạng tương đương x=Bx+g Rồi phân tích B =B1 + B2 , trong đó: 0 0  0  0  b21 0 B1   b31 b32 0    b  n1 bn 2 bn3 0  b11 b12   0  0 b22 0 , B   0 0  2       0 0   0 b 13 b1n   b 23 b2n  b 33 b3n     0 bnn  Sau đó tính lặp : - Chọn nghiệm xấp xỉ đầu x(0); - Bước lặp k=1,2 ,3 : tính x(k)= B1x(k) + B2x(k-1)+g; Thuật toán sẽ dừng... 0.5000 0 .33 33 0.2500 0.5000 0 .33 33 0.2500 0.2000 0 .33 33 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.1429 >> B=hilb(10); >> C = cond(B) C = 1.6025e+0 13 Kết quả trên cho thấy ma trận Hilbert là ma trận có số điều kiện rất xấu Đây là thí dụ điển hình về ma trận có số điều kiện xấu Do đó ma trận Hilbert thường được dùng để thử nghiệm về tính ổn định nghiệm của một phương pháp giải hệ phương trình tuyến tính. .. 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à: NC(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... trên hình vẽ: R1 + V1 R3 i1 i2 - R2 R5 i3 R4 + - V2 Giả sử các điện trở và điện áp đã biết Để tính các dòng điện trong mạch điện ta sẽ sử dụng định luật Kitchhoff : tổng điện áp rơi trên mỗi mạch vòng phải bằng không để mạch điện cân bằng Ta có hệ phương trình: - V1 + R1i1 + R2(i1 - i2) =0 R2(i2 - i1) + R3i2 + R4(i2 - i3) = 0 R4(i3 - i2) + R5i3 + V2 =0 Có thể viết lại hệ phương trình dưới dạng ma trận... đó hệ phương trình Ax=b trở thành STSx=b Đặt Sx=y thì S Ty=b Cần chú ý là sij =0 nếu i>j và ma trận ST là ma trận tam giác dưới Nên có thể tính vector y như sau: y1 = b1 s11 k 1 yk  bk - s1k y1 - s2k y2 - - sk -1 ,k yk -1 skk bk -  s1k y j j 1  , k=2 ,3, n skk Và công thức giải hệ tam giác trên Sx=y trở thành: xn = yn snn n xk = yk - sk ,k 1 xk 1 - sk ,k  2 xk  2 - - s kn xn skk 83 bk  s kj... =[ 1 2 5 6 3 4 7 8 9 10 11 12]; >> B = diag(A) B = 74 1 6 11 >> C = diag(A, 2) C= 3 8 >> D = diag(A , -3 ) D= Empty matrix: 0-by-1 >> E = tril(A) E = 1 0 0 0 5 6 0 0 9 10 11 0 >> F=diag(B) F= 1 0 0 0 6 0 0 0 11 >> G = triu(A) G = 1 2 3 4 0 6 7 8 0 0 11 12 >> H = triu(A,2) H = 0 0 3 4 75 0 0 0 8 0 0 0 0 >> C = tril(A ,-2 ) C = 0 0 0 0 0 0 0 0 9 0 0 0 3. 3 CÁC PHƯƠNG PHÁP GIẢI HỆ PHƯƠNG TRÌNH TUYẾN TÍNH Xét... hiệu quả khi tính toán Vì vậy việc giải hệ phương trình tuyến tính trên MTĐT rất hiếm khi người ta sử dụng ma trận nghịch đảo A-1 Tuy nhiên việc tính ma trận nghịch đảo rõ ràng là vẫn rất cần thiết bởi vì biểu diễn trên là công thức “chính xác” để giải bài toán đại số tuyến tính Nhiều khi chúng ta cần quan tâm vector nghiệm x và các tính chất của nó 3. 3 .3 Phương pháp Gauss Xét hệ phương trình Ax =b . 65 Thí dụ 3. >> A=[ 1 2 3 1 5 1 3 2 1]; >> det(A) ans = -3 2 >> inv(A) ans = -3 /32 -1 /8 13/ 32 -1 /16 1/4 -1 /16 13/ 32 -1 /8 -3 /32 >> max(A) ans = 3 5 3 >>. [m,p]=min(x) m = -8 p = 9 >> mean(x) ans = -1 0/9 >> 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 k = 10 9 8 4 1 2 3 5 6 7 >>. 1.0000 0.5000 0 .33 33 0.2500 0.5000 0 .33 33 0.2500 0.2000 0 .33 33 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.1429 >> B=hilb(10); >> C = cond(B) C = 1.6025e+0 13 Kết quả trên

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

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan