Giải gần đúng phương trình vi phân
Trang 1Chương 6
GIẢI GẦN ĐÚNG PHƯƠNG TRÌNH VI PHÂN
Trang 2I GIẢI GẦN ĐÚNG PTVP CẤP 1 :
Xét bài toán Cauchy : tìm nghiệm y=y(x) của phương trình vi phân với giá trị ban đầu y0
y’ = f(x, y), x [a,b]a,b]
y(a) = y0Các phương pháp giải gần đúng :
Công thức Euler
Công thức Euler cải tiến
Công thức Runge-Kutta
Trang 31 Công thức Euler :
Để tìm nghiệm gần đúng của bài toán Cauchy
ta chia đoạn [a,b]a,b] thành n đoạn nhỏ bằng nhau với bước h = (b-a)/n
xo= a, x1 = x0 +h, , xk = x0 + kh, , xn = b
Nghiệm gần đúng của bài toán là dãy {yk} gồm các giá trị gần đúng của hàm tại xk
Ta có yk y(xk) , k =0, n
Trang 4Giả sử bài toán có nghiệm duy nhất y(x) có đạo hàm đến cấp 2 liên tục trên [a,b]a,b]
Khai triển Taylor ta có
y(xk+1) = y(xk) + (xk+1-xk) y’(xk) + (xk+1-xk) 2 y’’(k)/2 với k (xk, xk+1)
Công thức Euler :
yk+1 = yk + h f(xk, yk) , k = 0, n-1với h = xk+1 - xk
Trang 5Ví dụ : Dùng công thức Euler tìm nghiệm gần đúng của bài toán Cauchy
y’ = y – x2 +1, 0≤x≤1
y(0) = 0.5với n = 5
Tính sai số biết nghiệm chính xác là :
y(x) = (x+1)2 – 0.5ex
giải
ta có h = 0.2
x0 = 0, x1 = 0.2, x2 = 0.4, x3 = 0.6, x4 = 0.8, x5 = 1
Trang 6Công thức Euler
y0 = 0.5
yk+1 = yk + h f(xk, yk) = yk + 0.2 (yk - xk2 +1)
Trang 82 Công thức Euler cải tiến :
yk+1 = yk + (k1+k2)/2 k = 0,1, , n-1
k1 = hf(xk, yk),
k2 = hf(xk+h, yk + k1)với h = xk+1 - xk
Trang 9Ví dụ : Dùng công thức Euler cải tiến tìm nghiệm gần đúng của bài toán Cauchy
y’ = y – x2 +1, 0≤x≤1
y(0) = 0.5với n = 5
Tính sai số biết nghiệm chính xác là :
y(x) = (x+1)2 – 0.5ex
giải
ta có h = 0.2
x0 = 0, x1 = 0.2, x2 = 0.4, x3 = 0.6, x4 = 0.8, x5 = 1
Trang 10Công thức Euler cải tiến
Trang 11A = 0 (xk)
B = 0.5 (yk)
C = 0.2(B – A2 + 1) :
D = 0.2(B + C - (A+0.2)2 + 1):B=B + (C+D)/2:
A=A+0.2:
(A+1)2-0.5eA:Ans-B
Trang 123 Công thức Runge Kutta bậc 4 :
1
1 2
2 3
6 ( , )
Trang 13Ví dụ : Xét bài toán Cauchy
y’ = 2.7xy + cos (x+2.7y), 1.2≤x
y(1.2) = 5.4Dùng công thức Runge-Kutta tính gần đúng y(1.5) với bước h = 0.3
xo = 1.2, yo = 5.4
y1 = y0 + (K1+ 2K2+ 2K3+ K4) /6
Công thức Runge-Kutta bậc 4
giải
Trang 14K1= 0.3(2.7xoyo + cos(xo+2.7yo))
K2= 0.3(2.7(xo+0.3/2)(yo+K1/2) +cos(xo+0.3/2 +2.7(yo+K1/2))
K3= 0.3(2.7(xo+0.3/2)(yo+K2/2) +cos(xo+0.3/2 +2.7(yo+K2/2))
K4= 0.3(2.7(xo+0.3)(yo+K3) +cos(xo+0.3 +2.7(yo+K3)
Bấm máy ta được
K1 = 4.949578057 K2 = 8.367054617
K3 = 10.33000627 K4 = 19.41193853
y(1.5) = 15.69260639 15.6926
Trang 15Ví dụ : Dùng công thức Runge-Kutta tìm nghiệm gần đúng của bài toán Cauchy
y’ = y – x2 +1, 0≤x≤1
y(0) = 0.5với n = 5
Tính sai số biết nghiệm chính xác là :
y(x) = (x+1)2 – 0.5ex
giải
ta có h = 0.2
x0 = 0, x1 = 0.2, x2 = 0.4, x3 = 0.6, x4 = 0.8, x5 = 1
Trang 17= 0.2(1.11yk – 1.11xk2 – 0.22xk + 1.099)
K4 = 0.2[a,b] yk+0.2(1.11yk–1.11xk2–0.22xk+1.099) – (xk+0.2)2 +1 ]
Trang 19II GIẢI GẦN ĐÚNG HỆ PTVP :
Xét hệ phương trình vi phân cấp 1
y’1 = f1(x, y1, y2, , ym)y’2 = f2(x, y1, y2, , ym)
.y’m = fm(x, y1, y2, , ym)với a≤ x ≤ b và thỏa điều kiện ban đầu
y1(a) = 1, y2(a) = 2, , ym(a) = mNghiệm y = (y , y , …, y )
Trang 20Để tìm nghiệm gần đúng, ta chia đoạn [a,b]a,b]
thành n đoạn nhỏ bằng nhau với bước h = (b-a)/n và các điểm chia
Trang 21Công thức Euler cải tiến :
Trang 22Ví dụ : Sử dụng công thức Euler giải gần đúng hệ pt vi phân
Trang 25III GIẢI GẦN ĐÚNG PTVP CẤP CAO:
Xét phương trình vi phân bậc m
y(m)(x) = f(x, y, y’, , y(m-1)), a≤x≤bvới điều kiện ban đầu
y(a) = 1, y’(a) = 2, , y(m-1)(a) = m
Trang 26Đặt y1 = y, y2 = y’, y3 = y”, , ym = y(m-1)
Ta chuyển phương trình vi phân bậc m về hệ
m phương trình vi phân cấp 1
với điều kiện ban đầu
y1(a) = 1, y2(a) = 2, , ym(a) = m,
y’1 = y2y’2 = y3
y’m-1 = ymy’m = f(x, y, y’, , y(m-1))
Trang 27Ví dụ : Sử dụng công thức Euler giải gần đúng
pt vi phân cấp 2
y “ – 2 y’ + 2y = sinx e2x , 0≤x≤0.5 điều kiện ban đầu
y(0) = -0.4, y’(0) = -0.6với bước h = 0.1
So sánh với nghiệm chính xác biết nghiệm CX
y1(x) = 0.2e2x (sinx – 2cosx)
y2(x) = 0.2e2x(4sinx - 3cosx)=y’
Trang 28đặt y1 = y, y2 = y’ chuyển pt về hệ
y’1 = y2y’2 = sinx e2x– 2 y1 + 2y2