Phương trình vi phân
Bài toán Cauchy
Bài toán tìm giá trị ban đầu hay còn gọi bài toán Cauchy là bài toán tìm nghiệm y(x) = (y 1 (x), y 2 (x), , y n (x)) thỏa mãn điều kiện
Sự tồn tại và duy nhất nghiệm
Định nghĩa 1.3 (Xem [7]) cho rằng hàm f: [a, b]×R n → R n là ánh xạ liên tục trên miền D = [a, b]×R n và đáp ứng điều kiện Lipschitz theo biến y, tức là tồn tại hằng số Lipschitz L ≥ 0 sao cho kf(x, y)−f(x, y 1 )k ≤ Lky −y 1 k với mọi (x, y),(x, y 1 ) ∈ D Định lý 1.1 (Xem [7]) khẳng định rằng nếu hàm f(x,y) trong bài toán Cauchy liên tục và thỏa mãn điều kiện Lipschitz theo biến y trên hình chữ nhật, thì tồn tại nghiệm duy nhất cho bài toán này.
Khi đó nghiệm của bài toán Cauchy (1.2) là tồn tại và duy nhất trong đoạn
Tiếp cận lời giải số bài toán Cauchy
Xét bài toán (1.2) thỏa các giả thiết của định lý tồn tại và duy nhất nghiệm.Chia [a, b] thành N phần bằng nhau bởi các điểm chia a = x 0 , x 1 , x 2 ,ã ã ã , x N = b.
Giả sử y(x) là nghiệm của bài toán (1.2) Khi đó nghiệm số của (1.2) là {y 1 , y 2 ,ã ã ã , y N } trong đú y n là xấp xỉ của y(x n ) tại x n ( y n ≈ y(x n )).
Phương pháp số giải bài toán (1.2) sử dụng hệ sai phân với k + 1 giá trị xấp xỉ {y n+1−i } k i=1 từ tập hợp {y(x n+1−i )} k i=1, cho phép tính toán tuần tự các giá trị xấp xỉ y 1 , y 2 , , y N khi đã biết k giá trị ban đầu Tham số h được xác định là b−a.
N được gọi là bước nhảy.
Ví dụ 1.1 Hệ sai phân y n+1 = y n +h
2f(x n , y n ) là phương pháp số để giải bài toán (1.2).
Ví dụ 1.2 Hệ sai phân y n+1 = y n−1 + 2hf(x n , y n ) là phương pháp số để giải bài toán (1.2).
• Giải số bằng phương pháp Euler hiển
• Giải số bằng phương pháp Euler ẩn y n+1 = y n +hf(x n+1 , y n+1 )
Đại cương về phương pháp số giải phương trình vi phân 9
Cấp chính xác của phương pháp số
Định nghĩa 1.5 (Xem [7]) Phương pháp số (1.3) được gọi là phương pháp số có cấp chính xác p nếu y(x n+1 )− k
= 0(h p+1 ) trong đó 0(h p+1 ) là vô cùng bé cùng cấp với h p+1 khi h tiến đến 0.
Ví dụ 1.8 Phương pháp Euler hiển y n+1 = y n +hf(x n , y n ).
Giả thiết yn+1 = y(xn+1), yn = y(xn).
Khai triển Taylor đối với y(x) tại x = x n ta có y(x n+1 ) =y(x n +h) = y(x n ) +hy 0 (x n ) + 0(h 2 )
⇒ y(x n+1 )−y(x n )−hf(x n , y(x n )) = 0(h 2 ) = 0(h 1+1 ) trong đó 0(h 2 ) là vô cùng bé cùng cấp với h 2 khi h → 0.
Vậy phương pháp Euler hiển có cấp chính xác p= 1.
Ví dụ 1.9 Phương pháp Euler ẩn yn+1 = yn +hf(xn+1, yn+1)
= y(x n ) +hy 0 (x n ) + 0(h 2 )−y(x n )−h[y 0 (x n ) + 0(h)] = 0(h 2 ) = 0(h 1+1 ) trong đó 0(h 2 ) là vô cùng bé cùng cấp với h 2 khi h → 0.
Vậy phương pháp Euler ẩn có cấp chính xác p= 1.
Ví dụ 1.10 Phương pháp Euler cải tiến y n+1 = y n + h
2[y 0 (x n ) +y 0 (x n ) +hy 00 (x n ) + 0(h 2 )] = 0(h 3 ) = 0(h 2+1 ) trong đó 0(h 3 ) là vô cùng bé cùng cấp với h 3 khi h → 0.
Vậy phương pháp Euler cải tiến có cấp chính xác p = 2.
Tính phù hợp của phương pháp số
X j=1 α j y(x n+1−k ) +hφ f (y(x n+1 ), , y(x n+1−k ), x n+1−k , h) với R(xn+1) là sai số chặt cụt địa phương. Định nghĩa 1.6 (Xem [7]) Phương pháp số (1.3) gọi là phù hợp nếu h→0lim
Hệ quả 1.1 (Xem [7]) Nếu phương pháp số (1.3) có cấp chính xác p≥ 1 thì phù hợp.
Chứng minh Giả sử phương pháp (1.3) có cấp chính xác p
Áp dụng hệ quả 1.1 cho các phương pháp số trong ví dụ 1.8, 1.9 và 1.10 cho thấy chúng đều có cấp chính xác lớn hơn hoặc bằng 1, do đó phù hợp Cụ thể, phương pháp Euler hiển, phương pháp Euler ẩn, và phương pháp Euler cải tiến đều được xác nhận là phù hợp Định nghĩa 1.7 nêu rõ rằng đa thức đặc trưng thứ nhất của phương pháp số (1.3) có dạng ρ(t) = t^k − k.
Ví dụ 1.12. a Đa thức đặc trưng thứ nhất của phương pháp Euler là ρ(t) =t−1. b Đa thức đặc trưng của phương pháp số y n+1 = y n−1 + h
3[f(x n+1 , y n+1 ) + 4f(x n , y n ) +f(x n−1 , y n−1 )] là ρ(t) =t 2 −1. Định lý 1.2 Phương pháp số (1.3) phù hợp khi và chỉ khi
Ví dụ 1.13 Phương pháp số y n+1 = 9
Thật vậy, đa thức đặc trưng thứ nhất ρ(t) = t 3 − 9
Vậy phương pháp trên là phù hợp.
Ví dụ 1.14 Các phương pháp Euler đều phù hợp
Thật vậy, xét phương pháp Euler có đa thức đặc trưng thứ nhất là ρ(t) = t−1, khi đó ρ 0 (t) = 1 và ρ(1) = 0 a Phương pháp Euler hiển y n+1 = y n +hf(x n , y n )
⇒φf(yn+1, yn, xn,0) = f(xn, yn) =ρ 0 (1)f(xn, yn) b Phương pháp Euler ẩn y n+1 = y n +hf(x n+1 , y n+1 )
⇒φf(yn+1, yn, xn,0) = f(xn, yn) =ρ 0 (1)f(xn, yn) c Phương pháp Euler cải tiếny n+1 = y n +h
Tính zero- ổn định của phương pháp số
Đa thức đặc trưng thứ nhất của phương pháp số được định nghĩa là thỏa mãn điều kiện nghiệm khi tất cả các nghiệm của nó có modul nhỏ hơn hoặc bằng 1, đồng thời các nghiệm có modul bằng 1 phải là nghiệm đơn.
Ví dụ 1.15. a Đa thức đăc trưng thứ nhất ρ(t) =t 2 − 4
Trong phương pháp số, một hệ thống được coi là zero-ổn định nếu đa thức đặc trưng thứ nhất ρ(t) thỏa mãn điều kiện nghiệm Cụ thể, với đa thức ρ(t) = t³ - 5t² + 7t - 3, nghiệm t = 1 có modul nhỏ hơn hoặc bằng 1 và là nghiệm đơn, do đó thỏa mãn điều kiện Ngược lại, nghiệm t = 3 có modul lớn hơn 3 và t = 1 là nghiệm bội 2, nên không thỏa mãn điều kiện nghiệm.
Phương pháp Euler có đa thức đặc trưng thứ nhất ρ(t) = t−1 với nghiệm đơn t = 1, điều này cho thấy phương pháp này đạt tính zero-ổn định Ngoài ra, phương pháp số BDF được biểu diễn dưới dạng y n+1 = 4.
3hf(x n+1 , y n+1 ) có đa thức đặt trưng thứ nhất ρ(t) = t 2 − 4
3 (Ví dụ 1.15 a) thỏa mãn điều kiện nghiệm nên y n+1 = 4
11hf(x n+1 , y n+1 ) có tính zero- ổn định.
Sự hội tụ của phương pháp số
Phương pháp số (1.3) được định nghĩa là hội tụ nếu giới hạn khi h tiến đến 0 của giá trị lớn nhất giữa ky(x n) và y n bằng 0 Định lý 1.3 khẳng định rằng phương pháp số (1.3) sẽ hội tụ khi và chỉ khi nó phù hợp và ổn định với giá trị bằng 0.
Các phương pháp Euler không chỉ có tính zero-ổn định mà còn đảm bảo tính phù hợp, do đó chúng hội tụ Để kiểm tra sự hội tụ của phương pháp số y n+1 = 9, cần thực hiện các phân tích và đánh giá cụ thể.
17h[f(x n+1 , y n+1 ) + 3f(x n , y n )] Phương pháp số trên có tính phù hợp (Xem ví dụ 1.13). Đa thức đặc trưng thứ nhất ρ(t) =t 3 − 9
289 < 1 thỏa mãn điều kiện nghiệm, do đó phương pháp số trên có tính zero - ổn định.
Đa thức nội suy Newton
Sai phân
Định nghĩa 1.11 Giả sử y = f(x) là một hàm số thực, xác định trên đoạn [a, b].
∇ m y k = ∇ m−1 y k − ∇ m−1 y k−1 trong đó ∆y k ,∆ 2 y k , ,∆ m y k tương ứng lần lượt là các sai phân tiến cấp
∇y k ,∇ 2 y k , ,∇ m y k tương ứng lần lượt là các sai phân lùi cấp 1, 2, ,m.
Đa thức nội suy Newton lùi với các mốc cách đều 17
Bài toán nội suy nhằm tìm giá trị gần đúng của y(x) tại các điểm x không có trong bảng dữ liệu, với x0, x1, x2, , xn là các mốc nội suy Để tính giá trị gần đúng của y(x), người ta thay y(x) bằng một đa thức nội suy, được gọi là N n (x), bậc n, thỏa mãn điều kiện duy nhất.
N n (x i ) =y i , i = 0, n Trong trường hợp các mốc nội suy cách đều x i = x 0 +ih với i = 0, n thì
+ + t(t+ 1) (t+n−1) n! ∇ n yn với t= x−x n h gọi là đa thức nội suy Newton - Gregory.
Trong đó Nn(xn) =Pn(0) = yn
Trong trường hợp n = 2 ta có P 2 (t) =y 2 +t∇y 2 + 1 2 t(t+ 1)∇ 2 y 2 x= x2 ⇔ t= 0 ⇒P2(t) = y2 x= x 1 ⇔ t= −1 ⇒P 2 (t) =y 2 − ∇y 2 = y 1 x= x 0 ⇔ t= −2 ⇒P 2 (t) =y 2 −2∇y 2 +∇ 2 y 2 = y 0
Ví dụ 1.18 Xét hàm số cho bởi bảng x 0 1 2 3 4 y 4 8 13 16 18
Hãy tìm đa thức nội suy Newton lùi với các mốc cách đều cho bởi bảng trên.
Suy ra đa thức nội suy cần tìm là
Phương pháp Runge-Kutta
. cs as1 as2 ass b1 b2 bs Định nghĩa 1.12 Một phương pháp số gọi là phương pháp Runge- Kutta s nấc nếu nó có dạng
(1.4) trong đó các hệ số a ij (i = 1, s, j = 1, s), b j (j = 1, s), c j (j = 1, s) được lấy từ bảng Butcher và s
Ví dụ 1.19 Với bảng Butcher
1 6 ta có phương pháp Runge - Kutta 4 nấc sau
Ví dụ 1.20 Với bảng Butcher
3 0 1 6 ta có phương pháp Runge - Kutta 4 nấc sau
Phương trình Riccati
Phương trình Riccati tổng quát là phương trình vi phân dạng y 0 = p(x)y 2 +q(x)y+ r(x) (1.5) trong đó p(x), q(x), r(x) là các hàm liên tục trên khoảng (a,b) nào đó.
Phương trình Riccati không phải lúc nào cũng có thể giải được bằng phép cầu phương, tức là không phải lúc nào cũng có thể biểu diễn nghiệm dưới dạng hữu hạn các phép tích phân của các hàm tường minh Trong một số trường hợp đặc biệt, như khi p(x) = 0 hoặc r(x) = 0, phương trình có thể được chuyển đổi thành phương trình tuyến tính hoặc phương trình Bernoulli Nếu biết một nghiệm của phương trình Riccati, ta có thể biến đổi phương trình thành phương trình Bernoulli Cụ thể, nếu y₁(x) là một nghiệm của phương trình Riccati, ta đặt y = y₁ + z, với z là ẩn mới, và thay vào phương trình để thu được các biểu thức liên quan.
Nên từ (*) ta suy ra z 0 −[2p(x)y 1 (x) +q(x)]z = p(x)z 2 đây là phương trình Bernoulli.
Giải phương trình Riccati y' + 2y(y − x) = 1, ta thấy y = x là một nghiệm Bằng cách đặt y = x + z, phương trình được chuyển đổi thành dạng Bernoulli z' + 2z(z + x) = 0 với α = 2 Tiếp theo, đặt u = z − 1, ta có phương trình u' − 2xu = 2 Nghiệm tổng quát của phương trình này là u = e^(x^2).
Vậy nghiệm tổng quát của phương trình đã cho là y = x+ e −x 2
Phương pháp lặp đơn
Giả sử ta có phương trình y = ϕ(y) , ϕ :R m → R m (1.6)
Để xây dựng dãy lặp y n+1 = ϕ(y n ) với y 0 được chọn hợp lý, ta thu được dãy {y n } Định lý 1.5 chỉ ra rằng nếu ϕ(y) thỏa mãn điều kiện Lipschitz kϕ(y)−ϕ(y ∗ )k ≤ M ky−y ∗ k với 0 ≤ M < 1, thì phương trình y = ϕ(y) có duy nhất nghiệm y = α Hơn nữa, nếu dãy {y n } được định nghĩa theo công thức trên, thì y n sẽ hội tụ về α khi n tiến tới vô cực.
Phương pháp Nystr¨ om và phương pháp Adams - Moulton
Phương pháp tuyến tính đa bước
Cấp chính xác
Định nghĩa 2.2 (Xem [13]) Đa thức đặt trưng thứ hai của phương pháp số (2.1) là đa thức được đặt trưng bởi công thức σ(t) k
Định lý 2.1 nêu rõ rằng phương pháp số (2.1) có cấp chính xác p≥ 1 khi và chỉ khi tồn tại một hằng số c khác 0, sao cho biểu thức ρ(t+ 1)−σ(t+ 1) ln(t+ 1) có thể được biểu diễn dưới dạng c.t p+1 cộng với một hàm 0(t p+2) mà khi t tiến tới 1 thì hàm này trở nên rất nhỏ so với t p+2.
Ví dụ 2.2 Tính cấp chính xác của phương pháp số y n+1 = 9
17h f(x n+1 , y n+1 ) + 3f(x n , y n ) Đa thức đặc trưng thứ nhất ρ(t) =t 3 − 9
17. Đa thức đặc trưng thứ hai σ(t) = 6
Vậy p = 4 hay cấp chính xác của phương pháp trên bằng 4.
Tính phù hợp
Định lý 2.2 (Xem [7]) Phương pháp số (2.1) phù hợp khi và chỉ khi
Chứng minh Xét phương pháp (2.1), đặt: φf(y n+1 , , y n+1−k , x n+1−k , h) k
Các xấp xỉ tại x n+1−i (i = 0, k) trở thành xấp xỉ tại x n+1−k hay y n+1−i = y n+1−i (i = 0, k) Với ρ 0 (t) = kt k−1 − k−1
Ví dụ 2.3. a Phương pháp BDF 2 bước y n+1 = 4
= 2 3 Vậy phương pháp BDF 2 bước phù hợp. b Phương pháp tuyến tính 2 bước yn+1 = y n−1 + h
Sự hội tụ
Phương pháp số (2.1) được coi là zero-ổn định nếu đa thức đặc trưng thứ nhất thỏa mãn điều kiện nghiệm Đồng thời, phương pháp này sẽ hội tụ khi nó vừa có tính phù hợp vừa có tính zero-ổn định.
Ví dụ 2.4. a Phương pháp số BDF 2 bước y n+1 = 4
3hf(x n+1 , y n+1 ) hội tụ, vì nó có tính phù hợp (Xét ví dụ 1.3a) và có tính zero- ổn định (Xem ví dụ 1.15b). b Phương pháp số y n+1 = y n−1 + h
Phương pháp số 3 f(x n+1 , y n+1 ) + 4f(x n , y n ) + f(x n−1 , y n−1 ) hội tụ và phù hợp, như đã minh họa trong ví dụ 2.3b Nó có tính zero-ổn định nhờ vào đa thức đặc trưng thứ nhất ρ(t) = t^2 − 1, với hai nghiệm đơn t = 1 và t = −1, đáp ứng điều kiện nghiệm.
Phương pháp Nystr o ¨ m
Xây dựng công thức
Lấy tích phân 2 vế từ x n−1 tới xn+1 ta được x n+1
Z x n−1 y 0 (x)dx Đặt t = x−xn h ⇒x = x n +th ⇒dx = hdt Đổi cận x= x n−1 ⇒t = −1 x= xn+1 ⇒t = 1
−1 y 0 (xn+ th)dt Áp dụng công thức nội suy Newton lùi cho y n+t 0 = y 0 (xn + th) và thay y(x n−1 ) bởi y n−1 , y(x n ) bởi y n , y(x n+1 ) bởi y n+1 và y 0 n = f(x n , y n ) ta có y n+1 = y n−1 +h
Công thức (2.2) chính là công thức Nystro¨m.
Một vài phương pháp Nystr o ¨ m
Phương pháp Nystro¨m 2 bước gọi là phương pháp trung điểm. b Phương pháp Nystr¨om 3 bước
8f(x n , y n )−5f(x n−1 , y n−1 ) + 4f(x n−2 , y n−2 )−f(x n−3 , y n−3 ) d Phương pháp Nystr¨om 5 bước
Hình 2.1: Bảng giá trị hệ số β i tương ứng với phương pháp Nystr¨ om k bước
Sự hội tụ
Ví dụ 2.5 Phương pháp trung điểm y n+1 = y n−1 + 2hf(x n , y n ) hội tụ. Đa thức đặc trưng thứ nhất ρ(t) = t 2 − 1 có nghiệm t = −1, t = 1 nên thỏa mãn điều kiện nghiệm nên có tính zero - ổn định.
Phương pháp trung điểm có cấp chính xác p= 2 ≥ 1 nên phù hợp. Vậy phương pháp trung điểm hội tụ.
Ví dụ 2.6 Phương pháp Nystro¨m ba bước y n+1 = y n−1 + h
3[7f(x n , y n )−2f(x n−1 , y n−1 ) +f(x n−2 , y n−2 )] hội tụ Đa thức đặc trưng thứ nhất là ρ(t) = t 3 −t= t(t 2 −1) có 3 nghiệm đơn t= −1, t = 0, t = 1, đều có môđun nhỏ hơn hoặc bằng
1 nên thỏa mãn điều kiện nghiệm nên có tính zero - ổn định.
Suy ra phương pháp Nystro¨m 3 bước phù hợp.
Vậy phương pháp Nystro¨m 3 bước hội tụ.
Ví dụ 2.7 Phương pháp Nystro¨m bốn bước yn+1 = y n−1 +h
Phương trình 3[8f(xn, yn)−5f(xn−1, yn−1)+4f(xn−2, yn−2)−f(xn−3, yn−3)] hội tụ Đa thức đặc trưng thứ nhất được xác định là ρ(t) = t^4 − t^2 = t^2(t^2 − 1), có hai nghiệm đơn t = −1 và t = 1 với môđun bằng 1, cùng với một nghiệm kép t = 0 có môđun nhỏ hơn 1 Điều này cho thấy đa thức thỏa mãn điều kiện nghiệm và có tính zero - ổn định.
Suy ra phương pháp Nystro¨m bốn bước phù hợp.
Vậy phương pháp Nystro¨m bốn bước hội tụ.
Cấp chính xác
Ví dụ 2.8 Phương pháp trung điểm (Phương pháp Nystro¨m 2 bước) y n+1 = y n−1 + 2hf(x n , y n ) có cấp chính xác p = 2.
Thật vậy, ta có đa thức đặc trưng thứ nhất ρ(t) = t 2 −1 Đa thức đặc trưng thứ hai σ(t) = 2t Và ρ(t+ 1)−σ(t+ 1) ln(t+ 1) = (t+ 1) 2 −1−2(t+ 1) t−1
Vậy phương pháp trung điểm có cấp chính xác p = 2.
Ví dụ 2.9 Phương pháp Nystro¨m ba bước yn+1 = y n−1 + h
3[7f(xn, yn)−2f(x n−1 , y n−1 ) +f(x n−2 , y n−2 )] có cấp chính xác p = 3.
Thật vậy, ta có đa thức đặc trưng thứ nhất ρ(t) =t 3 −t Đa thức đặc trưng thứ hai σ(t) = 7
Vậy phương pháp Nystro¨m ba bước có cấp chính xác p= 3.
Ví dụ 2.10 Phương pháp Nystro¨m bốn bước yn+1 = y n−1 +h
3[8f(xn, yn)−5f(x n−1 , y n−1 )+4f(x n−2 , y n−2 )−f(x n−3 , y n−3 )] có cấp chính xác p = 4.
Thật vậy, ta có đa thức đặc trưng thứ nhất ρ(t) =t 4 −t 2 Đa thức đặc trưng thứ hai σ(t) = 8
Vậy phương pháp Nystro¨m bốn bước có cấp chính xác p = 4.
Phương pháp Adams- Moulton
Xây dựng công thức
Lấy tích phân 2 vế từ x n tới x n+1 ta được x n+1
Z x n y 0 (x)dx Đặt t = x−x n h ⇒x = x n +th ⇒dx = hdt Đổi cận x= x n ⇒t = 0 x= x n+1 ⇒t = 1
0 y 0 (x n +th)dt Suy ra yn+1 = yn +h
0 y 0 (xn +th)dt (2.3) Áp dụng công thức nội suy Newton lùi cho y n+t 0 = y 0 (x n + th) và thay y(x n−1 ) bởi y n−1 , y(xn) bởi yn, y(xn+1) bởi yn+1 và y 0 n = f(xn, yn) ta có y n+t 0 = y n 0 +∇y n 0
2! t(t+ 1)+ã ã ã+∇ k y n 0 k! t(t+1) .(t+k−1)+ . Thay n bởi n+ 1 và t bởi t−1 ta có y n+t 0 = y n+1 0 +∇y 0 n+1
Công thức (2.5) chính là công thức Adams- Moulton.
Một vài phương pháp Adams- Moulton
a Phương pháp Adams- Moulton 2 bước
12f(x n−1 , y n−1 ) b Phương pháp Adams- Moulton 3 bước
24f(x n−2 , y n−2 ) c Phương pháp Adams- Moulton 4 bước
720f(xn−3, yn−3) d Phương pháp Adams- Moulton 5 bước
Hình 2.2: Bảng giá trị hệ số β i tương ứng với phương pháp Adams- Moulton k bước e Phương pháp Adams - Moulton 8 bước y n+1 = y n +h
3628800f(x n−7 , y n−7 ) f Phương pháp Adams - Moulton 9 bước y n+1 = y n +h
1036800f(x n−8 , y n−8 ) g Phương pháp Adams- Moulton 10 bước y n+1 = y n +h
Sự hội tụ
Ví dụ 2.11. a Phương pháp Adams- Moulton 2 bước y n+1 = y n + h
12f(x n−1 , y n−1 ) hội tụ, thật vậy Đa thức đặc trưng thứ nhất ρ(t) = t 2 −t= t(t−1)
Khi ρ(t) = 0 có nghiệm t = 0 và t = 1 thỏa mãn điều kiện nghiệm nên phương pháp trên có tính zero- ổn đinh.
Suy ra phương pháp Adams- Moulton 2 bước phù hợp.
Vậy phương pháp Adams- Moulton 2 bước hội tụ. b Phương pháp Adams- Moulton 3 bước y n+1 = y n +h
24f(xn−2, yn−2) hội tụ, thật vậy Đa thức đặc trưng thứ nhất ρ(t) = t 3 −t 2 = t 2 (t−1)
Khi ρ(t) = 0 có nghiệm kép t = 0 và nghiệm đơn t = 1 thỏa mãn điều kiện nghiệm nên phương pháp trên có tính zero- ổn đinh.
Suy ra phương pháp Adams- Moulton 3 bước phù hợp.
Vậy phương pháp Adams- Moulton 3 bước hội tụ. c Phương pháp Adams- Moulton 8 bước y n+1 = y n +h
3628800f(x n−7 , y n−7 ) hội tụ, thật vậy Đa thức đặc trưng thứ nhất ρ(t) = t 8 −t 7
Khi ρ(t) = 0 có nghiệm đơn t = 1 và nghiệm t j = 1, j = 1,7 thỏa mãn điều kiện nghiệm nên phương pháp trên có tính zero- ổn đinh.
Suy ra phương pháp Adams- Moulton 8 bước phù hợp.
Vậy phương pháp Adams- Moulton 8 bước hội tụ.
Cấp chính xác
Ví dụ 2.12 Tính cấp chính xác của a Phương pháp Adams- Moulton 2 bước y n+1 = y n + h
12f(x n−1 , y n−1 ) Đa thức đặc trưng thứ nhất ρ(t) = t 2 −t Đa thức đặc trưng thứ hai σ(t) = 5
24t 4 + 0(t 5 )Vậy cấp chính xác của phương pháp Adams - Moulton 2 bước là p= 3 b Phương pháp Adams- Moulton 3 bước y n+1 = y n +h
24f(x n−2 , y n−2 ) Đa thức đặc trưng thứ nhất ρ(t) = t 3 −t 2 Đa thức đặc trưng thứ hai σ(t) = 9
720t 5 + 0(t 6 ) Vậy cấp chính xác của phương pháp Adams - Moulton 3 bước là p= 4 c Phương pháp Adams- Moulton 8 bước y n+1 = y n +h
3628800f(x n−7 , y n−7 ) Đa thức đặc trưng thứ nhất ρ(t) = t 8 −t 7 Đa thức đặc trưng thứ hai σ(t) = 1070017
Vậy cấp chính xác của phương pháp Adams - Moulton 8 bước làp = 9.
Dự báo và hiệu chỉnh với cặp phương pháp Nystr om và Adams- ¨ Moulton trong giải số phương trình vi phân
Kết hợp phương pháp Nystr o ¨ m 2 bước với phương pháp
Thuật toán
• Bước 1: Chia đoạn [a, b] thành N phần bằng nhau bởi các điểm chia a = x 0 , x 1 , x 2 , , x N = b với xi = a+ ih ∀i = 0, N và h = b−a
• Bước 2: Sử dụng phương pháp Runge - Kutta hiển 4 nấc
6f(x n +h, Y n4 ) để tính các giá trị y 1
• Bước 3: Dự báo y 2 bằng phương pháp Nystro¨m 2 bước y n+1 = y n−1 + 2hf(x n , y n ).
• Bước 4: Sử dụng phương pháp Adams- Moulton 2 bước y n+1 = y n +h
12f(x n−1 , y n−1 ) để hiệu chỉnh giá trị y 2 d lần thứ nhất được giá trị y 2 l 1
Tiếp tục hiệu chỉnh nhiều lần sao cho y 2 l k −y 2 l k−1
< ε thì kết thúc bước 4, khi đó y 2 ∗ = y l 2 k
• Bước 5: Tiếp tục sử dụng phương pháp Nystro¨m 2 bước dự báo giá trị y 3
• Bước 6: Thực hiện hiệu chỉnhy d 3 bằng phương pháp Adams- Moulton
< ε thì dừng lại, khi đó y ∗ 3 = y l 3 k
Thực hiện quá trình này cho đến giá trị yN thì kết thúc.
Áp dụng thuật toán giải một số ví dụ
Ví dụ 3.1 Giải bài toán
( y 0 = x 2 +y 2 y(0) = 0 , x ∈ [0,1] , ε = 10 −20 Chia đoạn [0,1] làm 1000 phần bằng nhau bởi các điểm chia
Sử dụng phương pháp Runge - Kutta hiển 4 nấc tính giá trị y 1 với h = 0.001, x 0 = 0, y 0 = 0.
Dự báo y 2 bằng phương pháp Nystro¨m 2 bước y 2 = y 0 + 2hf(x 1 , y 1 ) = 2.00000000000022.10 −9
Hiệu chỉnh y 2 d bằng phương pháp Adams- Moulton 2 bước lần thứ nhất y 2 l 1 = y 1 +h
= 2.6666666666684.10 −9 Hiệu chỉnh y 2 d bằng phương pháp Adams- Moulton 2 bước lần thứ hai y l 2 2 = y 1 +h
< ε do đó y 2 ∗ = y 2 l 2 = 2.6666666666697.10 −9 Tương tự dự báo và hiệu chỉnh các giá trị còn lại, ta đưa ra bảng sau với một số giá trị x y dự báo y hiệu chỉnh y Maple
So sánh giá trị do maple tính với giá trị dự báo và giá trị hiệu chỉnh, ta có bảng sai số thể hiện sự chênh lệch giữa các giá trị này Cụ thể, bảng sai số được tính bằng cách lấy giá trị tuyệt đối của hiệu số giữa giá trị dự báo (yd) và giá trị do maple tính (yM), cũng như giữa giá trị hiệu chỉnh (yh) và giá trị do maple tính (yM).
Từ bảng sai số, có thể thấy rằng giá trị dự báo và giá trị hiệu chỉnh gần bằng giá trị nghiệm y(x) do Maple tính Cụ thể, giá trị dự báo chính xác đến 9-10 chữ số sau dấu phẩy, trong khi giá trị hiệu chỉnh đạt độ chính xác lên đến 10-13 chữ số sau dấu phẩy Điều này cho thấy tầm quan trọng của việc sử dụng phương pháp số trong việc giải gần đúng các phương trình vi phân.
Hình 3.1: Đồ thị biểu diễn nghiệm hiệu chỉnh
Hình 3.2: Đồ thị biểu diễn nghiệm chính xác
Ví dụ 3.2 Giải bài toán
( y 0 = xe x −ycos(x) y(0) = 0 , x ∈ [0,1] , ε = 10 −20 Chia đoạn [0,1] làm 1000 phần bằng nhau bởi các điểm chia
Sử dụng phương pháp Runge - Kutta hiển 4 nấc tính giá trị y 1 với h = 0.001, x0 = 0, y0 = 0.
Dự báo y 2 bằng phương pháp Nystrom 2 bước y 2 = y 0 + 2hf(x 1 , y 1 ) = 2.00100066716672.10 −6
Hiệu chỉnh y 2 d bằng phương pháp Adams- Moulton 2 bước lần thứ nhất y 2 l 1 = y 1 +h
= 2.00133497498728.10 −6 Hiệu chỉnh y 2 d bằng phương pháp Adams- Moulton 2 bước lần thứ hai y l 2 2 = y1 +h
> ε tiếp tục hiệu chỉnh y 2 d bằng phương pháp Adams- Moulton 2 bước lần thứ ba y l 2 3 = y 1 +h
< ε do đó y 2 ∗ = y 2 l 3 = 2.00133483575068.10 −6 Tương tự dự báo và hiệu chỉnh các giá trị còn lại, ta đưa ra bảng sau với một số giá trị x y dự báo y hiệu chỉnh y Maple
Dựa trên bảng giá trị, chúng ta có thể so sánh giá trị do maple tính toán với giá trị dự báo và giá trị hiệu chỉnh, từ đó tạo ra bảng sai số với các thông số x n, |yd−yM| và |yh−yM|.
Từ bảng sai số so sánh giữa hai cột giá trị, chúng ta nhận thấy rằng giá trị hiệu chỉnh gần gũi với giá trị nghiệm y(x) mà Maple tính toán đến 10, 11, 12 chữ số sau dấu phẩy, cho thấy sự chênh lệch giữa hai giá trị này là rất nhỏ.
Hình 3.3: Đồ thị biểu diễn nghiệm hiệu chỉnh
Hình 3.4: Đồ thị biểu diễn nghiệm chính xác
Kết hợp phương pháp Nystr o ¨ m 3 bước với phương pháp
Thuật toán
• Bước 1: Chia đoạn [a, b] thành N phần bằng nhau bởi các điểm chia a = x 0 , x 1 , x 2 , , x N = b với x i = a+ ih ∀i = 0, N và h = b−a
• Bước 2: Sử dụng phương pháp Runge - Kutta hiển 4 nấc
6f(x n +h, Y n4 ) để tính các giá trị y1, y2.
• Bước 3: Dự báo y 3 bằng phương pháp Nystro¨m 3 bước y n+1 = y n−1 + h
• Bước 4: Sử dụng phương pháp Adams- Moulton 2 bước y n+1 = y n +h
12f(x n−1 , y n−1 ) để hiệu chỉnh giá trị y 3 d lần thứ nhất được giá trị y 3 l 1 Tiếp tục hiệu chỉnh nhiều lần sao cho y 3 l k −y 3 l k−1
< ε thì kết thúc bước 4, khi đó y ∗ 3 = y 3 l k
• Bước 5: Tiếp tục sử dụng phương pháp Nystro¨m 3 bước dự báo giá trị y 4
• Bước 6: Thực hiện hiệu chỉnhy d 4 bằng phương pháp Adams- Moulton
< ε thì dừng lại, khi đó y ∗ 4 = y l 4 k
Thực hiện quá trình này cho đến giá trị y N thì kết thúc.
Áp dụng thuật toán giải một số ví dụ
Ví dụ 3.3 Giải bài toán
( y 0 = xe y −ycos(x) y(0) = 0 , x ∈ [0,0.1] , ε = 10 −20 Chia đoạn [0,0.1] làm 1000 phần bằng nhau bởi các điểm chia
Sử dụng phương pháp Runge - Kutta hiển 4 nấc tính giá trị y 1 , y 2 với h = 0.0001, x 0 = 0, x 1 = x 0 +h = 0.0001, y 0 = 0.
Tương tự dùng phương pháp Runge - Kutta hiển bốn nấc ta tính được y 2 = 1.99986669416637.10 −8
Dự báo y 3 bằng phương pháp Nystro¨m 3 bước y 3 = y 1 +h
Hiệu chỉnh y 3 d bằng phương pháp Adams- Moulton 2 bước lần thứ nhất y 3 l 1 = y 2 +h
Hiệu chỉnh y 3 d bằng phương pháp Adams- Moulton 2 bước lần thứ hai y l 3 2 = y 2 +h
> ε ta tiếp tục hiệu chỉnh y 3 d bằng phương pháp Adams- Moulton 2 bước lần thứ ba y l 3 3 = y 2 +h
< ε do đó y 3 ∗ = y 3 l 3 = 4.4995501374958.10 −8 Tương tự dự báo và hiệu chỉnh các giá trị còn lại, ta đưa ra bảng sau với một số giá trị x y dự báo y hiệu chỉnh y Maple
Từ bảng giá trị so sánh giữa giá trị do Maple tính toán với giá trị dự báo và giá trị hiệu chỉnh, ta có thể xây dựng bảng sai số với các thông số x n, |yd−yM| và |yh−yM|.
Từ bảng sai số, có thể nhận thấy rằng giá trị hiệu chỉnh và giá trị dự báo đều rất gần với giá trị nghiệm y(x) được tính bởi Maple, với độ chính xác lên đến 9, 10, 11 chữ số sau dấu phẩy Điều này cho thấy sai số giữa giá trị dự báo và giá trị hiệu chỉnh là rất nhỏ.
Hình 3.5: Đồ thị biểu diễn nghiệm hiệu chỉnh
Hình 3.6: Đồ thị biểu diễn nghiệm chính xác
Ví dụ 3.4 Giải bài toán
Bài toán có nghiệm giải tích là y(x) = 8
3 x Chia đoạn [0,1] làm 1000 phần bằng nhau bởi các điểm chia
Sử dụng phương pháp Runge - Kutta hiển 4 nấc tính giá trị y 1 , y 2 với h = 0.001, x 0 = 0x 1 = x 0 +h = 0.001, y 0 = 0.
Tương tự dùng phương pháp Runge - Kutta hiển bốn nấc ta tính được y 2 = 1.004676007598.
Dự báo y3 bằng phương pháp Nystro¨m 3 bước y3 = y1+ h
Hiệu chỉnh y 3 d bằng phương pháp Adams- Moulton 2 bước lần thứ nhất y 3 l 1 = y2+h
Hiệu chỉnh y 3 d bằng phương pháp Adams- Moulton 2 bước lần thứ hai y 3 l 2 = y 2 +h
> ε ta tiếp tục hiệu chỉnh y 3 d bằng phương pháp Adams- Moulton 2 bước lần thứ ba y 3 l 3 = y 2 +h
Tương tự dự báo và hiệu chỉnh các giá trị còn lại, ta đưa ra bảng sau với một số giá trị x y dự báo y hiệu chỉnh y Maple
Dựa vào bảng giá trị so sánh giữa giá trị do maple tính toán và giá trị dự báo, cũng như giá trị hiệu chỉnh, ta có thể lập bảng sai số với các thông số x n |yd−yM| và |yh−yM|.
Theo bảng sai số, giá trị hiệu chỉnh và giá trị dự báo gần sát với giá trị nghiệm y(x) mà Maple tính toán, đạt độ chính xác đến 9, 10, 11 chữ số sau dấu phẩy.
Hình 3.7: Đồ thị biểu diễn nghiệm hiệu chỉnh
Hình 3.8: Đồ thị biểu diễn nghiệm chính xác
Kết hợp phương pháp Nystr o ¨ m 3 bước với phương pháp
Thuật toán
• Bước 1: Chia đoạn [a, b] thành N phần bằng nhau bởi các điểm chia a = x 0 , x 1 , x 2 , , x N = b với x i = a+ ih ∀i = 0, N và h = b−a
• Bước 2: Sử dụng phương pháp Runge - Kutta hiển 4 nấc
6f(x n +h, Y n4 ) để tính các giá trị y 1 , y 2
• Bước 3: Dự báo y 3 bằng phương pháp Nystro¨m 3 bước y n+1 = y n−1 + h
• Bước 4: Sử dụng phương pháp Adams- Moulton 3 bước y n+1 = y n +h
24f(x n−2 , y n−2 ) để hiệu chỉnh giá trị y 3 d lần thứ nhất được giá trị y 3 l 1 Tiếp tục hiệu chỉnh nhiều lần sao cho y 3 l k −y 3 l k−1
< ε thì kết thúc bước 4, khi đó y ∗ 3 = y 3 l k
• Bước 5: Tiếp tục sử dụng phương pháp Nystro¨m 3 bước dự báo giá trị y 4
• Bước 6: Thực hiện hiệu chỉnhy d 4 bằng phương pháp Adams- Moulton
< ε thì dừng lại, khi đó y ∗ 4 = y l 4 k
Thực hiện quá trình này cho đến giá trị y N thì kết thúc.
Áp dụng thuật toán giải một số ví dụ
Ví dụ 3.5 Giải bài toán
( y 0 = x 3 e x 2 + 2xy y(0) = 0 , x ∈ [0,1] , ε = 10 −20 Bài toán có nghiệm giải tích là y(x) = 1
4e x 2 x 4 Chia đoạn [0,1] làm 1000 phần bằng nhau bởi các điểm chia
Sử dụng phương pháp Runge - Kutta hiển 4 nấc tính giá trị y 1 , y 2 với h = 0.001, x 0 = 0, x 1 = x 0 +h = 0.001, y 0 = 0.
Tương tự dùng phương pháp Runge - Kutta hiển bốn nấc ta tính được y 2 = 4.0000156666946.10 −12
Dự báo y3 bằng phương pháp Nystro¨m 3 bước y3 = y1 + h
Hiệu chỉnh y 3 d bằng phương pháp Adams- Moulton 3 bước lần thứ nhất y 3 l 1 = y 2 +h
= 2.02501855424552.10 −11 Hiệu chỉnh y 3 d bằng phương pháp Adams- Moulton 3 bước lần thứ hai y 3 l 2 = y2 +h
> ε nên ta tiếp tục hiệu chỉnh y 3 d bằng phương pháp Adams- Moulton 3 bước lần thứ ba y 3 l 3 = y 2 +h
< ε do đó y 3 ∗ = y 3 l 3 = 2.02501900426323.10 −11 Tương tự dự báo và hiệu chỉnh các giá trị còn lại, ta đưa ra bảng sau với một số giá trị x y dự báo y hiệu chỉnh y Maple
So sánh giá trị do maple tính với giá trị dự báo và giá trị hiệu chỉnh, chúng ta có thể lập bảng sai số với các thông số x n, |yd−yM| và |yh−yM|.
Nhận xét 3.5 cho thấy giá trị hiệu chỉnh gần với nghiệm y(x) do Maple tính toán với độ chính xác lên đến 14 chữ số sau dấu phẩy Giá trị dự báo cũng đạt độ chính xác từ 10 đến 12 chữ số sau dấu phẩy, điều này chứng tỏ phương pháp Nystrom 3 bước mang lại kết quả dự báo có độ chính xác cao.
Hình 3.9: Đồ thị biểu diễn nghiệm hiệu chỉnh
Hình 3.10: Đồ thị biểu diễn nghiệm chính xác
Ví dụ 3.6 Giải bài toán
( y 0 = x 2 −y 2 y(0) = 1 , x ∈ [0,1] , ε = 10 −20 Chia đoạn [0,1] làm 1000 phần bằng nhau bởi các điểm chia
Sử dụng phương pháp Runge - Kutta hiển 4 nấc tính giá trị y 1 , y 2 với h = 0.001, x 0 = 0, x 1 = x 0 +h = 0.001, y 0 = 0.
Y04 = 0.999001998999001 y 1 = 0.999000999334333 Tương tự dùng phương pháp Runge - Kutta hiển bốn nấc ta tính được y 2 = 0.998003994680308.
Dự báo y 3 bằng phương pháp Nystro¨m 3 bước y 3 = y 1 + h
Hiệu chỉnh y 3 d bằng phương pháp Adams- Moulton 2 bước lần thứ nhất y 3 l 2 = y 2 +h
Hiệu chỉnh y 3 d bằng phương pháp Adams- Moulton 2 bước lần thứ hai y 3 l 2 = y 2 +h
< ε do đó y 3 ∗ = y 3 l 2 = 0.997008982067642 Tương tự dự báo và hiệu chỉnh các giá trị còn lại, ta đưa ra bảng sau với một số giá trị x y dự báo y hiệu chỉnh y Maple
Từ bảng giá trị, chúng ta có thể so sánh giá trị do maple tính toán với giá trị dự báo và giá trị hiệu chỉnh, từ đó tạo ra bảng sai số với các thông số x n |yd−yM| |yh−yM|.
Nhận xét 3.6 cho thấy rằng giá trị hiệu chỉnh gần với giá trị nghiệm y(x) do Maple tính toán với độ chính xác lên đến 13, 14 chữ số sau dấu phẩy Sự chênh lệch giữa giá trị dự báo và giá trị hiệu chỉnh rất nhỏ, điều này chứng tỏ rằng phương pháp Nystrom 3 bước mang lại kết quả dự báo tốt.
Hình 3.11: Đồ thị biểu diễn nghiệm hiệu chỉnh
Hình 3.12: Đồ thị biểu diễn nghiệm chính xác
Ví dụ 3.7 Giải bài toán
( y 0 = 2xy y(0) = 1 , x ∈ [0,1] , ε = 10 −20 Bài toán có nghiệm giải tích là y(x) = e x 2 Chia đoạn [0,1] làm 1000 phần bằng nhau bởi các điểm chia
Sử dụng phương pháp Runge - Kutta hiển 4 nấc tính giá trị y 1 , y 2 với h = 0.001, x0 = 0, x1 = x0 +h = 0.001, y0 = 0.
Tương tự dùng phương pháp Runge - Kutta hiển bốn nấc ta tính được y 2 = 1.00000400000834.
Dự báo y 3 bằng phương pháp Nystro¨m 3 bước y3 = y1 + h
Hiệu chỉnh y 3 d bằng phương pháp Adams- Moulton 2 bước lần thứ nhất y 3 l 2 = y 2 +h
= 1.00000900004084 Hiệu chỉnh y 3 d bằng phương pháp Adams- Moulton 2 bước lần thứ hai y 3 l 2 = y 2 +h
< ε do đó y 3 ∗ = y 3 l 2 = 1.00000900004084 Tương tự dự báo và hiệu chỉnh các giá trị còn lại, ta đưa ra bảng sau với một số giá trị x y dự báo y hiệu chỉnh y Maple
Dựa vào bảng giá trị, chúng ta so sánh giá trị do maple tính toán với giá trị dự báo và giá trị hiệu chỉnh, từ đó tạo ra bảng sai số với các chỉ số x n, |yd−yM| và |yh−yM|.
Nhận xét 3.7 cho thấy từ bảng sai số so sánh hai cột giá trị, giá trị hiệu chỉnh gần với giá trị nghiệm y(x) do Maple tính, đạt độ chính xác lên đến 12-13 chữ số sau dấu phẩy Đồng thời, giá trị dự báo cũng chính xác tới 11-12 chữ số sau dấu phẩy so với giá trị nghiệm y(x) do Maple cung cấp.
Hình 3.13: Đồ thị biểu diễn nghiệm hiệu chỉnh
Hình 3.14: Đồ thị biểu diễn nghiệm chính xác
Chương trình giải trên Maple
Sử dụng cặp phương pháp Nystro¨m và Adams- Moulton để giải số phương trình vi phân
Code: Kết hợp phương pháp Nystro¨m 2 bước và Adams- Moulton 2 bước Đây là code của ví dụ 3.1
[ "Nhap a= ", TextField[a]("0"), " b= ", TextField[b]("1")], [ "Nhap n= ", TextField[n]("1000"), " y0= ",
> ham:=parse(gtn[1]); n:=parse(gtn[4]); a:=parse(gtn[2]); b:=parse(gtn[3]); y0:=parse(gtn[5]); h:=evalf((b-a)/n); f:=unapply(ham,x,y): epsilon:^(-20): nmax:0:
> for i from 0 to n do x[i]:=a+i*h: end do:
Y[0]:=evalf(y0,20): yd[0]:=evalf(Y[0],20): yh[0]:=evalf(Y[0],20):
H[2][1]:=evalf(yh[1]+ h*((5/12)*f(x[2],H[2][0])+(8/12)*f(x[1], yh[1])-(1/12)*f(x[0],yh[0])),15); i:=1: while abs(H[2][i]-H[2][i-1])>epsilon do i:=i+1;
H[2][i]:=evalf(yd[1]+h*((5/12)*f(x[2],H[2][i-1])+(8/12)*f(x[1], yh[1])-(1/12)*f(x[0],yh[0])),15); if i>nmax then break; end if; end do; yh[2]:=H[2][i];
>for i from 3 to n do yd[i]:=evalf(yh[i-2]+2*h*f(x[i-1],yh[i-1]),15);
H[i][1]:=evalf(yh[i-1]+h*((5/12)*f(x[i],H[i][0])+(8/12)* f(x[i-1],yh[i-1])-(1/12)*f(x[i-2],yh[i-2])),20): j:=1: while abs(H[i][j]-H[i][j-1])>epsilon do j:=j+1;
H[i][j]:=evalf(yh[i-1]+h*((5/12)*f(x[i],H[i][j-1])+(8/12)* f(x[i-1],yh[i-1])-(1/12)*f(x[i-2],yh[i-2])),20): if j>nmax then break; end if; end do: yh[i]:=H[i][j]; end do:
> y:=’y’: rs:={dsolve({diff(y(t),t)=f(t,y(t)),y(0)=y0},y(t))}: if rs={} then print(‘Không tìm được nghiệm chính xác.
Maple sẽ cho nghiệm số bằng phương pháp Runge-Kutta bậc
To solve the differential equation defined by diff(y(t),t)=f(t,y(t)) with the initial condition y(0)=y0, we can use the dsolve function in Maple The solution can be obtained numerically over a specified range from a to b If the solution is successfully computed, we evaluate it with a precision of 20 decimal places Finally, we can express the exact solution using the unapply function and display the results in the format y(x)=ngh(x).
"y du bao","y hieu chinh","y Maple","yM-yd","yM-yh"); for i from 0 to 10 do printf("%10.3f %20.15f %20.15f %20.15f %20.15f %20.15f\n"
,x[i*n/10],yd[i*n/10],yh[i*n/10],evalf(ngh(x[i*n/10]),15),evalf(abs(ngh(x[i*n/10])-yd[i*n/10]),15), evalf(abs(ngh(x[i*n/10])-yh[i*n/10]),15)); end do;
> p1:=plot(ngh(t),t=a b,color=red,legend="Nghiệm chính xác"): p2:=plot([seq([x[i],yh[i]],i=0 n)],color=blue, legend="Nghiệm hiệu chỉnh"): plots[display](p2,p1);
> p1:=plot(ngh(t),t=a b,color=red,legend="Nghiệm Maple"): plots[display](p1);
> p2:=plot([seq([x[i],yh[i]],i=0 n)],color=blue, legend="Nghiệm hiệu chỉnh"): plots[display](p2);
Để vẽ đồ thị cho các nghiệm dự báo và nghiệm hiệu chỉnh, ta sử dụng đoạn mã sau: `p1:=plot([seq([x[i],yd[i]],i=0 n)],color=blue, legend="Nghiệm dự báo")` và `p2:=plot([seq([x[i],yh[i]],i=0 n)],color=red, legend="Nghiệm hiệu chỉnh")` Sau đó, ta hiển thị các đồ thị bằng lệnh `plots[display](p1,p2)` Đối với các ví dụ khác, chỉ cần thay thế hàm `hàm(x, y)` bằng hàm tương ứng trong ví dụ và điều chỉnh giá trị `y 0` cùng với giá trị `n` phù hợp.
Code: Kết hợp phương pháp Nystro¨m 3 bước và Adams- Moulton 2 bước Đây là code của ví dụ 3.3
["Nhap ham f(x,y)= ",TextField[f]("x*exp(y)- y*cos(x)")],
[ "Nhap a= ", TextField[a]("0"), " b= ", TextField[b]("0.1")], [ "Nhap n= ", TextField[n]("1000"), " y0= ",
> gtn:=Maplets[Display](GD); ham:=parse(gtn[1]); n:=parse(gtn[4]); a:=parse(gtn[2]); b:=parse(gtn[3]); y0:=parse(gtn[5]); h:=evalf((b-a)/n): f:=unapply(ham,x,y): epsilon:^(-20): nmax:0:
> for i from 0 to n do x[i]:=a+i*h: end do:
> yh[0]:=evalf(y0,20): yd[0]:=evalf(y0,20): for z from 1 to 2 do
H[3][1]:=evalf(yh[2]+ h*((5/12)*f(x[3],H[3][0])+(8/12)*f(x[2],yh[2])-(1/12)*f(x[1],yh[1])),10); i:=1: while abs(H[3][i]-H[3][i-1])>epsilon do i:=i+1;
H[3][i]:=evalf(yd[2]+h*((5/12)*f(x[3],H[3][i-1])+(8/12)*f(x[2], yh[2])-(1/12)*f(x[1],yh[1])),10); if i>nmax then break; end if; end do; yh[3]:=H[3][i];
> for i from 4 to n do yd[i]:=evalf(yh[i-2]+(h/3)*(7*f(x[i-1],yh[i-1])
H[i][1]:=evalf(yh[i-1]+h*((5/12)*f(x[i],H[i][0])+(8/12)* f(x[i-1],yh[i-1])-(1/12)*f(x[i-2],yh[i-2])),20): j:=1: while abs(H[i][j]-H[i][j-1])>epsilon do j:=j+1;
H[i][j]:=evalf(yh[i-1]+h*((5/12)*f(x[i],H[i][j-1])+(8/12)* f(x[i-1],yh[i-1])-(1/12)*f(x[i-2],yh[i-2])),20): if j>nmax then break; end if; end do: yh[i]:=H[i][j]; end do:
Trong bài viết này, chúng ta giải phương trình vi phân với điều kiện ban đầu y(0) = y0 bằng phương pháp dsolve trong Maple Nếu không tìm được nghiệm chính xác, Maple sẽ sử dụng phương pháp Runge-Kutta bậc 4-5 để cung cấp nghiệm số làm cơ sở so sánh Nếu có nghiệm, chúng ta sẽ in ra nghiệm chính xác và hàm y(x) tương ứng Cuối cùng, kết quả sẽ được trình bày dưới dạng bảng với các giá trị x và y dự báo.
"y hieu chinh","y Maple","yM-yd","yM-yh");
> for i from 0 to 10 do printf("%10.3f %20.15f %20.15f %20.15f %20.15f %20.15f\n"
,x[i*n/10],yd[i*n/10],yh[i*n/10],evalf(ngh(x[i*n/10])), evalf(abs(ngh(x[i*n/10])-yd[i*n/10]),15), evalf(abs(ngh(x[i*n/10])-yh[i*n/10]),15)); end do;
> p1:=plot(ngh(t),t=a b,color=red,legend="Nghiệm chính xác"): p2:=plot([seq([x[i],yh[i]],i=0 n)],color=blue, legend="Nghiệm hiệu chỉnh"): plots[display](p2,p1);
> p1:=plot(ngh(t),t=a b,color=red,legend="Nghiệm Maple"): plots[display](p1);
> p2:=plot([seq([x[i],yh[i]],i=0 n)],color=blue, legend="Nghiệm hiệu chỉnh"): plots[display](p2);
Để hiển thị các nghiệm dự báo và nghiệm hiệu chỉnh, ta sử dụng đoạn mã sau: `p1:=plot([seq([x[i],yd[i]],i=0 n)],color=blue, legend="Nghiệm dự báo")` và `p2:=plot([seq([x[i],yh[i]],i=0 n)],color=red, legend="Nghiệm hiệu chỉnh")` Sau đó, ta kết hợp hai biểu đồ này bằng lệnh `plots[display](p1,p2)` Đối với các ví dụ khác, chúng ta cũng sẽ áp dụng mã tương tự, nhưng cần thay thế hàm `hàm(x, y)` bằng hàm tương ứng trong từng ví dụ và điều chỉnh giá trị y0 cùng với giá trị n cho phù hợp.
Code: Kết hợp phương pháp Nystro¨m 3 bước và Adams- Moulton 3 bước Đây là code của ví dụ 3.5
["Nhap ham f(x,y)= ",TextField[f]("x^3*exp(x^2)+ 2*x*y")], [ "Nhap a= ", TextField[a]("0"), " b= ", TextField[b]("1")], [ "Nhap n= ", TextField[n]("1000"), " y0= ",
> gtn:=Maplets[Display](GD); ham:=parse(gtn[1]); n:=parse(gtn[4]); a:=parse(gtn[2]); b:=parse(gtn[3]); y0:=parse(gtn[5]); h:=evalf((b-a)/n): f:=unapply(ham,x,y): epsilon:^(-20): nmax:0:
> for i from 0 to n do x[i]:=a+i*h: end do:
> yh[0]:=evalf(y0,20): yd[0]:=evalf(y0,20): for z from 1 to 2 do
H[3][1]:=evalf(yh[2]+ h*((9/24)*f(x[3],H[3][0])+(19/24)*f(x[2], yh[2])-(5/24)*f(x[1],yh[1])+(1/24)*f(x[0],yh[0])),15); i:=1: while abs(H[3][i]-H[3][i-1])>epsilon do i:=i+1;
H[3][i]:=evalf(yd[2]+h*((9/24)*f(x[3],H[3][i-1])+(19/24)*f(x[2], yh[2])-(5/24)*f(x[1],yh[1])+(1/24)*f(x[0],yh[0])),15); if i>nmax then break; end if; end do; yh[3]:=H[3][i];
> for i from 4 to n do yd[i]:=evalf(yh[i-2]+(h/3)*(7*f(x[i-1],yh[i-1])
+(1/24)*f(x[i-3],yh[i-3])),15): j:=1: while abs(H[i][j]-H[i][j-1])>epsilon do j:=j+1;
+(1/24)*f(x[i-3],yh[i-3])),15): if j>nmax then break; end if; end do: yh[i]:=H[i][j]; end do:
Để giải phương trình vi phân y'(t) = f(t, y(t)) với điều kiện y(0) = y0, sử dụng Maple, nếu không tìm được nghiệm chính xác, chương trình sẽ thông báo "Không tìm được nghiệm chính xác Maple sẽ cho nghiệm số bằng phương pháp Runge-Kutta bậc 4-5 để làm cơ sở so sánh." Trong trường hợp có nghiệm, nó sẽ sử dụng hàm unapply để định nghĩa nghiệm y(t) và in ra "Nghiệm chính xác giải bằng Maple" Kết quả sẽ được trình bày theo định dạng bảng với các giá trị x tương ứng.
"y du bao", "y hieu chinh","y Maple","yM-yd","yM-yh");
> for i from 0 to 10 do printf("%10.3f %20.15f %20.15f %20.15f %20.15f %20.15f\n"
,x[i*n/10],yd[i*n/10],yh[i*n/10],evalf(ngh(x[i*n/10]),15), evalf(abs(ngh(x[i*n/10])-yd[i*n/10]),15), evalf(abs(ngh(x[i*n/10])-yh[i*n/10]),15)); end do;
> p1:=plot(ngh(t),t=a b,color=red,legend="Nghiệm chính xác"): p2:=plot([seq([x[i],yh[i]],i=0 n)],color=blue, legend="Nghiệm hiệu chỉnh"): plots[display](p2,p1);
> p1:=plot(ngh(t),t=a b,color=red,legend="Nghiệm Maple"): plots[display](p1);
> p2:=plot([seq([x[i],yh[i]],i=0 n)],color=blue, legend="Nghiệm hiệu chỉnh"): plots[display](p2);
Để vẽ đồ thị cho các nghiệm dự báo và hiệu chỉnh, ta sử dụng đoạn mã sau: `p1:=plot([seq([x[i],yd[i]],i=0 n)],color=blue, legend="Nghiệm dự báo")` và `p2:=plot([seq([x[i],yh[i]],i=0 n)],color=red, legend="Nghiệm hiệu chỉnh")` Sau đó, hiển thị cả hai đồ thị bằng lệnh `plots[display](p1,p2)` Đối với các ví dụ khác, ta chỉ cần thay thế hàm `hàm(x, y)` bằng hàm tương ứng trong ví dụ và điều chỉnh giá trị y 0 cùng với giá trị n cho phù hợp.
Trong khóa luận này, tác giả hệ thống lại các khái niệm cơ bản trong phương pháp số giải phương trình vi phân, sử dụng cặp phương pháp Nystrom và Adams-Moulton để dự báo và hiệu chỉnh, nhằm đưa ra nghiệm gần đúng với sai số nhỏ so với nghiệm chính xác Lập trình được thực hiện trên Maple, kèm theo minh họa đồ thị trực quan Chương hai trình bày cách thành lập các phương pháp Nystrom và Adams-Moulton, cùng với một số phương pháp cụ thể để giải phương trình vi phân Ở chương ba, tác giả áp dụng cặp phương pháp Nystrom 2 bước và Adams-Moulton 2 bước, Nystrom 3 bước và Adams-Moulton 2 bước, cũng như Nystrom 3 bước và Adams-Moulton 3 bước để giải số phương trình vi phân.
Phương pháp Nystro¨m kết hợp với phương pháp Adams- Moulton là một cặp dự báo- hiệu chỉnh khá tốt.
[1] Arieh Iserles, A first course in the numerical analysis of differential equation (Second Edition), Cambridge University Press, New York, 2009.
[2] Butcher J.C (John Charles), Numerical methods for ordinary differ- ential (Second edition), John Wiley & Sons 2008.
[3] B V Ramana, Higher engineering mathematics, The McGraw-Hill Companies, 2006.
[4] Dahlquits, Convergence and stability in the numerical integration of ordinary differential equation,Math Scand 4, 1956, pp 33 - 53.
[5] Henrici , Discrete variable methods in ordinary differential equation, Wiley, New York, 1962.
[6] Isaascon and H.B Keller,Analysis of Numerical Methods, Wiley, New York, 1966.
[7] J.D Lambert, Numerical Methods for ordinary differential systems, John Wiley and Sons Ltd, Reprinted May 1993.
[8] Hoàng Trọng Thái, Trần Thị Ngọc Diệp, Lê Quang Phan, Nguyễn Văn Tuấn, Sử dụng phần mềm toán học, Nhà xuất bản đại học sư phạm Hà Nội, 2007.
[9] Lê Trọng Vinh,Giải tích số, NXB Khoa Học Kỹ Thuật Hà Nội, 2000.