Tài liệu CHƯƠNG 3: HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH   §1. KHÁI NIỆM CHUNG    ppt

75 616 4
Tài liệu CHƯƠNG 3: HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH   §1. KHÁI NIỆM CHUNG    ppt

Đ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

CHƯƠNG 3: HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH   §1. KHÁI NIỆM CHUNG    Trong  chương  này  chúng  ta  sẽ  xét  các  phương  pháp  số  để  giải  các  phương trình đại số tuyến tính dạng:  ⎧ a11x1 + a12 x + ⋅ ⋅ ⋅ + a1n x n = b1 ⎪ a x + a x + ⋅⋅ ⋅ + a x = b ⎪ 21 22 2n n               ⎨ ⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⎪ ⎪a n1x1 + a n2 x + ⋅ ⋅ ⋅ + a nn x n = b n ⎩ Các phương trình này có thể viết gọn dưới dạng:    [A] [x] = [b]                    Trong đó:  ⎡ b1 ⎤ ⎡ x1 ⎤ ⎡ a11 a12 ⋅⋅⋅ a1n ⎤ ⎢b ⎥ ⎢x ⎥ ⎢a a 22 ⋅⋅⋅ a 2n ⎥ ⎢ 2⎥    ⎢ 21 ⎥    [ A] = [ x] = ⎢ ⎥   [ b] = ⎢⋅⋅⋅⎥ ⎢⋅ ⋅ ⋅⎥ ⎢ ⋅⋅⋅ ⋅⋅⋅ ⋅⋅⋅ ⋅ ⋅⋅ ⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎥ ⎣xn ⎦ ⎣a n1 a n2 ⋅⋅⋅ a nn ⎦ ⎣ bn ⎦ Ta sẽ xét 3 trường hợp:   số phương trình bằng số ẩn số nên ma trận [A] là ma trận vng     số phương trình nhỏ hơn số ẩn số    số phương trình lớn hơn số ẩn số     §2. NGHIỆM CỦA HỆ PHƯƠNG TRÌNH ĐẠI SỐ TUYẾN TÍNH  1. Trường hợp khơng suy biến: Khi số phương trình m bằng số ẩn số n, ma  trận [A] vng và ta có:                  (1)  [ x ] = [ A ]−1 [ b]     nếu ma trận A không suy biến, nghĩa là định thức của ma trận khác không.  Các lệnh MATLAB để giải hệ là (ctsys.m):      clc  A = [1 2;3 4];  b = [‐1;‐1];  x = A^‐1*b  %x = inv(A)*b    2. Trường hợp số phương trình ít hơn số ẩn(nghiệm cực tiểu chuẩn): Nếu số  135 phương trình m ít hơn số ẩn số n thì nghiệm khơng duy nhất. Giả sử m hàng  của ma trận hệ số [A] là độc lập thì vec tơ n chiều có thể phân tích thành hai  thành phần:                (2)    [ x] = [ x]+ + [ x]−     Trong đó một ma trận là ma trận khơng gian hàng của ma trận [A] và được  viết dưới dạng tổ hợp của:                (3)  [ x]+ = [ A]T [ α ]     và ma trận kia là ma trận không gian không sao cho:                    (4)  [ A ][ x]− =    Như vậy:    [ A ]([ x ]+ + [ x]− ) = [ A ][ A ]T [α ] + [ A ][ x]− = [ A ][ A ]T [α ] = [ b]     (5)  Do [A][A]T là ma trận khơng suy biến m × m có được bằng cách nhân ma trận  m × n với ma trận n × m nên ta có thể giải phương trình đối với [α] để có:   −1 [ α ]0 = ⎡ AAT ⎤ [ b]   ⎣ ⎦               (6)  [ α ]0+ = [ A ]T [α ]0 = [ A ]T ⎡ AAT ⎤ [ b]     ⎣ ⎦         (7)  Thay (6) vào (3) ta có:    −1 Điều này thoả mãn phương trình [A][x] = [b]. Tuy nhiên nó khơng là nghiệm  duy  nhất  vì  nếu  thêm  bất  kì  một  vec  tơ  [x]  thoả  mãn  (4)  thì  nó  sẽ  cũng  là  nghiệm. MATLAB dùng lệnh pinv để giải hệ (ctpinv.m)      A = [1 2];  b = 3;  x = pinv(A)*b    3. Trường hợp số phương trình nhiều hơn số ẩn(nghiệm sai số bình phương  bé nhất): Nếu số phương trình m lớn hơn số ẩn số n thì khơng tồn tại nghiệm  thoả mãn đầy đủ các phương trình. Ta cố gắng tìm vec tơ nghiệm có sai số [e]  nhỏ nhất.                (8)    [ e ] = [ A][ x] − [ b]     Vậy thì bài tiám của ta là cực tiểu hố hàm:  J = 0.5 e = 0.5 [ A ][ x ] − [ b ] = 0.5 ⎡[ A ][ x ] − [ b]⎤ ⎡[ A ][ x ] − [ b ]⎤   (9)  ⎣ ⎦ ⎣ ⎦ Ta tìm cực tiểu của J bằng cách cho đạo hàm theo x của (9) bằng khơng.  −1 ∂ T J = [ A ] ⎡[ A ][ x ] − [ b ]⎤ = (10)    [ x ]0 = ⎡[ A ]T [ A ]⎤ [ A ]T [ b]    ⎣ ⎦ ⎣ ⎦ ∂x   2 T 136 Chú  ý  là  ma  trận  [A]  có  số  hàng  lớn  hơn  số  cột  cho  nên  khơng  nghịch  đảo  được. Nghiệm sai số bình phương bé nhất tìm được nhớ dùng lệnh  pinv hay  phép chia trái (ctover.m):       A = [1; 2];   b = [2.1; 3.9];  x = pinv(A)*b  x = A\b  x = (Aʹ*A)^‐1*Aʹ*b    Để  tiện  dùng  ta  viết  hàm  pttt()  để  giải  hệ  phương  trình  trong  cả  3  trường hợp trên    function x = pttt(A, B)  %Ham nay tim nghiem cua pt Ax = B  [M, N] = size(A);  if size(B,1) ~= M      error(ʹKich thuoc A va B trong pttt() khong bang nhau!ʹ)  end  if M == N      x = A^‐1*B;   elseif M    2 i i =1 i =1 n Nên  phương  trình  ∑ a i ,jz j =   có  nghiệm  khơng  tầm  thường.  Điều  này  mâu  j=1 thuẫn với điều kiện det(A)  ≠ 0. Như vậy zn+1  ≠ 0. Từ điều kiện un+1 trực giao  với ai ta có:  n   (u n +1 ,a i ) = ∑ a i ,jz j + a i ,n +1z n +1 =   j=1 Chia hai vế cho zn+1 ta được  ∑ n   j=1 ⎛ zj ⎞ a i ,j ⎜ ⎟ + a i ,n +1 =   z n +1 ⎠ ⎝ Đẳng thức này chứng tỏ  xi = zi  là nghiệm của (1). Thuật tốn FOM cụ thể  z n +1 gồm các bước:    ‐ Cho [X0], tính r0 = [B],  β = r0 ,  v1 = r0 / r0   ‐ Lặp cho đến khi hội tụ  • wj = [A]vj  • trực giao hố Gram ‐ Schmidt  •  h j+1,j = w j       • nếu hj+1,j = 0 thì m = j, kết thúc lặp  ‐  y m = H −1 (β e1 )   m ‐ xm = x0 + Vmym    Ta xây dựng hàm fom() để thực hiện thuật toán trên:  195 function x = fom(a, b, x0, maxiter, tol)  %Giai he pt bang thuat toan FOM  i = 1;  x = x0(:);  r = b ‐ a*x;  rnorm = norm(r);  rho = rnorm;  v (:,i) = r/rho;  while ((rnorm/rho > tol) & (i 

Ngày đăng: 23/01/2014, 06:20

Từ khóa liên quan

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

Tài liệu liên quan