Tóm tắt bài giảng phương pháp tính trường ĐHBKTPHCM- HCMUT
Trang 1Chương 6
GIẢI GẦN ĐÚNG PHƯƠNG TRÌNH VI PHÂN
1
I 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]
y(a) = y0 Cá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
2
1 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] 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
Giả 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]
Khai triển Taylor ta có
y(xk+1) = y(xk) + (xk+1-xk) y’(xk) + (xk+1-xk)2y’’(ξk)/2 với ξk∈ (xk, xk+1)
Công thức Euler :
yk+1 = yk+ h f(xk, yk) , k = 0, n-1 với h = xk+1 - xk
Trang 2Ví dụ : Dùng công thức Euler tìm nghiệm gần
đúng của bài toán Cauchy
y(0) = 0.5 vớ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
5
Công thức Euler
y0= 0.5
yk+1= yk + 0.2 (yk- xk2 +1)
k xk yk y(xk) |y(xk) - yk|
1 0.2 0.8 0.8292986 0.0292986
2 0.4 1.152 1.2140877 0.0620877
3 0.6 1.5504 1.6489406 0.0985406
4 0.8 1.98848 2.1272295 0.1387495
5 1 2.458176 2.6408591 0.1826831
6
2 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
Ví dụ :
Làm lại ví dụ trước nhưng dùng công thức Euler cải tiến
giải
ta có h = 0.2
x0 = 0, x1 = 0.2, x2= 0.4, x3 = 0.6, x4= 0.8, x5 = 1
Công thức Euler cải tiến
Trang 3k xk yk y(xk) |y(xk) - yk|
1 0.2 0.826 0.8292986 0.0033
2 0.4 1.20692 1.2140877 0.0072
3 0.6 1.6372424 1.6489406 0.0117
4 0.8 2.1102357 2.1272295 0.0170
5 1 2.6176876 2.6408591 0.0232
9
3 Công thức Runge Kutta bậc 4 :
1
1 2
2 3
6 ( , )
k k
K h
K h
=
10
Ví dụ : Xét bài toán Cauchy
y’ = 2.7xy + cos (x+2.7y), 1.2≤x y(1.2) = 5.4
Dùng công thức Runge-Kutta tính gần đúng y(1.5)
với bước h = 0.3
Công thức Runge-Kutta bậc 4
y(1.5) = 15.69260639 ≈ 15.6926
=
1
2
( , )
K h f x y
K h
K h f x y
K h
K h f x y
K h f x h y K
Trang 4II 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) = αm Nghiệm y = (y1, y2, …, ym)
13
Để tìm nghiệm gần đúng, ta chia đoạn [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
xo= a, x1= x0 +h, , xk = x0 + kh, , xn = b
Công thức Euler :
yi k+1= yi k + h fi(xk, y1 k, … , ym k)
∀i=1 m; k = 0 n-1
14
Công thức Euler cải tiến :
yi k+1= yi k + (K1 i + K2 i) / 2
K1 i= h fi(xk, y1 k, … , ym k)
K2 i= h fi(xk+h, y1 k+K1 1, … , ym k+K1 m)
∀i=1,m; k = 0, n-1
Công thức Runge-Kutta bậc 4 :
yi k+1= yi k + (K1 i+2K2 i+2K3 i+K4 i) / 6
K1 i= h fi(xk, y1 k, … , ym k)
K2 i= h fi(xk+h/2, y1 k+K11/2, … , ym k+K1 m/2)
K3 i= h fi(xk+h/2, y1 k+K21/2, … , ym k+K2 m/2)
K4 i= h fi(xk+h, y1 k+K31, … , ym k+K3 m)
∀i=1,m; k = 0, n-1
Ví dụ : Sử dụng công thức Euler giải gần đúng hệ pt vi phân
y’1= 3y1+ 2y2 – (2x2 +1)e2x
y’2= 4y1+ y2+ (x2 +2x –4) e2x
với 0 ≤x≤0.5 điều kiện ban đầu y1(0)=y2(0)=1 bước h = 0.1
So sánh với nghiệm chính xác
y1(x) = 1/3e5x–1/3e-x+e2x
y2(x) = 1/3e5x+2/3e-x+x2e2x
Trang 5Công thức Euler
y1 0 = 1
y1 k+1= y1 k + h (3y1k+ 2y2 k – (2xk2 +1)e2xk)
y2 0 = 1
y2 k+1= y2 k + h (4y1k+ y2 k+ (xk2 +2xk –4) e2xk)
xk y1k y1(xk) y2k y2(xk)
0.1 1.4 1.4694 1.1 1.1650
0.2 1.9154 2.1250 1.3071 1.5116
0.3 2.5903 3.0691 1.6729 2.1518
0.4 3.4870 4.4651 2.2732 3.2660
0.5 4.6940 6.5769 3.2187 5.1448
17
III GIẢI GẦN ĐÚNG PTVP CẤP CAO: Xét phương trình vi phân cấp m
y(m)= f(x, y, y’, , y(m-1)), a≤x≤b với điều kiện ban đầu
y(a) = α1, y’(a) = α2, , y(m-1)(a) = αm
18
Đặ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 = y2
y’2 = y3
y’m-1= ym
y’m = f(x, y1, y2, , ym)
Ví dụ : Sử dụng công thức Euler giải gần đúng
pt vi phân cấp 2 (tính xấp xỉ y và y’)
y “ – 2 y’ + 2y = sinx e2x , 0≤x≤0.5 điều kiện ban đầu
y(0) = -0.4, y’(0) = -0.6 với bước h = 0.1
Trang 6đặt y1 = y, y2= y’ chuyển pt về hệ
điều kiện y1(0) = -0.4, y2(0) = -0.6
Công thức Euler
y1 0 = -0.4
y1 k+1 = y1 k + 0.1 y2k
y2 0 = -0.6
y2 k+1 = y2 k + 0.1 (sinxke2xk- 2y1k+2y2 k)
21
xk y1 k=y y2 k=y’
0.1 -0.46 -0.64 0.2 -0.524 -0.6638 0.3 -0.5904 -0.6621 0.4 -0.6566 -0.6226 0.5 -0.7189 -0.5292
22
Ví dụ : Xét bài toán Cauchy
x“(t) = (Mt+5) x2(t) – 2Mx’(t)+1.2t + M, 1≤t
điều kiện ban đầu
x(1) = 1.3M, x’(1) = 1.8M
Dùng công thức Euler cải tiến, xấp xỉ giá trị của
hàm x(t) và x’(t) tại điểm t = 1.2 với bước h = 0.2
và M = 2.7
đặt y1 = x, y2= x’ chuyển pt về hệ
điều kiện y1(1) = 1.3M, y2(1) = 1.8M
giải
Công thức Euler cải tiến
y1 0 = 1.3M
y1 1 = y1 0+ (K11+K21)/2
y2 0 = 1.8M
y2 1 = y2 0 + (K12+K22)/2
K11= 0.2*y2 0
K21= 0.2*(y2 0+K12)
K12= 0.2( (Mt0+5)y102 -2My20+ 1.2t0+M)
K22= 0.2( (M(t0+h)+5)(y10 +K11)2 -2M(y20+K12)
+ 1.2(t0+h)+M)
Trang 7K11= 0.972 K12=14.504154
x(1.2) = y1 1= 5.9324154
x’(1.2) = y2 1= 18.622212816
25
IV GIẢI PTVP TUYẾN TÍNH CẤP 2 BẰNG PP SAI PHÂN HỮU HẠN :
Xét phương trình vi phân tuyến tính cấp 2 với điều kiện biên
p(x)y” + q(x)y’ + r(x)y = f(x), a≤x≤b y(a) = α, y(b) = β
PP sai phân hữu hạn :
Chia đoạn [a,b] thành n đoạn bằng nhau với bước h=(b-a)/n và các điểm nút
x0 = a, x1 = x0 +h, , xk = x0+ kh, , xn = b
26
sử dụng các công thức sai phân hướng tâm ta
xấp xỉ
y’(xk) ≈ (yk+1– yk-1) /2h
y”( xk) ≈ (yk+1 – 2yk + yk-1)/h2
với yklà giá trị xấp xỉ của hàm tại điểm xk
thay xk vào phương trình ta được
pk(yk+1–2yk + yk-1)/h2+ qk (yk+1–yk-1)/(2h) +rkyk= fk
với pk = p(xk), qk= q(xk), rk = r(xk), fk= f(xk),
biến đổi phương trình trên ta thu được hệ phương trình sau :
0
,
2
1 1
n
k n
∀ = −
Đây chính là hệ phương trình tuyến tính
Ay = b
Trang 8Với A là ma trận 3 đường chéo
1 1 1
2
2
1
2 2
2
2
2
n
n
r
h
r
A
r
r h
−
−
1
2 2
2 1
2
2
n n
n
f
h h y
f y
f y
f
h h
α
β
−
−
−
29
Trường hợp đặc biệt p(x) = 1
1
1 2 2
2
2
1 1
2
2
n n n
q r
h
r
A
r
q r h
−
−
−
1
1
2 2
2 1
1
1
2
1
2
n n
n n
q f
h h y
f y
f y
q f
h h
α
β
−
−
−
−
− −
− +
30
Ví dụ : Giải gần đúng pt vi phân cấp 2
y“ - y’ – (x+1)y = x-1, 0≤x≤1
y(0) = 1, y(1) = 0
với bước h = 0.25
giải
n = 4
1 2 3
0.809273318 0.582738415 0.318201229
y
y
Vậy nghiệm gần đúng
y(0) =1, y(0.25) = 0.8093, y(0.5) = 0.5827, y(0.75)=0.3182, y(1)=0
giải hệ phương trình tuyến tính: Ay = b
33.25 14 0 18.75
18 33.5 14 0.5
0 18 33.75 0.25
= − = −
3
2
2 2
2
p p q
f h
h h
h h
p q
h
α
β
− −
Trang 9Ví dụ : Giải gần đúng pt vi phân cấp 2
Mx2y”+xy’-8My = -3M2x2, 1.4≤x≤1.8
y(1.4) = 0.5M, y(1.8) = 1.5M
với bước h = 0.1, M= 2.7
giải
n = 4
rk -21.6 -21.6 -21.6
fk -49.2075 -55.9872 -63.2043
33
giải hệ phương trình tuyến tính : Ay = b
3
2
0
2
2 2
2
p p q
f h
h h
h h
p q
h
α
β
− −
Vậy nghiệm gần đúng
y(1.4) =1.35, y(1.5) = 2.0499, y(1.6) = 2.7247, y(1.7)=3.3882, y(1.8)=4.05
1 2 3
2.049897539 2.724708612 3.388177479
y
y y y
1236.6 615 0 859.2075 683.2 1404 699.2 55.9872
0 771.8 1582.2 3257.8443
34