Môn học lấy đi không ít tiền bạc và “nước mắt’ của các sĩ tử, khi cứ phải thi đi thi lại vì điểm kém. Để Isinhvien giới thiệu đến bạn giáo trình bài giảng, các đề cương ôn tập và đề thi môn giải tích này, mong sao vớt vát chút kiến thức để các sĩ tử nhà mình lên đường đi thi ngon nghẻ nhé Giải tích số là gì Giải tích số là ngành nghiên cứu về thuật toán sử dụng các số xấp xỉ đối với hàm liên tục (phân biệt với toán học rời rạc). Giáo trình bài giảng môn Giải tích số Kiến thức là bao la vô tận, lên cấp bậc đại học mỗi môn học yêu cầu những bạn sinh viên phải tìm những cuốn sách, giáo trình khác nhau để phục vụ cho việc học của mình. Nhân việc đó, Isinhvien gửi đến bạn một vài giáo trình mà Isinhvien đã chọn lọc kỹ càng của môn Giải tích số. Chắc chắn sẽ bổ ích cho bạn phần nào trong
CHƯƠNG 1GIẢI GẦN ĐÚNG PHƯƠNG TRÌNH VI PHÂN THƯỜNG 1.1 Một số khái niệm phương trình vi phân thường Phương trình vi phân thường đóng vai trị quan trọng Toán học lý thuyết ứng dụng Trong sống, nhiều toán thực tế lĩnh vực khoa học, kĩ thuật, kinh tế xã hội dẫn đến việc giải tốn phương trình vi phân thường Tuy nhiên, khơng phải lúc giải nghiệm xác phương trình vi phân thường trừ số lớp nhỏ toán đơn giản xây dựng đưa công thức nghiệm cụ thể, nghiệm Chính vậy, toán khác người ta nghiên cứu phương pháp gần để giải phương trình vi phân Định nghĩa 6.1 • Phương trình vi phân thường cấp n phương trình có dạng: F x, y, y '(x), y ''(x), , y ( n) (x) = 0, (6.1) ( ) x biến số độc lập, y = y(x) hàm số phải tìm y '(x), y ''(x), , y ( n) (x) đạo hàm hàm số y = y(x) • Cấp phương trình cấp đạo hàm cao có mặt phương trình • Nghiệm phương trình hàm số y = y(x) thỏa mãn phương trình (6.1) • Giải phương trình vi phân thường tiến hành tìm tất nghiệm phương trình Định nghĩa 6.2 Xét phương trình vi phân cấp n có dạng: y ( n) = f x, y(x), y '(x), , y ( n−1) (x) ( ) (6.2) Bài tốn Cauchy phương trình vi phân (6.2) la tìm hàm y = y(x) thỏa mãn phương trình (6.2) điều kiện ban đầu: y(x0 ) = y0 ; y '(x0 ) = y '0 ; ; y ( n−1) (x0 ) = y0(n−1) Bài tốn Cauchy phương trình vi phân cấp tốn tìm nghiệm y = y(x) phương trình (6.3) y ' = f (x, y) thỏa mãn điều kiện ban đầu y(x0 ) = y0 Phương trình vi phân (6.3) tương đương với phương trình tích phân (6.4) x y(x) = y0 + ∫ f ( s, y(s) ) ds (6.5) x0 theo nghĩa nghiệm phương trình (6.3) nghiệm liên tục (6.5) ngược lại Định lý 6.1 (Picard – Lindelof) Giả sử Hàm số f (x, y) liên tục theo hai biến miền đóng giới nội D : x0 − a ≤ x ≤ x0 + a, y0 − a ≤ x ≤ y0 + a, nghĩa ∃M > : f (x, y) ≤ M Hàm hai biến f (x, y) thỏa mãn điều kiện Lipschitz theo biến y D , tức tồn số dương L cho f (x, y1 ) − f (x, y2 ) ≤ L y1 − y2 , với (x, y1 ),(x, y2 ) ∈D Khi phương trình (6.3) có nghiệm y = y(x) khoảng ⎛ b⎞ x0 − h ≤ x ≤ x0 + h với h = ⎜ a, ⎟ thỏa mãn điều kiện (6.4) ⎝ M⎠ Định lý 6.2 Giả sử f (x, y) liên tục theo hai biến thỏa mãn điều kiện Lipschitz f (x, y1 ) − f (x, y2 ) ≤ L y1 − y2 , ( ) ( ) miền chữ nhật vô hạn ⎡⎣ a,b ⎤⎦ × −∞,+∞ x0 , y0 điểm miền Khi tốn (6.3), (6.4) có nghiệm đoạn ⎡⎣ a,b ⎤⎦ Phương pháp giải gần phương trình vi phân chia thành hai nhóm: nhóm phương pháp giải tích nhóm phương pháp số Phương pháp giải tích cho phép tìm nghiệm dạng giải tích, nhóm phương pháp số cho ta nghiệm dạng bảng 1.2 Phương pháp chuỗi Taylor 1.2.1 Phương pháp chuỗi Taylor giải phương trình vi phân thường cấp Xét tốn (6.3)-(6.4), y = y(x) nghiệm xác tốn chuỗi Taylor y = y(x) x có dạng: y ( x ) = y0 (x − x ) + (x − x ) y' + 0 2! y ''0 + (6.6) Với giá trị y '0 , y ''0 biết, (6.6) chuỗi lũy thừa y(x) Áp dụng cơng thức tính đạo hàm ta có: y '' = f ' = f x + y ' f y = f x + ff y Tương tự, ta có: y ''' = f '' = f xx + f xy f + f f yx + f yy f + f y f x + f y f ( ) ( ) = f xx + ff xy + f f yy + f x f y + ff y2 Ví dụ 6.1 Bằng phương pháp chuỗi Taylor, giải phương trình vi phân: y ' = x − y , y(0) = Giải: Chuỗi Taylor y(x) có dạng: y ( x ) = 1+ xy '0 + đó: y '(x) = x − y x2 x3 x (4) x (5) y ''0 + y '''0 + y + y + 24 120 y '0 = −1 y ''(x) = 1− yy ' y ''0 = y '''(x) = −2 yy ''− 2( y ')2 y '''0 = −8 y (4) (x) = −2 yy '''− y ' y '' y0(4) = 34 y (5) (x) = −2 yy (4) − 8y ' y '''− 6( y '')2 y0(5) = −186 17 31 Vậy, y(x) = 1− x + x − x + x − x + 12 20 Ví dụ 6.2 Bằng phương pháp chuỗi Taylor, giải phương phương trình vi phân y ' = x + y với y(1) = tính y(1,1) Giải: Chuỗi Taylor y(x) có dạng: y(x) = y0 ( x − 1) + ( x − 1) y ' + đó, 2 ( x − 1) y '' + y' = x + y y '0 = , y '' = 1+ y ' y ''0 = , y '''(x) = y ''(x) y '''0 = , y0(4) (x) = y '''(x) y0(4) = ,… ( x − 1) + ( x − 1) y(x) = ( x − 1) + ( x − 1) + 12 Do vậy, ( x − 1) y ''' + y(1,1) ≈ 0,11 24 + y0(4) + Đối với phương trình vi phân ví dụ 6.2, nghiệm xác phương trình y = −x − 1+ 2e x−1 y(1,1) = 0,11034 Ví dụ 6.3 Bằng phương pháp chuỗi Taylor, giải phương trình vi phân: (6.7) 5xy '+ y − = 0, y(4) = tìm giá trị y(4,1) Giải: Chuỗi Taylor y(x) có dạng: y(x) = y0 ( x − 4) + ( x − 4) y ' + ( x − 1) y '' + 0 ( x − 4) y ''' + với y '0 , y ''0 , y '''0 , xác định sau: Lấy đạo hàm (6.7), ta được: 5xy ''+ 5y '+ yy ' = Tiếp tục lấy đạo hàm, ta nhận được: 5xy '''+ 10 y ''+ yy '+ 2( y ')2 = 0, 24 y0(4) + 5xy (4) + 15y '''+ yy '''+ y ' y '' = 0, 5xy (5) + 20 y (4) + yy (4) + 8y ' y '''+ 6( y '')2 = Thay x = 4, y = vào phương trình ta tính được: y '0 = 0,05; y ''0 = −00175; y '''0 = 0,01025; y0(4) = −0,00845; y0(5) = 0,008998125 Do vậy, ( x − 4) y(x) = 1+ 0,05( x − ) + (−0,0175) + (−0,00845) ( x − 4) 2 ( x − 1) + (0,01025) ( x − 4) + (0,008998125) 24 Thay x = 4,1 ta có y(4,1) ≈ 1,0049 120 + 1.2.2 Phương pháp chuỗi Taylor giải phương trình vi phân cấp Xét phương trình vi phân cấp có dạng: y '' = f (x, y, y ') , y(x0 ) = 0; y '(x0 ) = l Đặt y ' = p , ta có y '' = p' phương trình vi phân (6.8) trở thành: p' = f (x, y, p) , y(x0 ) = 0; p(x0 ) = p0 = l0 Chuỗi Taylor cho bởi: y ( x ) = y0 (x − x ) + (x − x ) y' + (6.8) (6.9) y ''0 + (6.10) 2! giá trị y '0 , y ''0 , xác định nhờ vào giá trị ban đầu (6.9) thực phép lấy đạo hàm liên tiếp 0 Ví dụ 6.4 Bằng phương pháp chuỗi Taylor, giải phương trình vi phân: y ''− xy '− y = với y(0) = 1, y '(0) = tính giá trị y(0,1) Giải: Phương trình cho tương đương: y ''(x) = xy '(x) + y(x) , nên y ''(0) = y(0) = Lấy đạo hàm liên tiếp (6.11) ta được: y ''' = xy ''+ y ' (6.11) y (4) = xy '''+ 3y '' y (5) = xy (4) + y ''' y (6) = xy (5) + 5y (4) tiếp tục cho đạo hàm cấp cao Thay x = 0, y = 1, y ' = vào phương trình trên, ta tính tốn được: y ''' = 0; y (4) = 3; y (5) = 0; y (6) = x2 x4 x6 + + + 144 y(0,1) = 1,0050125 xác đến bảy chữ số thập phân Vậy, y(x) = 1+ 1.3 Phương pháp lặp Picard Xét toán (6.3)-(6.4), giả sử toán có nghiệm khoảng chứa x0 Bằng cách phân ly biến số, phương trình (6.3) tương đương: dy = f (x, y)dx Lấy tích phân hai vế (6.11) tương ứng với biến x , y x y0 x0 ∫ dy = ∫ f (x, y) dx x Hay y(x) = y0 + ∫ f (x, y) dx (6.13) x0 Dễ dàng kiểm tra (6.13) thỏa mãn điều kiện ban đầu (6.4) Để tìm nghiệm gần y(x) ta thực theo bước sau: Bước 1: Thay giá trị ban đầu y = y0 vào (6.13) để xấp xỉ tốt hơn: x y (x) = y0 + ∫ f (x, y0 ) dx (1) x0 Bước 2: Thay y (1) (x) vào vế phải (6.14), ta xấp xỉ mới: x ( ) y (2) (x) = y0 + ∫ f x, y (1) (x) dx x0 (6.14) (6.12) { } Tiếp tục thực tương tự, ta thu dãy lặp gồm y (i) (x) , i = 1,2, ,n, xác định công thức: x ( ) y (x) = y0 + ∫ f x, y ( n−1) dx , ( n) x0 với y (0) = y0 Ví dụ 6.5 Giải gần phương trình y ' = 1+ y ; y(0) = sau ba phép lặp Tìm y(0,1) y(0,2) Giải: Ta có f (x, y) = 1+ y , x0 = 0; y (0) = y0 = y(x0 ) = y(0) = , ( ) ( ) Do đó: f x, y ( n−1) = 1+ y ( n−1) Ta thực phép lặp sau: x y ( n) ( ) x ( ) 2 = + ∫ ⎡1+ y ( n−1) ⎤ dx = x + ∫ y ( n−1) dx , ⎢⎣ ⎥⎦ 0 ta được: x y (1) = x + ∫ dx = x , x y (2) = x + ∫ x dx = x + x , x ⎛ ⎞ y = x + ∫ ⎜ x + x ⎟ dx = x + x + x + x ⎠ 15 63 ⎝ Vậy, nghiệm gần phương trình vi phân cho là: y ≈ x + x + x5 + x 15 63 Các y(0,1) = 0,100334 y(0,2) = 0,202709 Ví dụ 6.6 Giải gần phương trình vi phân phương pháp lặp Picard: dy = 2x(1− y) , y(0) = dx Giải: Đặt f (x, y) = 2x(1− y) , x0 = 0, y (0) = y(0) = Ta thực phép lặp: x y ( n−1) − x ( n) y = + ∫ ( n−1) dx , +x y ta được: (3) x y (1) = + ∫ 2x(1− 2) dx = − x x y (2) = + ∫ 2x(x − 1) dx = − x + x4 x ⎛ x4 ⎞ x4 x6 y (3) = + ∫ 2x ⎜ x − − 1⎟ dx = − x + − 2 ⎝ ⎠ ⎛ x6 x4 ⎞ x x x8 2 y = + ∫ 2x ⎜ − + x − 1⎟ dx = − x + − + 8! ⎝ ⎠ Tiếp tục trình ta công thức tổng quát: x4 x6 x 2n y ( n) = − x + − + + (−1) n n! Khi n → ∞ , y ( n) → 1+ e− x , ta có nghiệm xác phương trình vi x (4) phân cho y(x) = 1+ e− x 1.4 Phương pháp Euler Euler cải tiến 1.4.1 Phương pháp Euler Xét toán Cauchy y ' = f (x, y), y(x0 ) = y0 (6.15) ( ) ( ) Giả sử hàm f thỏa mãn điều kiện f x, y1 − f x, y2 ≤ L y1 − y2 df ∂f ∂f = +f ≤ M hình chữ nhật dx ∂x ∂y D= {( x, y ) ∈ } x − x0 ≤ a, y − y0 ≤ b Giả sử x0 giá trị ban đầu h số dương cho trước đủ nhỏ với xi = x0 + ih,i = 0,1,2 , h gọi độ dài bước (6.15) tương đương với dy = f (x, y)dx , lấy tích phân hai vế từ x0 tới x1 tương ứng với x , ta được: y1 x1 y0 x0 ∫ dy = ∫ f ( x, y ) dx hay ( ) ( x1 y1 = y0 + ∫ f ( x, y ) dx x0 ) y ≈ y + f ( x , y ) ( x − x ) hay y ≈ y Tương tự, với x ≤ x ≤ x , ta có y ≈ y + hf ( x , y ) Giả sử f x, y ≈ f x0 , y0 với x0 ≤ x ≤ x1 , đó: 1 0 Từ đó, ta có cơng thức tổng qt: 1 1 + hf ( x0 , y0 ) yn+1 = yn + hf ( xn , yn ) , n = 0,1,2, (6.16) Công thức (6.16) gọi phương pháp Euler Ví dụ 6.7 Bằng phương pháp Euler, giải gần phương trình: y ' = 2xy + e x , y(0) = đoạn [0;1,5] , so sánh với nghiệm xác ϕ (x) = (x + 1)e x phương trình Giải: Với x0 = 0, y0 = , chọn h = 0,25 Áp dụng công thức (6.16), ta có bảng giá trị: n xn 0,0 0,25 0,5 0,75 1,0 1,25 1,5 ( yn = yn−1 + h 2xn−1 yn−1 + e xn−1 ) 1,0 1,25 1,672 2,411 3,754 6,311 11,448 ϕ (xn ) = ( xn + 1) e xn 1,0 1,33 1,926 3,071 5,436 10,734 23,719 Nếu ta chọn h = 0,1 , ta có bảng giá trị: n xn ( yn = yn−1 + h 2xn−1 yn−1 + e xn−1 ) ϕ (xn ) = ( xn + 1) e xn 0,0 1,0 1,0 0,1 1,1 1,111 0,2 1,223 1,248 0,3 1,376 1,422 0,4 1,567 1,642 0,5 1,810 1,926 0,6 2,120 2,293 0,7 2,518 2,774 0,8 3,033 3,413 0,9 3,708 4,271 10 1,0 4,601 5,436 11 1,1 5,793 7,042 12 1,2 7,403 9,285 13 1,3 9,601 12,464 14 1,4 12,640 17,038 15 1,5 16,889 23,719 Ví dụ 6.8 Bằng phương pháp Euler, giải gần phương trình vi phân: y '+ y = − e−4 x , y(0) = , với h = 0,1 cho trước Giải: Phương trình vi phân cho có nghiệm xác là: 1 y = 1+ e−4 x − e−2 x 2 Phương trình vi phân cho tương đương: y ' = − e−4 x − y Với x0 = 0; y0 = h = 0,1 Khi ta có bảng giá trị: n ( ) 1 ϕ (xn ) = 1+ e−4 xn − e−2 xn 2 0,1 0,9 0,925795 0,2 0,852968 0,889504 0,3 0,83744 0,876191 0,4 0,839834 0,876284 0,5 0,851677 0,883728 Nếu ta thay đổi độ dài bước h = 0,05;h = 0,01;h = 0,005 h = 0,001 , ta có bảng giá trị nghiệm gần nghiệm xác thời điểm x = 1; x = 2; x = 3; x = x = là: xn yn = yn−1 + h − e −4 xn−1 − yn−1 Nghiệm Nghiệm gần xác h = 0,05 h = 0,01 h = 0,005 h = 0,001 0,9414902 0,9364698 0,9404994 0,9409957 0,9413914 0,9910099 0,9911126 0,9910193 0,9910139 0,9910106 0,9987637 0,9988982 0,9987890 0,9987763 0,9987662 0,9998323 0,9998657 0,999839 0,9998357 0,999833 0,9999773 0,9999837 0,9999786 0,9999780 0,9999774 Phần trăm sai số nghiệm xác nghiệm gần xác định x bởi: P= nexact − napprox (6.17) × 100% nexact Áp dụng (6.17), ta có bảng tính tốn phần trăm sai số nghiệm xác nghiệm gần đúng: x h = 0,05 0,53% 0,01% 0,013% 0,0033% 0,00064% h = 0,01 0,105% 0,00094% 0,0025% 0,00067% 0,00013% h = 0,005 0,053% 0,00041% 0,0013% 0,00034% 0,000068% h = 0,001 0,0105% 0,00007% 0,00025% 0,000067% 0,000014% Nhận xét 6.1 • Nếu độ dài bước h nhỏ, sai số nghiệm gần nghiệm xác nhỏ • Nói chung sai số nghiệm xác nghiệm gần tăng giá trị x tăng 1.4.2 Phương pháp Euler cải tiến 1.4.2.1 Phương pháp Euler cải tiến thứ Phương pháp Euler cải tiến thứ phương pháp giá trị nghiệm, yn+1 thực thơng qua việc tính tốn giá trị trung gian: ⎧ h ⎪ xn+ = xn + , ⎪ ⎪⎪ ⎛ h h ⎞ (6.18) ⎨ f = f ⎜ xn + , yn + f n ⎟ , n+ 2 ⎝ ⎠ ⎪ ⎪ y = y + hf n ⎪ n+1 n+ ⎪⎩ Ví dụ 6.9 Áp dụng phương pháp Euler cải tiến thứ nhất, giải phương trình vi phân sau: 2y y' = + x , y(1) = x đoạn [1;1,4] độ dài bước h = 0,1 Giải: Phương trình cho có nghiệm gần ϕ (x) = x + x ln x 2y + x , ta có bảng giá trị: Đặt f (x, y) = x n xn yn ϕ (xn ) 1,0 1,1 1,2 1,3 1,4 1,0 1,3245 1,69982 2,1295 2,61336 1,0 1,32533 1,70254 2,13340 2,61949 1.4.2.2 Phương pháp Euler cải tiến thứ hai Từ (6.16), ta có: h yn+1 = yn + hf ( xn , yn ) = yn + ⎡⎣ f ( xn , yn ) + f ( xn , yn ) ⎤⎦ ( ) ( h + ⎡⎣ f ( x , y ) + f ( x ) Thay số hạng thứ hai f xn , yn f xn+1 , yn+1 , ta được: yn+1 = yn n n n+1 , yn+1 ) ⎤⎦ Tuy nhiên giá trị yn+1 bên vế phải giá trị cần tính bên vế trái, ( ) ta tính f xn+1 , yn+1 với yn+1 tính phương pháp Euler (6.16) Khi ta có phương pháp gọi phương pháp Euler cải tiến thứ hai Để thực việc tính giá trị yn+1 biết yn ta thực bước tính tốn: ⎧ y n+1 = yn + hf xn , yn , ⎪ (6.18) ⎨ h ⎪ yn+1 = yn + ⎡⎣ f xn , yn + f xn+1 , y n+1 ⎤⎦ ⎩ Ví dụ 6.10 Áp dụng phương pháp Euler Euler cải tiến thứ hai giải phương trình vi phân: y ' = y − x, y(0) = , đoạn [0,1] với độ dài bước h = 0,1 Giải: Nghiệm xác phương trình vi phân cho ϕ (x) = x + 1− e x Với h = 0,1 xn = x0 + nh = nh Theo (6.16), nghiệm gần phương trình cho tính theo phương pháp Euler: ⎧⎪ y0 = y(0) = 1, ⎨ ⎪⎩ yn+1 = yn + hf xn , yn = yn + 0,1( yn − xn ) = 1,1yn − 0,1xn Theo (6.18), nghiệm gần phương trình cho tính theo phương pháp Euler cải tiến: ⎧ y0 = y(0) = 1, ⎪ ⎪ y n+1 = yn + hf xn , yn = yn + 0,1 yn − xn = 1,1yn − 0,1xn , ⎪ ⎨ y = y + h ⎡ f x , y + f x , y ⎤ = y + 0,1 ⎡ y − x + y − x ⎤ , n n n n+1 n+1 ⎦ n n+1 n ⎦ ⎪ n+1 2⎣ ⎣ n n ⎪ 0,1 ⎡ y − x + 1,1yn − 0,1xn − xn ⎤⎦ = 1,06 yn − 0,105xn ⎪ = yn + ⎣ n n ⎩ Từ ta có bảng giá trị nghiệm theo hai phương pháp: ( ) ( ( ( ) ( ( n xn 0,1 ) ) ) ( ) ( ( ) ( yn (Euler) 0,54875 ) ) ( ) ( ) ) yn (Euler cải tiến) 0,5475 ϕ (xn ) 0,547414 0,2 0,592247 0,589487 0,589299 0,3 0,629952 0,625384 0,625070 0,4 0,661272 0,654549 0,654088 0,5 0,685553 0,676277 0,675639 0,6 0,702072 0,689786 0,688941 0,7 0,710034 0,694213 0,693124 0,8 0,708563 0,688605 0,687229 0,9 0,696690 0,671909 0,670198 10 1,0 0,686525 0,642959 0,640859 Qua bảng giá trị, ta thấy phương pháp Euler cải tiến cho nghiệm gần tốt phương pháp Euler 1.5 Phương pháp Runge - Kutta 1.5.1 Nội dung phương pháp Xét toán Cauchy (6.3), (6.4), để giải toán này, xuất phát từ giá trị yn ta tìm giá trị gần yn+1 xn+1 = xn + h theo công thức: s yn+1 = yn + ∑ bi ki , (6.19) i=1 s ⎛ ⎞ (6.20) ki = hf ⎜ xn + ci h, yn + h∑ aij k j ⎟ ⎝ ⎠ j=1 Công thức (6.19) (6.20) xác định phương pháp Runge – Kutta tổng quát Các hệ số ci ,aij ,bi chọn cho với m đủ lớn hàm số s ϕ (h) = y ( xn + h ) − yn − ∑ bi ki thỏa mãn: i=1 ϕ (0) = ϕ '(0) = ϕ ''(0) = = ϕ ( m) (0) = , ϕ ( m+1) (0) ≠ Khi đó, sai số bước đánh giá bởi: ϕ ( m+1) (ξ ) m+1 R(h) = h , 0