PHƯƠNG PHÁP lặp đơn và PHƯƠNG PHÁP JACOBI GIẢI gần ĐÚNG hệ PHƯƠNG TRÌNH TUYẾN TÍNH

19 315 0
PHƯƠNG PHÁP lặp đơn và PHƯƠNG PHÁP JACOBI GIẢI gần ĐÚNG hệ PHƯƠNG TRÌNH TUYẾN TÍNH

Đ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

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN TOÁN ỨNG DỤNG VÀ TIN HỌC ———————o0o——————– BÁO CÁO MÔN HỌC CHỦ ĐỀ 11: PHƯƠNG PHÁP LẶP ĐƠN VÀ PHƯƠNG PHÁP JACOBI GIẢI GẦN ĐÚNG HỆ PHƯƠNG TRÌNH TUYẾN TÍNH Giảng viên hướng dẫn: TS: Hà Thị Ngọc Yến Sinh viên: Nguyễn Thị Ngọc Lan MSSV: 20185372 HÀ NỘI, 1/2022 Mục lục Lời nói đầu ii Kiến thức chuẩn bị iii 1.1 Chuẩn ma trận vec tơ iii 1.2 Giới hạn dãy véc tơ iv 1.3 Sự không ổn định hệ phương trình đại số tuyến tính iv Phương pháp lặp đơn 2.1 Bài toán 2.2 Ý tưởng phương pháp 2.3 Sự hội tụ phương pháp 2.4 Công thức sai số 2.5 Thuật toán 2.6 Ví dụ Phương pháp Jacobi 3.1 Ma trận chéo trội hàng ma trận chéo trội cột 3.2 Nội dung phương pháp 3.3 Công thức sai số 3.4 Thuật toán 3.5 Ví dụ i v v v vi vi vii viii xi xi xii xiii xiv xvi Lời nói đầu Giải tích số mơn học nghiên cứu phương pháp giải gần toán thực tế mơ hình hóa ngơn ngữ tốn học Để có lời giải cho toán cần phải có dư kiện tốn, xây dựng mơ hình tốn, tìm thuật tốn hiệu cuối xây dụng chương trình máy tính cho tiết kiệm thời gian nhớ Tuy nhiên thời gian xử lý số liệu không tránh khỏi sai số dù nhỏ ảnh hưởng trực tiếp đến q trình tính tốn Chính phải sử dụng thuật toán hữu hiệu để giảm thiểu sai số đồng thời thuận lợi cho cơng việc lập trình tiết kiệm số lượng phép tính thời gian tính tốn Phương pháp số có ý nghĩa lớn đại số tuyến tính, đặc biệt việc giải hệ phương trình tuyến tính Khi số phương trình lớn, phương pháp truyền thống gặp nhiều khó khăn, khơng thể giải cách xác mà đưa lời giải gần cho toán Qua báo cáo này, em xin trình bày phương pháp giải gần hệ phương trình tuyến tính: “Phương pháp lặp đơn lặp Jacobi” Bài báo cáo gồm nội dung: Kiến thức chuẩn bị Phương pháp lặp đơn gồm nội dung phương pháp, cơng thức sai số, thuật tốn Phương pháp Jacobi gồm nội dung phương pháp, công thức sai số, thuật tốn Em xin trân thành cảm ơn Hà Thị Ngọc Yến tận tình hướng dẫn giúp đỡ em hoàn thành báo báo ii Chương Kiến thức chuẩn bị 1.1 a Chuẩn ma trận vec tơ Chuẩn ma trận Định nghĩa 1.1.1 Chuẩn ma trận cấp m × n: A = (aij ) số thực khơng âm kí hiệu thỏa mãn điều kiện sau: A > (với A = ⇔ A = ) αA = |α| A , α số thực A + B ≤ A + B Trong phạm vi báo cáo, ta chọn hai loại chuẩn thường dùng sau: Chuẩn cột: m A |aij | = max 1≤j≤n Chuẩn hàng: i=1 n A  ∞ |aij | = max 1≤i≤m j=1  −2   , ta tính chuẩn A theo định nghĩa  Ví dụ Cho A =  −1 sau: A = max (5 + + 2; + + 1; + + 7) = max (8; 7; 11) = 11 A ∞ = max (5 + + 1; + + 3; + + 7) = max (8; 8; 10) = 10 iii Giải tích số b Phương pháp lặp đơn lặp Jacobi Chuẩn véc tơ Vecto ma trận có n hàng cột, vecto x = (x1 , x2 , , xn )T ta có hai chuẩn sau: n x |xi | = i=1 x 1.2 ∞ = max |xi | i Giới hạn dãy véc tơ (n) ∈ n Dãy vecto Định lí 1.2.1 Xét dãy vecto (X (n) )∞ n với X gọi hội tụ vecto X n → +∞ Xn − X → n → +∞ (hội tụ theo chuẩn) Định lí 1.2.2 Để dãy vecto (X (n) )∞ n hội tụ vecto X n → +∞ điều (n) kiện cần đủ dãy (xk ) hội tụ xk ,∀k = 1, 2, , n (hội tụ theo tọa độ) Ví dụ Xét ba dãy v = 0; 12 ; 1.3 k ; k 2k+1 ; k2 ta dãy vecto hội tụ đến Sự không ổn định hệ phương trình đại số tuyến tính Định nghĩa 1.3.1 Đối với hệ PTTT, thay đổi nhỏ hệ số dẫn đến thay đổi lớn nghiệm hệ khơng ổn định Ngược lại hệ ổn định Ví dụ Cho hệ Hệ 2x + y = có nghiệm x = 0.5, y = 2x + 1.01y = 2.01 2x + y = có nghiệm x = 5, y = −8 2.01x + 1y = 2.05 Nhận xét 1.3.2 Xét hệ AX = b , A ma trận vuông Ta gọi số điều kiện ma trận không suy biến A Cond (A) = A A−1 ❼ Cond (A) gần với 1: Hệ ổn định ❼ Cond (A) lớn: hệ không ổn định Nếu A suy biến Cond (A) xem vô hạn Nguyễn Thị Ngọc Lan 20185372 iv Chương Phương pháp lặp đơn 2.1 1.1 Chuẩn ma trận vec tơ iii 1.2 Giới hạn dãy véc tơ iv 1.3 Sự khơng ổn định hệ phương trình đại số tuyến tính iv Bài tốn Giải hệ phương trình tuyến tính Ax = b (2.1) Trong A ∈ Rn×n , b ∈ Rn 2.2 Ý tưởng phương pháp Đưa phương trình (2.1) dạng x = Bx + d = φ (x) (2.2) Trong ma trận B vecto d xây dựng từ A b Để thực phép lặp, ta chọn vecto ban đầu x0 sau tính xi , i = 1, 2, theo công thức lặp sau: x1 = φ x0 = Bx0 + d x2 = φ x1 = Bx1 + d xk = φ xk−1 = Bxk−1 + d Vecto xk gọi vecto lặp thứ k v (2.3) Giải tích số 2.3 Phương pháp lặp đơn lặp Jacobi Sự hội tụ phương pháp Định lí 2.3.1 Nếu phép lặp (2.3) hội tụ, tức tồn x∗ cho x∗ = lim xk k→∞ x∗ nghiệm (2.2) (như nghiệm 2.1) Chứng minh: Từ xk = φ xk−1 , với lưu ý hàm φ (x) liên tục, ta có: lim xk = lim φ xk−1 = φ n→∞ 2.4 n→∞ lim xk−1 ⇒ x∗ = φ (x∗ ) n→∞ Cơng thức sai số Định lí 2.4.1 Nếu B ≤ q < với chuẩn đó, (2.3) hội tụ đến nghiệm phương trình theo hai đánh giá: qk ❼ Công thức tiên nghiệm: xk − x∗ ≤ 1−q x1 − x0 q ❼ Công thức hậu nghiệm: xk − x∗ ≤ 1−q xk − xk−1 Chứng minh: * Chứng minh hệ có nghiệm nhất: Xét hệ ( d = 0) x = Bx: Ta có x = Bx ≤ B x Theo giả thiết: B ≤q e do: x(k-1)=xk ; x(k) = phi(x(k-1)) ❼ Bước 5: kết luận x* = xk nghiệm hệ phương trình d Chương trình input: B, d, e output: x* Kiểm tra B If kt(B) = -1: Kết luận ma trận B không chéo trội, sử dụng phương pháp lặp đơn Else: Sử dụng gói lặp đơn tính x* Kết luận x* nghiệm hệ phương trình 2.6 Ví dụ Ví dụ 1: Áp dụng phương pháp lặp đơn giải pt x = Bx+d Trong đó:  0.01 −0.06 0.02 0.03 0.02    3  −0.03 −0.02 0.05 −0.04 0.01          B =  −0.01 0.02 −0.03 0.01 0.1  , d =        0.02 0.03 0.04 −0.01 0.05  5 −0.02 0.01 0.05 Với sai số e = 10e-10 Hướng dẫn sử dụng code: Nguyễn Thị Ngọc Lan 20185372 viii −0.1 0.04 Giải tích số Phương pháp lặp đơn lặp Jacobi file input ma trận cấp n x (n+1) Trong n cột biễn diễn ma trận B, cột cuối biểu diễn vecto d output: Chương trình chạy với số lần lặp 9, chuan(B) = 0.22 Ví dụ 2:  0.1 0.6 0.29        B =  −0.01 0.02 0.03  , d =   0.1 0.1 Khi chuan(B) gần 1, số lần lặp tăng lên output: Nguyễn Thị Ngọc Lan 20185372 ix Giải tích số Nguyễn Thị Ngọc Lan 20185372 Phương pháp lặp đơn lặp Jacobi x Chương Phương pháp Jacobi 3.1 2.1 Bài toán v 2.2 Ý tưởng phương pháp v 2.3 Sự hội tụ phương pháp vi 2.4 Công thức sai số vi 2.5 Thuật toán vii 2.6 Ví dụ viii Ma trận chéo trội hàng ma trận chéo trội cột Định nghĩa 3.1.1 Ma trận A = (aij )n gọi ma trận chéo trội hàng giá trị tuyết đối phần tử nằm đường chéo lớn tổng trị tuyệt đối phần tử lại nằm hàng, tức: n |aii | > |aij | (3.1) j=1,j=i Ma trận A = (aij )n gọi ma trận chéo trội hàng giá trị tuyết đối phần tử nằm đường chéo lớn tổng trị tuyệt đối phần tử lại nằm hàng, tức: n |aii | > |aij | i=1,i=j xi (3.2) Giải tích số 3.2 Phương pháp lặp đơn lặp Jacobi Nội dung phương pháp Đưa hệ phương trình Ax = b dạng x = Bx + d A ma trận chéo trội hàng a Đặt D = diag (aii ) ; T = D−1 = diag aii    x1 a11 a12 a1n     a  21 a22 a2n   x2  Ta viết lại hệ phương trình dạng:       xn an1 an2 ann     =    b1  b2     bn Nhân vào hai vế ma trận T ta có:  1/a11       a11 a12 a1n 1/a22       a21 a22 a2n    x2  0 1/ann 1/a22     0 1/ann  a21  ⇒  a.22  an1 ann a12 a11 an2 ann a1n a11 a2n a22   xn  b1 b2     bn      x2   b1 a11 b2 a22 xn bn ann  x1     an1 an2 ann    1/a11   =    x1      =        Viết gọn lại ta có: T Ax = T b Tách ma trận T A thành ma trận đơn vị cộng với phần lại: T A = I + (T A − I) ⇒ x = (I − T A) x + T b = Bx + d Suy   − a21  a22  B= n1 − aann 12 − aa11 n2 − aann − aa1n 11   − aa2n 22   b1 a11 b2 a22        , d =    bn ann n Từ điều kiện (3.1) ta rút kết luận B Nguyễn Thị Ngọc Lan 20185372 xii ∞  = max i=1,n j=1,j=i aij aii < Suy ln Giải tích số Phương pháp lặp đơn lặp Jacobi tồn q: B ≤ q < A ma trận chéo trội cột b Nhân ma trận T từ bên phải, ta có: AT Dx = b ⇔ AT y = b (với y = Dx ) AT = I + (AT − I) ⇒ y = (I − AT ) y + b = B1 y + b Vậy ta nhận hệ phương trình y = B1 y + b (3.3) Trong đó:     a12 a1n  − a21  B1 =  a11  − a22 − ann − aan2 − aan1 11 22 2n − aann b1     ,b =    b2     bn n Từ điều kiện (3.2): B1 aij aii = max j=1,n j=1,j=i m[i] for all i ∈ (1, n)): return kt(A)= else: m = sum(abs(aij)) for i = to n for all i ∈ (1, n): If 2abs(ajj) > m[j]): return kt(A) = else: return kt(A) = -1 Nguyễn Thị Ngọc Lan 20185372 xiv Giải tích số b Phương pháp lặp đơn lặp Jacobi Gói B: tính chuẩn input: kt(A), B, x output: chuan(B), chuan(x) If kt(A)=0: chuan(B) := chuan_vc(B) chuan(v) := chuan_vc(v) If kt(A)=1: chuan(B) := chuan_1(B) chuan(v) := chuan_1(v) c Gói C: xác định ma trận B vecto d Input: A, b Output: B, d ❼ Bước 1: Xác định B for i=1 to n for j=1 to n if i==j: bij:=0 else: bij:=-(aij)/(aii) ❼ Bước 2: xác định d for i=1 to n: d[i] := b[i]/aii d Gói D: gói lặp trình e Chương trình Input: A, b, e Output: x* kiểm tra A If kt(A) == -1: kết luận: ma trận A không chéo trội Else: If kt(A) == 0: Nguyễn Thị Ngọc Lan 20185372 xv Giải tích số Phương pháp lặp đơn lặp Jacobi Sử dụng gói C, tính B,d Eps:=e(1-chuan(B))/chuan(B) If kt(A) == 1: Tính chuanB1 chuanT, chuanD Sử dụng gói C, tính B, d Eps := e*(1-chuanB1)/( chuanB1*chuanT*chuanD) Sử dụng gói lặp tính lapdon(B,d,eps) 3.5 Ví dụ Ví dụ  3: Áp dụng phương  pháp  lặp đơn giải hệ phương trình Ax=b Trong đó: 10     A =  10  , b =  12  1 10 với sai số e = 10e-10 Hướng dẫn sử dụng chương trình: Nhập liệu từ file input file input ma trận cấp n x (n+1) Trong n cột đầu biểu diễn ma trận A, cột cuối biểu diễn vecto b output: Chương trình chạy trường hợp A ma trận chéo trội cột với số bước Nguyễn Thị Ngọc Lan 20185372 xvi Giải tích số Phương pháp lặp đơn lặp Jacobi    10      lặp 26, chuan(B1) = 0.6 cột Khi A =  10  , b =  12  1 10 output: Chương trình chạy trường hợp A ma trận chéo trội hàng với số bước lặp 17, chuan(B) = 0.4  20   10      Khi A =  10  , b =  12  1 10 output: Nguyễn Thị Ngọc Lan 20185372 xvii Giải tích số Phương pháp lặp đơn lặp Jacobi Chương trình chạy   trongtrường  hợp A ma trận chéo trội 2.4 2.4  Khi A =  10 1 10     , b =  12  10 output: Khi chuan(B) chuan(B1) gần 1, số bước lặp tăn lên Nguyễn Thị Ngọc Lan 20185372 xviii ... khó khăn, khơng thể giải cách xác mà đưa lời giải gần cho tốn Qua báo cáo này, em xin trình bày phương pháp giải gần hệ phương trình tuyến tính: ? ?Phương pháp lặp đơn lặp Jacobi? ?? Bài báo cáo gồm... việc lập trình tiết kiệm số lượng phép tính thời gian tính tốn Phương pháp số có ý nghĩa lớn đại số tuyến tính, đặc biệt việc giải hệ phương trình tuyến tính Khi số phương trình lớn, phương pháp. .. B không chéo trội, sử dụng phương pháp lặp đơn Else: Sử dụng gói lặp đơn tính x* Kết luận x* nghiệm hệ phương trình 2.6 Ví dụ Ví dụ 1: Áp dụng phương pháp lặp đơn giải pt x = Bx+d Trong đó: 

Ngày đăng: 12/12/2022, 21:06

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

Tài liệu liên quan