BỘ MÔN TOÁN ỨNG DỤNG - ĐHBK
om
-------------------------------------------------------------------------------------
ne
.C
PHƯƠNG PHÁP TÍNH – SV
Zo
CHƯƠNG 5
nh
Vi
en
GIẢI PHƯƠNG TRÌNH VI PHÂN THƯỜNG
TS. NGUYỄN QUỐC LÂN (5/2006)
Si
•
SinhVienZone.com
/>
NỘI DUNG
--------------------------------------------------------------------------------------------------------------------------
.C
1 – PHƯƠNG PHÁP EULER
om
A- BÀI TOÁN CÔSI (GIÁ TRỊ ĐẦU)
ne
2 – EULER CẢI TIẾN + RUNGE – KUTTA
nh
Vi
en
Zo
3 – HỆ PHƯƠNG TRÌNH VI PHÂN THƯỜNG
4 – PHƯƠNG TRÌNH VI PHÂN CẤP CAO
Si
B- BÀI TOÁN BIÊN
1- PHƯƠNG PHÁP SAI PHÂN HỮU HẠN
SinhVienZone.com
/>
BÀI TOÁN CÔSI
--------------------------------------------------------------------------------------------------------------------------
y'
f ( t , y ),
a
t
b
.C
điều kiện đầu
om
Tìm hàm y = y(t) thoả phương trình vi phân thường &
ne
y (a )
Zo
Giải xấp xỉ: Chia [a, b] thành n đoạn bằng nhau, độ dài h
nh
Vi
en
= (b – a)/n, (n + 1) điểm chia t0 = a < t1 = a + h < … < tn = b
y1 = ?
Si
y0 =
h
a
a = t0
t1
Cần tính gần đúng giá trò wk
SinhVienZone.com
b
t2
b = tn
yk = y(tk), k = 1
/>
n
MINH HOẠ Ý TƯỞNG
---------------------------------------------------------------------------------------------------------------------------------------
5y
y (0 )
5t
2
2t,
0
t
Với bước chia h = 0.5
om
Bài toán Côsi:
y'
1 3
f ( x0
.C
& công thức xấp xỉ đạo hàm 2 điểm:
f '( x0 )
h)
f ( x0 )
ne
h
Zo
hãy tính xấp xỉ nghiệm y tại t = 0.5, t = 1.
nh
Vi
en
Từ đó xây dựng đa thức nội suy Lagrange (spline) ygđ và vẽ
Điểm chia:
Si
đồ thò so sánh với nghiệm chính xác g(t) =
t0
1
e
5t
3
0
t1
Kết quả tìm được:
y 0 .5
0 .5
y 1 .0
1 . 875
SinhVienZone.com
t
2
0 .5
t2
1.
y gđ.Lagrang
y gđ
e
at
6 . 42 t
2
2
/>
bt
c
4 . 87 t
0 . 33
CÁC SƠ ĐỒ GIẢI XẤP XỈ PTRÌNH VPHÂN THƯỜNG
------------------------------------------------------------------------------------------------------------------------------
f ( t , y ), t
wi
a
n
, ti
a
w0
. Giả sử
k1
hf ( t i , w i ), k 2
n
wi
1
wi
Sơ đồ Runge –
k1
hf ( t i , w i ), k 2
Kutta: w0 =
k3
hf ( t i
Giả sử biết wi
SinhVienZone.com
.
wi
hf ( t i , w i )
S/đ Euler cải tiến (i = 0
ih
Si
Tính wi, i = 0
wi
Zo
b
n đoạn
nh
Vi
en
h
1
w i đã biết
ne
y (a )
Chia [a, b]
. Giả sử
w0
a,b
n – 1)
.C
y'
om
Sơ đồ Euler (i = 0
Btoán Côsi: Tìm y(t)
1
wi
h 2 , wi
(k1
2k2
n – 1)
w i đã biết
(k1
hf ( t i
h, wi
k1 )
k2) 2
hf ( t i
h 2 , wi
k 2 2 ), k 4
2k3
k1 2 )
hf ( t i
k4) 6
/>
1
, wi
k3)
VÍ DỤ PHƯƠNG PHÁP EULER
-------------------------------------------------------------------------------------------------------------------------------
y
t
y (0 )
2
0 .5
1,
0
t
1
.C
y'
om
Bằng p/pháp Euler, giải bài toán Côsi với n = 3 đoạn chia:
ne
So sánh nghiệm xấp xỉ với nghiệm g(t) = (t+1)2 – 0.5et.
nh
Vi
en
Zo
Từ đó tính xấp xỉ tích phân bằng c/t hình thang:
1
I
y ( t ) dt
0
Giải: f(t,y) = y – t2 + 1
t0
0 .5
t1 , w 1
t3 , w 3
t2 , w 2
Si
h = (b–a)/n = 1/3
0, w0
Sơ đồ Euler:
w0
wi
SinhVienZone.com
0 .5
1
wi
hf ( t i , w i )
wi
0 .2 ( w i
/>
2
ti
1)
KẾT QUẢ PHƯƠNG PHÁP EULER
----------------------------------------------------------------------------------------------------------------------------
0
0
0.5
1
1/3
2
2/3
3
om
wi
gi = g(ti )
| gi - wi |
0.5
0
.C
ti
Zo
ne
i
nh
Vi
en
Bảng kết quả:
1.
1
y ( t ) dt
0
Si
Tính gần đúng tích phân với công thức hình thang
h
2
y t0
2 y t1
2 y t2
y t3
h
2
w0
2 w1
1 . 3528807
SinhVienZone.com
/>
2w2
w3
VÍ DỤ EULER CẢI TIẾN
-------------------------------------------------------------------------------------------------------------------------------
SĐ Euler cải tiến với h = 0.5:
y
t
1, h
0 .5
0,
nh
Vi
en
Zo
t0
k1
hf ( t i , w i ) , k 2
ti
0
hf ( t i
h, wi
0 .5
k1 )
1,
0
0 .5 , w1
wi
k1
0.0
0.5
0.75
1
0.5
1.375
1.0625
2
1.0
2.515625
SinhVienZone.com
2
t
1
0 .5
t1
wi
Si
i
t
.C
2
y
y (0 )
ne
f (t , y )
y'
om
Tính y(1.) của bt Côsi sau bằng
1
?
t2 , w 2
k1
wi
k2
2
k2
1.0
1.21875
/>
VÍ DUÏ RUNGE – KUTTA
-------------------------------------------------------------------------------------------------------------------------------
4:
k3
i
ti
0 0.0
wi+1
wi
wi
1
Si
wi
0.5
1 0.5
1 . 4251302
2 1.0
2 . 6396027
SinhVienZone.com
hf ( t i
ne
Kutta
h 2 , wi
k1
wi
hf ( t i
h
2
, wi
k2 2) , k4
Zo
–
hf ( t i , w i ) , k 2
nh
Vi
en
Runge
k1
.C
om
Tính y(1.) baèng Runge – Kutta vôùi h = 0.5
2k2
2k3
y'
y
y (0 )
k1
t
2
1
0 .5
)
2
hf ( t i
h, wi
k3)
k4
6
k1
k2
0 . 75
0 . 90625
0 . 9451325
1 . 0976563
1 . 2032064
1 . 2331167
1 . 3286235
1 . 0875651
k3
/>
k4
HỆ PHƯƠNG TRÌNH VI PHÂN THƯỜNG
---------------------------------------------------------------------------------------------------------------------------------
du 1
f 1 ( t , u 1 , u 2 ),
dt
t
b
2
f 2 ( t , u 1 , u 2 ),
t
b
đầu
1
u 2 (a )
2
Zo
dt
a
kiện
.C
& Điều
u1 (a )
ne
du
a
om
Bài toán Côsi : Tìm hai hàm u1 = u1(t), u2 = u2(t) thoả
nh
Vi
en
Chia [a, b] thành đoạn bằng nhau: Phân hoạch & rời rạc hoá
0
0
w1
1
, w2
1
,
2
u 1 t1 , u 2 t1
?
2
2
w1 , w 2
?
Si
1
2
1
w1 , w 2
a
Ký hiệu: w 1i
SinhVienZone.com
t0
t1
i
u 1 ( t i ), w 2
a
u 2 ( t i ), i
h
t2
0
a
Biết
2h
0
w1 , w
0
2
i
tính w 1 , w
/>
i
2
?
MINH HOẠ Ý TƯỞNG
---------------------------------------------------------------------------------------------------------------------------------------
2u 2
u2'
4u1
u2
2t
2
2
t
1 e
2t
2t
, u1 0
1
.C
3u1
4 e
2t
ne
u1 '
om
Xét bài toán Côsi với hệ phương trình vi phân thường:
, u2 0
1
Zo
Với bước chia h = 0.5, tính xấp xỉ nghiệm u1, u2 tại t = 0.5; 1
nh
Vi
en
So sánh giá trò tính được với giá trò nghiệm chính xác:
1
u1 t
3
t0
1
e
t
e
2t
3
Si
Điểm chia:
e
5t
0
t1
1
; u2 t
0 .5
e
5t
3
t2
t
e
2
t e
2t
3
1.
u1 0
1
u 1 0 .5
?
u1 1
?
u2 0
1
u 2 0 .5
?
u2 1
?
SinhVienZone.com
2
t
u1
u2
0
1
1
0.5
1.0
/>
SƠ ĐỒ EULER
---------------------------------------------------------------------------------------------------------------------------------
du 1
f 1 ( t , u 1 , u 2 ),
dt
b
kiện
.C
& Điều
f 2 ( t , u 1 , u 2 ),
S/đồ Euler:
a
0
t
nh
Vi
en
0
w1
1, w2
i 1
i
w1
2
2
i
i
2t
i
i
w1 , w 2 i
i 1
w2
i
w2
hf
1
f1 t , u 1 , u 2
u2'
2
2t
4u1
u2
t
2t 4 e , u 2 0
f 2 t ,u1 ,u 2
SinhVienZone.com
1
u 2 (a )
Giả sử biết
3u1 2 u 2
2t
1 e , u1 0
VD:
đầu
b
hf 1 t i , w 1 , w 2 ,
Si
w1
u1 (a )
ne
2
dt
u1 '
t
Zo
du
a
om
Bài toán Côsi : Tìm hai hàm u1 = u1(t), u2 = u2(t) thoả
1
1
w1
1
1
0
2
n
1
i
i
ti , w1 , w 2
2
0
1
1
w1
2
1
w2
0
0 . 5 f 1 0 ,1 ,1
w2
1 0 . 5 f 2 0 ,1 ,1
/>
1
1
ÁP DỤNG : PHƯƠNG TRÌNH VI PHÂN CẤP 2
---------------------------------------------------------------------------------------------------------------------------------
f t, y, y' ,
y a
1
t
a
.C
y"
om
Bài toán Côsi cấp 2 (Ph/trình vi phân cấp 2 và đkiện đầu):
, y' a
2
f1 t , u 1 , u 2
y''
f t, y, y'
u2
nh
Vi
en
u1 '
Zo
ne
Đưa về bài toán Côsi cấp 1: Đổi biến u1(t)= y(t), u2(t)=y’(t)
u2'
Sơ đồ Euler:
1
w1
1
w2
SinhVienZone.com
0
u1 a
y a
u2 a
y' a
Si
Điều kiện đầu:
0
w1
0
w2
w1
1
0
0
0
2
1
w2
2
2
0
hf 1 t 0 , w 1 , w 2
hf
f 2 t, u1 , u 2
h
1
0
t0 , w1 , w 2
2
hf
2
2
a,
/>
1
,
2
VÍ DỤ
---------------------------------------------------------------------------------------------------------------------------------
Với h = 0.1, tính xấp xỉ giá trò y(0.2), y’(0.2) của nghiệm
om
bài toán sau bằng phương pháp Euler:
2t
.C
e
sin t , t
ne
y" 2 y ' 2 y
0 .4 , y ' ( 0 )
0 .6
Zo
y (0 )
0
u2'
0
w1
0
w2
u2
f1 t , u 1 , u 2
2t
2y
2 y' e
0 .4
Si
u1 '
nh
Vi
en
Đổi biến đưa về bài toán Côsi cấp 1: u1 = y(t), u2 = y’(t)
0 .6
SinhVienZone.com
1
w1
1
w2
&
sin t
0
w1
0
w2
u1 0
2u1
0 .4 , u 2 0
2u 2
0
e
0
hf 1 t 0 , w 1 , w 2
hf
0
2
0
t0 , w1 , w 2
2t
sin t
0 .6
f 2 t, u1 , u 2
0 .4
0 .1 f1 0 , 0 .4 , 0 .6
0 .6
0 .1 f 2 0 , 0 .4 , 0 .6
/>
BÀI TOÁN BIÊN
-------------------------------------------------------------------------------------------------------------------------
om
Bài toán biên cấp 2: Tìm hàm y = y(x) thoả phương trình
f ( x , y , y ' ),
a
x
b
r ( x ),
a
.C
y''
, y b
ne
y (a )
nh
Vi
en
Zo
Hay gặp: Bài toán biên tuyến tính cấp 2
y"
, y b
Si
y a
p(x) y' q(x) y
SinhVienZone.com
/>
x
b
MINH HOẠ
---------------------------------------------------------------------------------------------------------------------------------
x
y 0
1 y' 2 y
1, y 1
1
0
x
2
e
x
,0
x
1
.C
y''
om
Tính giá trò nghiệm y của bài toán biên tuyến tính cấp 2
ne
tại các điểm chia cách đều của [0, 1] với bước chia h =
nh
Vi
en
Zo
1/3 và xấp xỉ đạo hàm y’, y’’ bằng công thức hướng tâm
Điểm chia:
y 0
0
Si
x0
y0
SinhVienZone.com
1
x1
y
1
3
1 3
y1
x2
?
y
2
3
x3
2 3
y2
?
/>
y 1
1
y3
0
PHƯƠNG PHÁP SAI PHÂN HỮU HẠN
--------------------------------------------------------------------------------------------------------------------------------------
p(x) y' q(x) y
, y b
x
b *
.C
y a
r ( x ), a
om
BT biên tuyến tính
y"
ne
Chia [a, b] thành các đoạn nhỏ bằng nhau. Thay x = xk vào
y x2
y ' x1
y " ( x1 )
y x0
2h
Si
h
a= x0
nh
Vi
en
Zo
(*). Xấp xỉ y’(xk) , y’’(xk): công thức đạo hàm hướng tâm
y x2
SinhVienZone.com
x1
2 y x1
h
2
y ' x2
x2
y x0
y" ( x2 )
y x3
y x1
2h
x3
y x3
b= xn+1
2 y x2
h
/>
2
y x1
CÔNG THỨC LẮP GHÉP
------------------------------------------------------------------------------------------------------------------------------------
(a, b) – ứng n giá trò yk chưa biết
1
2
A
0
p2
2
2
p1
0
2
h q2
1
h
nh
Vi
en
h
1
2
0
1
0
SinhVienZone.com
0
1
2
pn 2
h r1
h
1
2
p1
h r2
2
0
h
2
h
2
2
p2
y= [y1, … yn]T: Ay = b
ne
h q1
Si
2
h
n
Zo
2
k
.C
Ký hiệu pk = p(xk) … yk = y(xk), 1
Ma trận cấp n
om
n mốc xk
h r3
b
pn
2
h qn
2
1
h rn
2
h rn
/>
1
1
h
2
pn
LẬP BẢNG LẮP GHÉP
------------------------------------------------------------------------------------------------------------------------------------
p(x) y' q(x) y
y a
, y b
r ( x ), a
x
b *
om
BT biên tuyến tính
y"
ne
.C
Chia [a, b] thành các đoạn nhỏ độ dài h. n điểm chia xk
pk = p(xk), qk = q(xk), rk = r(xk)
nh
Vi
en
Lập bảng cột xk
n ẩn số yk
Zo
(không kể 2 đầu) – ứng với yk chưa biết
(đ/chéo chính), ak,k+1 (chéo trên), ak-1,k (dưới), bk
i
xk
pk
Si
Đ/chéo akk: k = 1
qk
n; ak,k+1: k = 1
rk
akk
ak,k+1
Nghiệm yk
(n – 1), ak-1,k: k = 2
ak-1,k
bk
1
2
3
SinhVienZone.com
akk
/>
n
yk
VÍ DỤ
------------------------------------------------------------------------------------------------------------------------------------
hữu hạn với bước chia h = 0.2
.C
y"
om
Giải bài toán biên cấp 2 sau bằng phương pháp sai phân
6 điểm chia
Zo
n=5
nh
Vi
en
h = 0.2
2x
2 , y (1 )
3
1
ne
y (0 )
3 y' 2 y
Hệ phương trình 4 ẩn
ri
aii
Si
Ma trận cấp 4: Chéo chính akk – 4 phần tử; Chéo trên ak, k+1: 3
i
xi
pi
1
0 .2
3
2
0 .4
3
4
2
3 .4
2 . 08
1 .3
3
2
3 .8
2 . 08
1 .3
0 .7
0 . 152
0 .6
3
2
4 .2
2 . 08
1 .3
0 .7
0 . 168
0 .8
3
2
4 .6
2 . 08
0 .7
1 . 116
SinhVienZone.com
qi
ai,i+1
ai-1,i
bi
1 . 264
/>
KẾT QUẢ
------------------------------------------------------------------------------------------------------------------------------------
2 . 08
0
2 . 08
1 .3
Ab
0
SinhVienZone.com
0
0
1 . 642
0 .7
0
2 . 08
Zo
0 .7
0 . 625
Si
0
0
nh
Vi
en
0
ne
Ab
1
0
.C
0 .7
1 .3
om
Giải hệ bằng phép khử Gauss (làm tròn 3 chữ số lẻ):
0 .7
1 . 264
0
0 . 152
1 .3
0 . 168
2 . 08
1 . 116
0
0
0 . 608
1 . 006
1 .3
0
0 . 273
0 . 636
2 . 08
0 .7
y
1 .3
2 . 08
0 . 168
1 . 116
/>
0 . 593
0 . 736