Chương 2: Đại số tuyến tính
lượt xem 45
download
Tài liệu tham khảo về đại số tuyến tính
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Chương 2: Đại số tuyến tính
- CHƯƠNG 2: ĐẠI SỐ TUYẾN TÍNH §1. CÁC PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH 1. Hệ phương trình đầy đủ:Ta xét hệ phương trình Ax = B. Để tìm nghiệm của hệ ta dùng lệnh MATLAB: x= inv(A)*B hay: x = A\B 2. Hệ phương trình có ít phương trình hơn số ẩn(underdetermined): Khi giải hệ trên ta đã dùng nghịch đảo ma trận. Như vậy ta chỉ nhận được kết quả khi ma trận A vuông(số phương trình bằng số ẩn số và định thức của A phải khác không). Hệ có số phương trình ít hơn số ẩn hay định thức của ma trận A của hệ đầy đủ bằng 0 gọi là hệ underdetermined. Một hệ như vậy có thể có vô số nghiệm với một hay nhiều biến phụ thuộc vào các biến còn lại. Với một hệ như vậy phương pháp Cramer hay phương pháp ma trận nghịch đảo không dùng được. Khi số phương trình nhiều hơn số ẩn phương pháp chia trái cũng cho nghiệm với một vài ẩn số được cho bằng 0. Một ví dụ đơn giản là phương trình x + 3y = 6. Phương trình này có rất nhiều nghiệm trong đó có một nghiệm là x = 6 và y = 0: a = [ 1 3]; b = 6; x = a\b x = 6 0 Số nghiệm vô hạn có thể tồn tại ngay cả khi số phương trình bằng số ẩn. Điều này xảy ra khi det(A) = 0. Với hệ này ta không dùng được phương pháp Cramer và phương pháp ma trận nghịch đảo và phương pháp chia trái cho thông báo là ma trận A suy biến. Trong trường hợp như vậy ta có thể dùng phương pháp giả nghịch đảo để tìm được một nghiệm gọi là nghiệm chuẩn minimum. Ví dụ: Cho hệ phương trình x + 2y + z = 8 0x + y + 0z = 2 x + y + z = 6 29
- Khi dùng phép chia trái ta nhận được: y=a\b Warning: Matrix is singular to working precision. y = Inf Inf Inf Nếu ta dùng phương pháp giả nghịch đảo thì có: a = [1 2 1;0 1 0;1 1 1] b = [8;2;6] x = pinv(a)*b x = 2.00000000000000 2.00000000000000 2.00000000000000 Một hệ cũng có thể có vô số nghiệm khi có đủ số phương trình. Ví dụ ta có hệ: 2x ‐ 4y + 5z = ‐4 ‐4x ‐2y +3z = 4 2x + 6y ‐8z = 0 Trong hệ này phương trình thứ 3 là tổng của hai phương trình trên nên hệ thật sự chỉ có 2 phương trình. Tóm lại một hệ muốn có nghiệm duy nhất phải có các phương trình độc lập. Việc xác định các phương trình trong hệ có độc lập hay không khá khó, nhất là đối với hệ có nhiều phương trình. Ta đưa ra một phương pháp cho phép xác định hệ phương trình có nghiệm và liệu nghiệm đó có duy nhất hay không. Phương pháp này đòi hỏi sự hiểu biết về hạng của ma trận. Ta xem xét định thức của ma trận sau: ⎡3 − 4 1⎤ ⎢6 10 2 ⎥ ⎢ ⎥ ⎢⎣9 − 7 3⎥⎦ Nếu ta loại trừ một hàng và một cột của ma trận chúng ta còn lại ma trận 2×2. Tuỳ theo hàng và cột bị loại ta có 9 ma trận con. Định thức của các ma trận này gọi là định thức con. Ví dụ nếu ta bỏ hàng 1 và cột 1 ta có: 10 2 = 44 −7 3 30
- Các định thức con có thể dùng để xác định hạng của ma trận. Hạng của ma trận được định nghĩa như sau: Một ma trận A m×n có hạng r ≥ 1 nếu và chỉ nếu định thức của A chứa một định thức r × r và mọi định thức con vuông có r+1 hàng hay hơn bằng 0. Để xác định hạng của ma trận ta có lệnh rank Ví dụ: a = [ 3 ‐4 1;6 10 2;9 ‐7 3]; rank(a) ans = 2 Hệ phương trình Ax = B có m phương trình và n ẩn có nghiệm nếu và chỉ nếu rank(A) = rank([A B]). Gọi hạng của A là r, nếu r = n thì nghiệm là duy nhất. Nếu r
- Ta viết: a = [ 2 ‐4 5;‐6 ‐2 3;2 6 ‐8]; b = [ ‐4;4;0]; rank(a) ans = 2 rank([a b]) ans = 2 Vậy hệ có vô số nghiệm. Một trong các nghiệm là: x=pinv(a)*b x = ‐1.21481481481481 0.20740740740741 ‐0.14814814814815 3. Hệ phương trình overdetermined: Hệ phương trình trong đó số phương trình độc lập nhiều hơn số ẩn gọi là hệ overdetermined. Đối với hệ này phương pháp Cramer và phương pháp nghịch đảo ma trận không dùng được. Tuy nhiên một số hệ cho nghiệm đúng xác định bằng phép chia trái. Đối với các hệ khác không có nghiệm chính xác. Khi r = rank(a) = rank([a b]) hệ có nghiệm và nếu r = n nghiệm là duy nhất. Khi rank(a) ≠ rank([a b]) hệ không có nghiệm. Ví dụ: Giải mạch điện gồm 3 nhánh nối song song: nhánh 1 có tổng trở Z1 = 5+2j và nguồn e = 100 sin(314t + 300), nhánh 2 có tổng trở Z2 = 3+4j và nhánh 3 có tổng trở 5+6j. Ta viết phương trình của mạch điện theo dòng nhánh. Sau đó rút ra ma trận A và B. Các lệnh MATLAB: a = [1 1 1;5+2*i 3+4*i 0;0 ‐(3+4*i) 5+6*i] e =100*exp(i*(30*pi/180)) b=[0;e;0]; i=a\b i = 25.25569272231586 +19.27124163998603i ‐15.63482777750950 ‐11.44276084484129i ‐9.62086494480636 ‐ 7.82848079514474i 32
- §2. NỘI SUY 1 .Nội suy hàm một biến :MATLAB dùng 2 kiểu nội suy : nội suy đa thức và nội suy trên cơ sở biến đổi Fourrier nhanh, a. Nội suy đa thức : MATLAB dùng hàm interp1(x,y,xi,) với x, là giá trị của hàm tại những điểm đã cho và xi là giá trị mà tại đó ta cần nội suy ra giá trị yi. có thể là một trong các giá trị sau : ‘nearest’‐ phương pháp này đặt giá trị nội suy vào giá trị đã cho gần nhất, Phương pháp này nhanh nhưng kết quả kém chính xác nhất Ví dụ: x = [ 1 2 3 4 5 ]; y = [ 5.5 43.1 128 290.7 498.4 ]; yi = interp1(x,y,1.6,ʹnearestʹ) yi = 43.1000 ‘linear’‐ phương pháp này coi đường cong đi qua 2 điểm cho trước là đường thẳng. Ví dụ: yi = interp1(x,y,1.6,ʹlinearʹ) yi = 28.0600 ‘spline”‐ dùng phương pháp nội suy spline Ví dụ: yi = interp1(x,y,1.6,ʹsplineʹ) yi = 24.9782 ‘cubic’‐ phương pháp này coi đường cong qua 2 điểm là đường cong bậc 3 Ví dụ: yi = interp1(x,y,1.6,ʹcubicʹ) yi = 22.3840 b. Nội suy FTT: Hàm interpft thực hiện nội suy hàm một biến sử dụng phương pháp FFT(Fast Fourrier Transform). Phương pháp này tính toán biến đổi Fourrier một vec tơ chứa các giá trị của một hàm chu kì. Như vậy phương pháp này tính biến đổi Fourrier ngược sử dụng nhiều điểm. Dạng hàm là : y = interpft(x,n) Ví dụ: y = interpft(x,4) y = 1.0000 2.6236 3.0000 5.3764 33
- 2. Nội suy hàm hai biến : Hàm interp2 thực hiện nội suy hàm 2 biến.Dạng hàm tổng quát : ZI = interp2(X,Y,Z,XI,YI,) Z – ma trận chữ nhật chứa giá trị của hàm 2 biến X,Y – mảng có cùng kích thước,chứa giá trị x,y đã cho XI,YI‐ mảng chứa giá trị cần nội suy Các gồm : ‘nearest’,’linear’,’cubic’ 3. Nội suy và mảng nhiều chiều : interp3 nội suy hàm 3 biến interpn nội suy hàm nhiều biến §3. TÍCH PHÂN VÀ PHƯƠNG TRÌNH VI PHÂN 1. Tích phân: Để tính tích phân ta dùng hàm quad(tính tích phân theo phương pháp Simpson) và hàm quadl(tính tích phân bằng phương pháp Lobatto). Ví dụ (lưu trong ct2_1.m): f = inline(ʹ1./((x‐0.3).^2+0.01)+1./((x‐0.9).^2+0.04)‐6 ʹ); q = quad(f,0,1) q = 29.8583 r = quadl(f,0,1) r = 29.8583 Ví dụ (lưu trong ct2_2.m) y = sin(x) quad(‘sin’,0,pi) ans = 2.00001659104794 quadl(ʹsinʹ,0,pi) ans = 1.99999999999989 Ta cũng có thể dùng phương pháp hình thanh để tính tích phân: Ví dụ (lưu trong ct2_3.m): y = sin(x) x = [0:pi/100:pi]]; y = sin(x); 34
- trapz(x,y) ans = 1.99983550388744 2. Vi phân số:Để tính vi phân ta dùng diff Ví dụ: a = [ 1 4 2 5 7 4 8]; diff(a) ans = 3 ‐2 3 2 ‐3 4 3. Phương trình vi phân: Phương trình vi phân cấp cao y(n) = f(t,y,y’, . . , y(n‐1)) có thể đưa về hệ phương trình vi phân cấp 1 bằng cách đặt y1 = y ; y2 = y’ , . . , yn = y(n‐1). Như vậy: y′1 = y 2 y′2 = y 3 .... y′n = f( t , y1 , y 2 ,. ., y n ) là hệ có n phương trình vi phân cấp 1. Ví dụ: y’’’ ‐ 3y” ‐ y’y = 0 với y(0) = 0 y’(0) = 1 y” = ‐1 được biến đổi thành y′1 = y 2 y′2 = y 3 y′3 = 3 y 3 + y 2 y1 với điều kiện đầu : y1(0) = 0 y2(0) = 1 y3(0) = ‐1 Để nhập phương trình này vào MATLAB ta dùng M‐file f.m như sau : function dy = f(t,y); dy = [ y(2) ; y(3) ; 3*y(3)+y(3)*y(1)]; và giải phương trình bằng lệnh : [ t , f] = solver (‘file’,tspan,y0) với “file” là M‐file chứa ODE tspan là vec tơ [ t0 tfinal] xac định khoảng tìm nghiệm y0 là vec tơ giá trị điều kiện đầu. solver là cách giải, thường dùng phương pháp Runge‐Kutta bậc 2/3(ode23) hay 4/5(ode45) 35
- [ t , y] = ode45(‘f’,[ 0 1],[0 ; 1 ; ‐1]) Mỗi hàng trong vec tơ nghiệm tương ứng với một thời điểm trong vec tơ cột t. Như vậy trong ví dụ trên, y(:,1) là nghiệm, y(:,1) là đạo hàm bậc nhất của nghiệm và y(:,2) là đạo hàm bậc hai của nghiệm. Ví dụ: Tìm dòng qua độ khi đóng mạch RC nối tiếp vào nguồn một chiều biết tích số RC = 0.1, điện áp nguồn là 10V và điện áp ban đầu trên tụ là 2V. Phương trình của mạch là: du e(t) = RC C + u C dt Thay số vào ta có: 0.1u′ + u = 10 u′ = ‐10u + 100 Ta có các lệnh MATLAB để tạo hàm: function uc = rc(t,u) uc = ‐10*u + 100; và giải bài toán: [t,u] = ode45(ʹrcʹ,[0 4],2); plot(t,u,ʹ‐oʹ) §4. ĐẠI SỐ MA TRẬN 1. Phân tích Cholesky : Phương pháp Cholesky phân tích ma trận A xác định dương thành tích của hai ma trận A = R’*R với R là ma trận tam giác trên. Muốn nhận được ma trận R ta dùng hàm chol(A). Ví dụ: n = 5; X = pascal(n) X = 1 1 1 1 1 1 2 3 4 5 1 3 6 10 15 1 4 10 20 35 1 5 15 35 70 R = chol(X) 2. Phân tích LU : Ta phân tích ma trận A= L*U trong đó L là ma trận tam giác dưới và U là ma trận tam giác trên. Ta viết [L,U]= lu(A). Ví dụ (lưu trong ct2_4.m): 36
- A = [ 1 2 3 4 5 6 7 8 0] [L,U] = lu(A) 3.Phân tích QR: Ta phân tích ma trận A =Q*R với Q là ma trận trực giao và R là ma trận tam giác trên. Ví dụ (lưu trong ct2_5.m): A = [ 1 2 3 4 5 6 7 8 9 10 11 12] [Q,R] = qr(A) 4. Luỹ thừa: Nếu có ma trận A vuông và số p>0 thì A^p là tích p lần của A : Y= A^2 5. Giá trị riêng và vec tơ riêng: eig(A) [d,r] = eig(A) 6. Quay ma trận: b = rot90(a) a = [2 1 0;‐2 5 ‐1;3 4 6] a = 2 1 0 ‐2 5 ‐1 3 4 6 b = rot90(a) b = 0 ‐1 6 1 5 4 2 ‐2 3 7. Đảo ma trận: fliplr(a) đảo ma trận từ trái sang phải c = fliplr(a) c = 37
- 0 1 2 ‐1 5 ‐2 6 4 3 flipud(a) đảo ma trận từ trên xuống dưới d = flipud(a) d = 3 4 6 ‐2 5 ‐1 2 1 0 8. Các hàm xử lí ma trận khác: reshape(a,m,n) định dạng lại ma trận a với số hàng mới m và số cột mới n a = [1 2 3 ;5 6 7;8 9 1]; reshape(a,1,9) ans = 1 5 8 2 6 9 3 7 1 diag(a) lấy các phần tử trên đường chéo chính của ma trận a và lưu vào một vec tơ diag(a,k) chọn đường chéo tuỳ theo giá trị của k k = 0 ‐ chọn đường chéo chính k > 0 ‐ chọn đường chéo thứ k trên đường chéo chính k
- a = 1 2 3 4 5 6 7 8 9 b = triu(a) b = 1 2 3 0 5 6 0 0 9 b = triu(a, k) tạo ra ma trận b cùng cỡ với ma trận a, chứa các phần tử của ma trận a ngay trên đường chéo và phía trên đường chéo chính. Các phần tử khác bằng 0. b = tril(a) tạo ra ma trận b cùng cỡ với ma trận a, chứa các phần tử của ma trận a nằm dưới đường chéo chính. Các phần tử khác bằng 0. b = tril(a, k) tạo ra ma trận b cùng cỡ với ma trận a, chứa các phần tử của ma trận a ngay trên đường chéo và phía dưới đường chéo thứ k. Các phần tử khác bằng 0. b = tril(a,‐1) b = 0 0 0 4 0 0 7 8 0 §5. ĐA THỨC 1. Các hàm xử lí đa thức : conv nhân đa thức deconv chia đa thức poly tìm đa thức có nghiệm đã cho polyder đạo hàm đa thức polyfit xấp xỉ bằng đa thức polyval tính trị của đa thức polyvalm tính trị ma trận đa thức roots tìm nghiệm của đa thức 2. Biểu diễn đa thức: MATLAB biểu diễn đa thức như là một vec tơ hàng chứa các hệ số của đa thức theo thứ tự số mũ giảm dần Ví dụ: P(x) = x3 – 2x – 5 39
- Để nhập đa thức này vào MATLAB ta viết : p = [ 1 0 – 2 –5 ] 3. Nghiệm của đa thức : Để tìm nghiệm của đa thức ta dùng hàm roots Ví dụ: roots(p) ans = 2.0946 ‐1.0473 + 1.1359i ‐1.0473 ‐ 1.1359i 4. Đa thức đặc tính: Cho ma trận A, hàm poly xác định đa thức đặc tính của ma trận A Ví dụ: a = [ 1 2 3 ; 3 4 5 ; 4 5 6 ] a = 1 2 3 3 4 5 4 5 6 poly(a) ans = 1.0000 ‐11.0000 ‐9.0000 ‐0.0000 5. Tính trị đa thức: Để tính trị của đa thức tại x = x0 ta dùng hàm polyval(p) Ví dụ: polyval(p,0.2) ans = ‐5.3920 Ta có thể tính trị của ma trận đa thức .Trong trường hợp đó đa thức P(x) = x3 – 2x – 5 trở thành : P(X) = X3 – 2X – 5I với X là ma trận vuông và I là ma trận đơn vị. Ví dụ: X = [2 4 5;‐1 0 3;7 1 5] X = 2 4 5 ‐1 0 3 7 1 5 Y = polyvalm(p,X) Y = 377 179 439 111 81 136 490 253 639 40
- 6. Nhân và chia đa thức : Cho đa thức a = x2 + 2x + 3 và đa thức b = 4x2 + 5x + 6. Để tính tích 2 đa thức ta viết : a = [ 1 2 3 ] ; b = [ 4 5 6 ] ; c = conv(a,b) c = 4 13 28 27 18 Để tính thương hai đa thức ta viết [ q , r ] = deconv(c,a) q = 4 5 6 r = 0 0 0 0 0 Trong đó q là thương nguyên còn r là phần dư. 7. Đạo hàm đa thức: Tính đạo hàm đa thức bằng hàm polyder q = polyder(p) q = 3 0 ‐2 Để tính đạo hàm của tích hai đa thức a và b ta viết c = polyder(a,b) c = 16 39 56 27 8. Xấp xỉ bằng đa thức: Giả sử ta có một loạt số liệu nhận được từ thực nghiệm và muốn xấp xỉ chúng bằng một hàm dạng đa thức theo phương pháp bình phương bé nhất thì ta dùng hàm polyfit(x,y,n) với x,y là các vec tơ chứa các giá trị đo được và n là bậc của đa thức xấp xỉ. Ví dụ: x = [ 1 2 3 4 5 ]; y = [ 5.5 43.1 128 290.7 498.4 ]; p = polyfit(x,y,3) p = ‐0.1917 31.5821 ‐60.3262 35.3400 41
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Chương 1 - Bài 1 (Dạng 2): Tùy theo tham số m khảo sát tính đơn điệu của hàm số
1 p | 277 | 66
-
Bài giảng Đại số 8 chương 2 bài 2: Tính chất cơ bản của phân thức
27 p | 291 | 60
-
Giáo án Đại số 8 chương 2 bài 3: Rút gọn phân thức
11 p | 474 | 42
-
Tuyển tập bài tập Sinh học chọn lọc (Tập 2): Phần 1
119 p | 146 | 28
-
Chương II: ĐƯỜNG THẲNG VÀ MẶT PHẲNG TRONG KHÔNG GIAN QUAN HỆ SONG SONG
12 p | 141 | 16
-
ÔN TẬP CHƯƠNG IV
7 p | 73 | 7
-
ĐỀ THI THỬ NĂM 2010 SỐ 25__Môn lịch sử
1 p | 73 | 6
-
Đề thi tuyển sinh đại học hệ hoàn chỉnh kiến thức đại học năm 2009 - đợt 2- học viện công nghệ bưu chính viễn thông việt nam
2 p | 110 | 5
-
Bài tập giải tích Toán lớp 12: Phần 2
36 p | 98 | 4
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn