Giáo trình Matlab - Chương 2: Đạ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:

pdf13 trang | Chuyên mục: MATLAB | Chia sẻ: yen2110 | Lượt xem: 740 | Lượt tải: 0download
Tóm tắt nội dung Giáo trình Matlab - Chương 2: Đại số tuyến tính, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
.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.,,.y,y,t(fy
....
yy
yy
n21n
32
21
=′
=′
=′
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 
1233
32
21
yyy3y
yy
yy
+=′
=′
=′
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à: 
    e(t) = RC CC udt
du +  
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 < 0 ‐ chọn đường chéo thứ k dưới đường chéo chính 
  a = 
         1     2     3 
         5     6     7 
         8     9     1 
  v = diag(a,1) 
v = 
2 
         7 
  a = diag(v) nếu v  là vec  tơ  thì a  là ma  trận vuông với v  là đường chéo 
chính 
  b = triu(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  trên  đường  chéo  chính  và phía  trên  đường  chéo  chính. Các 
phần tử khác bằng 0.   
  a = [1 2 3;4 5 6;7 8 9] 
38
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

File đính kèm:

  • pdfgiao_trinh_matlab_chuong_2_dai_so_tuyen_tinh.pdf