intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Chương 2: Đại số tuyến tính

Chia sẻ: Nguyen Huu Hao Hao | Ngày: | Loại File: PDF | Số trang:0

136
lượt xem
45
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu tham khảo về đại số tuyến tính

Chủ đề:
Lưu

Nội dung Text: Chương 2: Đại số tuyến tính

  1. 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
  2. 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
  3. 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
  4. 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
  5. §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
  6. 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
  7.   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
  8.    [ 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
  9. 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
  10.      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 
  11. 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
  12. Để 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
  13.   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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2