Thông tin tài liệu
BỘ MƠN TỐN ỨNG DỤNG - ĐHBK - PHƯƠNG PHÁP TÍNH – BG SINH VIÊN CHƯƠNG HỆ PHƯƠNG TRÌNH TUYẾN TÍNH Ax = b TS NGUYỄN QUỐC LÂN (2/2006) NỘI DUNG - A- CÁC PHƯƠNG PHÁP CHÍNH XÁC 1- PHƯƠNG PHÁP KHỬ GAUSS (PHẦN TỬ TRỤ) 2- PHÂN TÍCH NHÂN TỬ A = LU 3- PHÂN TÍCH CHOLESKY B- CÁC PHƯƠNG PHÁP LẶP 1- LẶP JACOBI 2- LẶP GAUSS - SEIDEL C- SỐ ĐIỀU KIỆN – HỆ ĐIỀU KIỆN XẤU TỔNG QUAN Hệ n phương trình bậc (tuyến tính), n ẩn → Dạng Ax = b: a11 a12 a1n a a22 a2 n , A = 21 an1 an ann Đơn giản: Hệ tam giác b1 b b = 2 , bn x1 x x = = [ x1 xn ] T xn a11 a12 a1n 0 a a2 n 22 ⇒ Giải lùi A= 0 ann Hàng i: hi = [ai1 ai2 … ain]T Biến đổi sơ cấp hàng hi → hi + khj: Nhân hj với k cộng xuống hi (chỉ hi thay đổi) PHƯƠNG PHÁP KHỬ GAUSS - Giải thuật: Biến đổi sơ cấp hàng → A: ∆ → Giải lùi 2 x1 − x2 + x3 = VD: Giải hệ 6 x1 − x2 + 14 x3 = Xây dựng ma trận mở rộng 4 x − x + 30 x = 14 2 − Khử cột với hệ số khử m1j a1 j aij 5 A = [ A | b] = 6 − 14 m1 j = Tổng quát : mij = a11 aii 4 − 30 14 m21 = = 2 − h2 → h2 − 3h1 2 − 0 −1 ⇒ 6 − 14 5 → 2 h3 → h3 − 2h1 − 24 m31 = = 4 − 30 14 12 GIẢI LÙI & PHẦN TỬ TRỤ - −4 =4 −1 2 − h → h − 4h 2 − 0 − 3→ 0 − 4 0 − 24 12 0 Khử cột với hệ số khử: m32 = Giải lùi với hệ tam giác thu được: 2 x1 − x2 + x3 = x3 = 4 = 2 − x2 + x3 = ⇒ x2 = ( − x3 ) ( − 1) = ⇒ x = 3 x = (1 + x − 3x ) = x3 = 1 Điều kiện: Khử cột 1: a11(1) ≠ & Khử cột 2: a22(2) ≠ & Giải lùi: a33(3) ≠ ⇒ Phần tử trụ (pivot) akk ≠ KHỬ GAUSS VỚI LỆNH MAPLE > with(linalg); # Khởi động gói lệnh Đại số tuyến tính > A := matrix(2,3,[2, 3, 4, 1, 2, 3]); # Nhập ma trận > m21 := A[2,1]/A[1,1]; # Tính hệ số khử > A := addrow(A,1,2,–m21) ; # Cộng hàng h2 → h2 – m21h1 > A := swaprow(A,1,2) ; # Nếu cần thiết, đổi hàng h2 ↔ h1 > x := backsup(A) ; # Hệ dạng tam giác trên: Giải lùi > AA := gausselim(A); # Lệnh gộp khử Gauss toàn ma trận VD: Giải hệ x1 − x2 + x3 − x4 = −8 2 x − x + x − x = −20 = −2 x1 + x2 + x3 x1 − x2 + x3 + x4 = KHỬ GAUSS VỚI MA TRẬN “LẺ”: PIVOT ĐƠN VỊ - VD: Giải hệ với phép khử 2.08 x1 − 1.3 x2 = 0.608 Gauss, làm tròn chữ số lẻ) − 0.7 x1 + 2.08 x2 − 1.3 x3 = −0.152 − 0.7 x2 + 2.08 x3 − 1.3 x3 = −0.168 − 0.7 x3 + 2.08 x4 = 1.116 0 1.264 2.08 − 1.3 − 0.7 2.08 − 1.3 − 0.152 ⇒ [ A b] = − 0.7 2.08 − 1.3 − 0.168 0 − 0.7 2.08 1.116 1.006 0.636 ⇒y= 0.593 0.736 THỰC TẾ TÍNH TỐN: VẤN ĐỀ LÀM TRỊN SỐ - VD: Giải hệ máy tính với phép làm trịn chữ có nghĩa 0.003 x1 + 59.14 x2 = 59.17 (E1 ) Nghiệm xác: [10, 1]T 5.291x1 − 6.130 x2 = 46.78 (E ) Quy tắc làm trịn máy tính: Làm trịn chữ số có nghĩa 12,34567 = 1,234567 ⋅101 ≈ 1,235 ⋅101 = 12,35 Trụ khử: a11 = 0.003 ≠ ⇒ m21 = a21 = 1763,67 ≈ 1764 a11 Biến đổi cột một: (E2) → (E2) – m21(E1) 0.003 x1 + 59.14 x2 = 59.17 − 104300 x2 = −104400 x2 = 1.001 ⇒ : Taïi ??? x1 = −10 PHÂN TÍCH NHÂN TỬ (MATRIX FACTORIZATIONS) - Ma trận vuông A phân tích thành dạng LU ⇔ 1 * A= * * * * 0 * 0 * * 0 * ⋅ 0 0 L * * * * Hệ Ax = b ⇔ (LU)x = b ⇔ * Ux = y (1) * : hệ tam giác Ly = b ( ) * U Giải hệ đầu ⇔ Giải hệ ∆: Ly = b (2) tìm y; Ux = y (1) tìm x Nhân A x b Nhân U y Nhân L VÍ DỤ - Giả sử ma trận A phân tích thành dạng LU sau: 2 −7 −2 − − 1 = A= − 5 − −4 − − 12 − 0 0 3 − − 0 − − 1 ⋅ 0 −1 1 0 0 − 1 Sử dụng phân tích LU giải hệ Ax = b = [–9 11]T Giải Ly = b tìm y Giải Ux = y tìm x TỔNG QUAN PHƯƠNG PHÁP LẶP - Chương 1: Phương pháp lặp đơn với phương trình f(x) = x = ϕ ( x) f ( x) = ⇔ ⇒ xn +1 = ϕ ( xn ) ϕ ( x) − ϕ ( y ) ≤ q x − y : ϕ ' ( x ) ≤ q < Hệ Ax = b ⇔ x = Tx + c = ϕ(x), T: ma trận, c: vectơ Đkiện: ϕ(x) – ϕ(y)≤ qx – y ⇒ Dãy lặp: x(n+1) = Tx(n) + c Chuẩn vectơ, ma trận: x = [x1, x2 … xn]T ∈ Rn, A = [aij ] n x ∞ = max{ xi } ⇒ A ∞ = max ∑ aij 1≤i ≤ n 1≤i ≤ n j =1 n n x = ∑ xi ⇒ A = max ∑ aij 1≤ j ≤ n i =1 i =1 VÍ DỤ - Tính chuẩn vectơ ma trận 1 − x∞= − ⇒ − 3 ⇒ A ∞ = 12 x= A= x = A = 13 − 2 − − 1 Vectơ số hai vectơ sau xấp xỉ tốt theo chuẩn ∞, chuẩn nghiệm hệ phương trình x ( 1) − 0.1 0.3 = − 7.4 , x ( ) = − 6.8 5.2 4.7 x1 + x2 + 3x3 = 2 x1 + 3x2 + x3 = −1 3 x + x + x = ( 2) ∞ x ≈ x → x ( 1) ≈ x Tch chuẩn vectơ, chuẩn ma trận: Chuẩn tích ≤ tích chuẩn Ax ≤ A ⋅ x ⇒ ϕ ( x) − ϕ ( y ) = T ( x − y) ≤ T ⋅ x − y : T < LẶP JACOBI Với vectơ x(0) = [0, 0, 0]T, tìm vectơ nghiệm xấp xỉ x(k) phép lặp Jacobi với hệ sau Dừng: x(k) “giống” x(k-1) (khoảng 0.3) 10 x1 + x2 + x3 = 7.5 − x1 + 10 x2 − x3 = − x + x + x = −2.5 So với nghiệm α = [0.5, 1, -0.5]T 1/ Rút x đường chéo ⇒ Đưa dạng x = Tx + c x = − x − x + 7.5 = −0.3x − 0.1x + 0.75 3 10 10 10 ⇔ x = Tx + c x2 = x1 + x3 + = 0.3x1 + 0.1x3 + 0.9 10 10 10 2.5 x3 = x1 − x2 − = 0.125 x1 − 0.25 x2 − 0.3125 8 CÔNG THỨC LẶP JACOBI - 0 −3 −1 10 10 0.75 3 , T = max , 3 = < 1, c = 0.9 T= ∞ 10 10 10 10 − 0.3125 1 −2 ( ( x1(1) = −0.3 x20 ) − 0.1x30 ) + 0.75 = 0.75 (1) ( (0) (1) x2 = 0.3 x1( ) + 0.1x30 ) + 0.9 = 0.9 2/ Từ x tính x : x (1) = 0.125 x ( ) − 0.25 x ( ) − 0.3125 = − 0.3125 ( ( ( x1 k +1) = −0.3 x2k ) − 0.1x3k ) + 0.75 ( k +1) ( ( (k) (k+1) = 0.3 x1 k ) + 0.1x3k ) + 0.9 Tổng quát: x ⇒ x : x2 ( k +1) ( ( = 0.125 x1 k ) − 0.25 x2k ) − 0.3125 x3 (k) Sai số: Như lặp đơn với q = ||T||∞ : x − x * ∞ ≤ q x ( 1) − x ( ) 1− q ∞ LẶP JACOBI KHÔNG BIẾN ĐỔI MA TRẬN A - − x2 − x3 + 7.5 10 x1 + x2 + x3 = 7.5 Đ / chéo 10 x1 = ⇔ 10 x2 = 3x1 + x3 + Hệ Ax = b: − x1 + 10 x2 − x3 = 8x = x − 2x − x + x + x = −2.5 − 2.5 1 2 ( ( 10 x1( k +1) = − x2k ) − x3k ) + 7.5 : Giữ đ/chéo vế trái ( k +1) ( 10 x2 = x1( k ) + x3k ) + (→ x(k+1)) ; Chuyển số hạng x ( k +1) = x ( k ) − x ( k ) − 2.5 lại sang vế phải (→ x(k)) ( ( 10 x1( k +1) + x2k ) + x3k ) = 7.5 : Thay x(k) vào số hạng (k ) ( ( + 10 x2k +1) − x3k ) = ngồi đường chéo − x1 ( ( − x1( k ) + x2k ) + x3k +1) = − 2.5 Xem x(k+1) ẩn Giải→x(k+1) TÍNH TỐN & KẾT QUẢ LẶP JACOBI -( ( 10 x1( k +1) = −3 x2k ) − x3k ) + 7.5 10 x1 + x2 + x3 = 7.5 ( k +1) ( Heä : − x1 + 10 x2 − x3 = ⇔ Laëp Jacobi : 10 x2 = 3x1( k ) + x3k ) + − x + x + x = −2.5 ( k +1) ( x3 = x1( k ) − x2k ) − 2.5 ( ( ( k +1) − x2k ) − x3k ) + 7.5 k = x1 10 x1(k) 0.0 0.75 (k ) (k ) ( k +1) x1 + x3 + x2(k) 0.0 0.9 x2 = 10 x3(k) 0.0 –0.3125 (k ) (k ) ( k +1) x1 − x2 − 2.5 x3 = ||x(k)-x(k-1)||∞ 0.9 Ưu điểm Lặp Jacobi: Giải hệ “thưa” (chứa nhiều số 0) ĐK đủ : T ∞ < ⇔ M/trận đ/c trội nghiêm ngặt: aii > n ∑ j =1, j ≠ i aij ∀ i LẶP GAUSS – SEIDEL - Tương tự lặp Jacobi với thơng tin cập nhật hố ( ( ( k +1) − x2k ) − x3k ) + 7.5 = Dùng x(k) x1 10 10 x1 + x2 + x3 = 7.5 ( Laëp để tính ( k +1) x1( k ) + x3k ) + Heä : − x1 + 10 x2 − x3 = ⇔ x2 = Jacobi 10 giá trị − x + x + x = −2.5 ( ( k +1) x1( k ) − x2k ) − 2.5 x(k+1) x3 = ( ( ( k +1) − x2k ) − x3k ) + 7.5 = x1 10 x1 (mới): dùng x2 (cũ), x3 (cũ) ( Gauss ( k +1) x1( k +1) + x3k ) + ⇒ x2 = x2 (mới): dùng x1 (mới), x3 (cũ) Seidel 10 ( ( k +1) x1( k +1) − x2k +1) − 2.5 x3 (mới): dùng x1 (mới), x2 (mới) x3 = LẶP GAUSS – SEIDEL: SƠ ĐỒ TÁCH MA TRẬN Trình bày dạng khác: Xem x(k+1) ẩn chuyển sang vế trái ( ( 10 x1( k +1) = −3 x2k ) − x3k ) + 7.5 10 x1 + x2 + x3 = 7.5 ( k +1) ( k +1) ( = x3k ) + − x1 + 10 x2 − x3 = ⇔ − x1 + 10 x2 − x + x + x = −2.5 ( ( − x1( k +1) + x2k +1) + x3k +1) = − 2.5 x( 0) k = → b( k ) k = k +1 Giải hệ → x ( k +1) Gauss - Seidel: Biết x(k) → Tính vế phải b(k) → Giải hệ x(k+1) LẶP GAUSS – SEIDEL: VÍ DỤ TÁCH MA TRẬN - Xét ví dụ lặp Gauss – Seidel, x(0) = [0, 0, 0]T Công thức lặp: ( ( 10 x1( k +1) = −3 x2k ) − x3k ) + 7.5 ( ( − x1( k +1) + 10 x2k +1) = x3k ) + ( ( − x1( k +1) + x2k +1) + x3k +1) = − 2.5 k x x1(k) b x b x 0.0 x3(k) 0.0 x2(k) → b( k ) 0.0 ||x(k)-x(k-1)||∞ Phép lặp ⇔ Thay hệ Ax = b giải liên tiếp nhiều hệ ∆ b TỔNG KẾT LẶP JACOBI & GAUSS – SEIDEL - 10 x1 + x2 + x3 = 7.5 − x1 + 10 x2 − x3 = − x + x + x = −2.5 x = Tx + c Lặp Jacobi − x2 − x3 + 7.5 10 x1 = Lặp Gauss– Seidel 10 x2 = x1 + x3 + 8x = x − x − 2.5 ( ( 10 x1( k +1) = − x2k ) − x3k ) + 7.5 ( k +1) ( 10 x2 = x1( k ) + x3k ) + ( ( x3k +1) = x1( k ) − x2k ) − 2.5 ( ( 10 x1( k +1) = − x2k ) − x3k ) + 7.5 ( k +1) ( 10 x2 − x1( k +1) = x3k ) + ( ( x3k +1) − x1( k +1) + x2k +1) = − 2.5 HỆ PHƯƠNG TRÌNH BỊ NHIỄU Minh hoạ: Giải hệ phương trình nhận xét x + y = 2 x + 3.9 y = Hệ “gần” nhau, nghiệm x + y = 2 x + 4.1 y = det Ai xi = ? det A “xa” nhau! Do detA ≈ 0: x + 2y = 2 x + 3.9 y = 2 x + 4.1 y = VÍ DỤ WILSON: Ax = b, detA = 10 7 Ax = b : A = 8 7 10 7 32 23 5 ,b= ⇒ x = 9 33 31 10 1 1 1 1 32.1 22.9 ⇒ x + δx = A( x + δx ) = b + δb : b + δb = 33.1 30.9 8.1 7.2 10 7.08 5.04 ⇒ ( A + ∆A) + ∆x = b : A + ∆A = x 5.98 9.89 x' 6.99 4.99 9.98 SỐ ĐIỀU KIỆN CỦA HỆ Ax = b •“Nhiễu” vế phải A(x + δx) = b + δb ⇒ •“Nhiễu” vế trái (A + ∆A)(x + ∆x) = b ⇒ δx ≤ x { A A } −1 δb ; b ∆x ≤ x + ∆x δx δb >> x b ∆x ∆A >> x + ∆x A + ∆A { A A } −1 ∆A A + ∆A Số điều kiện: κ ∞ (A) = ||A||∞ ||A–1||∞ đặc trưng cho độ “nhạy cảm” nghiệm hệ Ax = b thay đổi dù nhỏ b A Hệ điều kiện xấu (ill – conditionned): κ ∞ (A) >> VÍ DỤ - VD Wilson: 10 7 A= 8 7 10 7 5 9 10 10 − 6 25 − 41 − 41 68 − 17 10 ⇒ A−1 = − 3 10 − 17 −6 10 − 2 VD: Tính số điều kiện theo chuẩn vô κ ∞ (A) ma trận 1.003 58.09 A= 5.550 321.8 PHƯƠNG PHÁP TÌM MA TRẬN NGƯỢC - x y Tính ma trận ngược A = = [ c1 z t −1 c2 ] Giải hệ phương trình A.c1 = e1 = [1 0]T (vectơ đơn vị thứ nhất) máy tính bỏ túi ⇒ Cột ma trận ngược Vẫn chế độ giải hệ phương trình, giải tiếp hệ A.c2 = e2 = [0 1]T (vectơ đơn vị thứ nhì) ⇒ Cột A-1 Trường hợp ma trận cấp 3: Giải hệ Ac1 = e1, Ac2 = e2, Ac3 = e3 với e1, e2, e3 vectơ đơn vị ⇒ Tìm vectơ nghiệm c1, c2, c3: cột ma trận ngược A–1 cần tìm ... ? ?2? ?? VD: A = 1 2? ?? 0 − i=1 a21 b21 = b11 b 22 = a 22 − b21 j=3 i=3 0 0 b11 = a11 j =2 i =2 ⇒B= a 32 − b31b21 b 32 = b 22 2 b33 = a33 − b31 − b 32 j=3 a31 b31 = b11 TỔNG QUAN PHƯƠNG... Đại số tuyến tính > A := matrix (2, 3, [2, 3, 4, 1, 2, 3]); # Nhập ma trận > m21 := A [2, 1]/A[1,1]; # Tính hệ số khử > A := addrow(A,1 ,2, –m21) ; # Cộng hàng h2 → h2 – m21h1 > A := swaprow(A,1 ,2) ;... ? ?2 − 3 VD: A = 6 − 14 4 − 30 j = 1: j = 2: i = u11 = a11 a ? ?21 = 21 i =2 u11 i=1 u 12 = a 12 1 0 ⇒ L = 0 ,U = 1 0 i = 31 = a31 u11 i = u 22 = a 22 − ? ?21 u12
Ngày đăng: 04/07/2014, 14:46
Xem thêm: Bài giảng phương pháp tính chương 2 hệ phương trình tuyến tính ax =b TS nguyễn quốc lân, Bài giảng phương pháp tính chương 2 hệ phương trình tuyến tính ax =b TS nguyễn quốc lân