BỘ MÔN TOÁN ỨNG DỤNG - ĐHBK
PHƯƠNG PHÁP TÍNH – SV
CHƯƠNG 5
GIẢI PHƯƠNG TRÌNH VI PHÂN THƯỜNG
•
TS. NGUYỄN QUỐC LÂN (5/2006)
NỘI DUNG
A- BÀI TOÁN CÔSI (GIÁ TRỊ ĐẦU)
B- BÀI TOÁN BIÊN
1 – PHƯƠNG PHÁP EULER
1- PHƯƠNG PHÁP SAI PHÂN HỮU HẠN
2 – EULER CẢI TIẾN + RUNGE – KUTTA
3 – HỆ PHƯƠNG TRÌNH VI PHÂN THƯỜNG
4 – PHƯƠNG TRÌNH VI PHÂN CẤP CAO
BÀI TOÁN CÔSI
Tìm hàm y = y(t) thoả phương trình vi phân thường & điều kiện đầu
Giải xấp xỉ: Chia [a, b] thành n đoạn bằng nhau, độ dài h
= (b – a)/n, (n + 1) điểm chia t
0
= a < t
1
= a + h < … < t
n
= b
=
≤≤=
α
)(
),,('
ay
btaytfy
a
b
a = t
0
b = t
n
t
1
t
2
h
y
0
= α
y
1
= ?
Cần tính gần đúng giá trò w
k
≈ y
k
= y(t
k
), k = 1 → n
MINH HOẠ Ý TƯỞNG
Bài toán Côsi:
& công thức xấp xỉ đạo hàm 2 điểm:
=
≤++−=
31)0(
0,255'
2
y
tttyy
Từ đó xây dựng đa thức nội suy Lagrange (spline) y
gđ
và vẽ
đồ thò so sánh với nghiệm chính xác g(t) =
hãy tính xấp xỉ nghiệm y tại t = 0.5, t = 1.
Với bước chia h = 0.5
h
xfhxf
xf
)()(
)('
00
0
−+
≈
t
et
52
3
1
−
+
Điểm chia:
0
0
=t
5.0
1
=t
.1
2
=t
Kết quả tìm được:
( )
( )
875.10.1
5.05.0
=
−=
y
y
33.087.442.6
2
+−=⇒ tty
gđ
cbtaty ++=
2
egđ.Lagrang
CÁC SƠ ĐỒ GIẢI XẤP XỈ PTRÌNH VPHÂN THƯỜNG
[ ]
=
∈=
α
)(
,),,('
ay
batytfy
Chia [a, b] → n đoạn
ihat
n
ab
h
i
+=
−
= ,
Tính w
i
, i = 0 → n
Sơ đồ Euler (i = 0 → n – 1)
S/đ Euler cải tiến (i = 0 → n – 1)
2)(
),(),,(
.
211
121
0
kkww
kwhthfkwthfk
ww
ii
iiii
i
++=
++==
⇒=
+
biếtđãsửGiả
α
),(
.
1
0
iiii
i
wthfww
ww
+=
⇒=
+
biếtđãsửGiả
α
Sơ đồ Runge –
Kutta: w
0
= α.
Giả sử biết w
i
⇒
++++=
+=++=
++==
+
+
6)22(
),(),2,2(
)2,2(),,(
43211
31423
121
kkkkww
kwthfkkwhthfk
kwhthfkwthfk
ii
iiii
iiii
Btoán Côsi: Tìm y(t)
VÍ DỤ PHƯƠNG PHÁP EULER
Sơ đồ Euler:
Bằng p/pháp Euler, giải bài toán Côsi với n = 3 đoạn chia:
So sánh nghiệm xấp xỉ với nghiệm g(t) = (t+1)
2
– 0.5e
t
.
Từ đó tính xấp xỉ tích phân bằng c/t hình thang:
=
≤≤+−=
5.0)0(
10,1'
2
y
ttyy
∫
=
1
0
)( dttyI
Giải: f(t,y) = y – t
2
+ 1
5.0,0
00
== wt
11
, wt
22
, wt
33
, wt
h = (b–a)/n = 1/3
+−+=+=
=
+
)1(2.0),(
5.0
2
1
0
iiiiiii
twwwthfww
w
KẾT QUẢ PHƯƠNG PHÁP EULER
Bảng kết quả:
Tính gần đúng tích phân với công thức hình thang
i t
i
w
i
g
i
= g(t
i
) | g
i
- w
i
|
0 0 0.5 0.5 0
1 1/3
2 2/3
3 1.
( ) ( ) ( ) ( )
[ ] [ ]
32103210
1
0
22
2
22
2
)( wwww
h
tytytyty
h
dtty +++≈+++≈
∫
3528807.1=
VÍ DỤ EULER CẢI TIẾN
Tính y(1.) của bt Côsi sau bằng
SĐ Euler cải tiến với h = 0.5:
=
≤≤+−=
5.0)0(
10,1'
2
y
ttyy
i t
i
w
i
k
1
k
2
0 0.0 0.5
1 0.5
2 1.0
5.0,1),(
2
=+−= htyytf
5.0,0
0
==
α
t ?,5.0
11
== wt
22
, wt
2
),(,),(
21
1121
kk
wwkwhthfkwthfk
iiiiii
+
+=→++==
+
0.75 1.0
1.375 1.0625
2.515625
1.21875
VÍ DUÏ RUNGE – KUTTA
Tính y(1.) baèng Runge – Kutta vôùi h = 0.5
=
+−=
5.0)0(
1'
2
y
tyy
i t
i
w
i
k
1
k
2
k
3
k
4
0 0.0 0.5
1 0.5
2 1.0
+++
+=
++=++=
++==
+
6
22
),(,)2,2(
)
2
,
2
(,),(
4321
1
3423
1
21
kkkk
ww
kwhthfkkwhthfk
k
w
h
thfkwthfk
ii
iiii
iiii
Runge –
Kutta 4:
w
i
→ w
i+1
75.0 90625.0
9451325.0
0976563.1
4251302.1
0875651.1
2032064.1
2331167.1
3286235.1
6396027.2
HỆ PHƯƠNG TRÌNH VI PHÂN THƯỜNG
Bài toán Côsi : Tìm hai hàm u
1
= u
1
(t), u
2
= u
2
(t) thoả
≤≤=
≤≤=
btauutf
dt
du
btauutf
dt
du
),,,(
),,,(
212
2
211
1
=
=
22
11
)(
)(
&
α
α
au
au
đầukiệnĐiều
Ký hiệu:
?,,0),(),(
2211
i
2
i
1
0
2
0
1
wwtínhwwBiết⇒≥≈≈ ituwtuw
i
i
i
i
0
ta =
hat +=
1
hat 2
2
+=
21
,
αα
( ) ( )
?,
1211
=tutu
?,
2
2
2
1
=ww
Chia [a, b] thành đoạn bằng nhau: Phân hoạch & rời rạc hoá
2
0
21
0
1
,
αα
== ww
1
2
1
1
, ww
MINH HOẠ Ý TƯỞNG
Xét bài toán Côsi với hệ phương trình vi phân thường:
( )
( )
( )
( )
=−+++=
=+−+=
10,424'
10,1223'
2
22
212
1
22
211
uettuuu
uetuuu
t
t
Với bước chia h = 0.5, tính xấp xỉ nghiệm u
1
, u
2
tại t = 0.5; 1
So sánh giá trò tính được với giá trò nghiệm chính xác:
( ) ( )
tttttt
eteetueeetu
225
2
25
1
3
2
3
1
;
3
1
3
1
++=+−=
−−
t u
1
u
2
0 1 1
0.5
1.0
Điểm chia:
0
0
=t
5.0
1
=t
.1
2
=t
( )
( )
10
10
2
1
=
=
u
u
( )
( )
?5.0
?5.0
2
1
=
=
u
u
( )
( )
?1
?1
2
1
=
=
u
u
SƠ ĐỒ EULER
S/đồ Euler:
Bài toán Côsi : Tìm hai hàm u
1
= u
1
(t), u
2
= u
2
(t) thoả
≤≤=
≤≤=
btauutf
dt
du
btauutf
dt
du
),,,(
),,,(
212
2
211
1
=
=
22
11
)(
)(
&
α
α
au
au
đầukiệnĐiều
( ) ( )
ii
i
iiii
i
ii
wwthfwwwwthfww
2122
1
22111
1
1
,,,,, +=+=
++
2
0
21
0
1
,
αα
== ww
( )
10,
21
−→= niww
ii
biếtsửGiả
VD:
( )
( )
( )
( )
( )
( )
=−+++=
=+−+=
10,424'
10,1223'
2
,,
22
212
1
,,
22
211
212
211
uettuuu
uetuuu
uutf
t
uutf
t
=
=
⇒
=
=
⇒
1
1
1
1
0
2
0
1
2
1
w
w
α
α
( )
( )
=+=
=+=
1,1,05.01
1,1,05.01
2
1
2
1
1
1
fw
fw
ÁP DỤNG : PHƯƠNG TRÌNH VI PHÂN CẤP 2
Bài toán Côsi cấp 2 (Ph/trình vi phân cấp 2 và đkiện đầu):
( )
( ) ( )
==
≥=
21
',
,',,"
αα
ayay
atyytfy
Đưa về bài toán Côsi cấp 1: Đổi biến u
1
(t)= y(t), u
2
(t)=y’(t)
( )
( ) ( )
===
==
2122
21121
,,',,'''
,,'
uutfyytfyu
uutfuu
Điều kiện đầu:
( ) ( )
( ) ( )
==
==
22
11
'
α
α
ayau
ayau
=
=
⇒
2
0
2
1
0
1
α
α
w
w
Sơ đồ Euler:
( )
( )
( )
+=+=
+=+=
2122
0
2
0
102
0
2
1
2
21
0
2
0
101
0
1
1
1
,,,,
,,
ααα
αα
ahfwwthfww
hwwthfww
VÍ DỤ
Với h = 0.1, tính xấp xỉ giá trò y(0.2), y’(0.2) của nghiệm
bài toán sau bằng phương pháp Euler:
−=−=
≥=+−
6.0)0(',4.0)0(
0,sin2'2"
2
yy
tteyyy
t
Đổi biến đưa về bài toán Côsi cấp 1: u
1
= y(t), u
2
= y’(t) ⇒
( ) ( ) ( )
( )
=++−=++−=
−=−===
212
2
21
2
2
2121121
,,sin22sin'22'
6.00,4.00&,,'
uutfteuuteyyu
uuuutfuu
tt
−=
−=
6.0
4.0
0
2
0
1
w
w
( )
( )
( )
( )
−−+−=+=
−−+−=+=
⇒
6.0,4.0,01.06.0,,
6.0,4.0,01.04.0,,
2
0
2
0
102
0
2
1
2
1
0
2
0
101
0
1
1
1
fwwthfww
fwwthfww
BÀI TOÁN BIÊN
Bài toán biên cấp 2: Tìm hàm y = y(x) thoả phương trình
( )
==
≤≤=
βα
byay
bxayyxfy
,)(
),',,(''
Hay gặp: Bài toán biên tuyến tính cấp 2
( ) ( )
==
≤≤++=
βα
byay
bxaxryxqyxpy
,
),()(')("
MINH HOẠ
Tính giá trò nghiệm y của bài toán biên tuyến tính cấp 2
( )
( )
( ) ( )
=−=
≤≤−+++−=
−
01,10
10,12'1''
2
yy
xexyyxy
x
tại các điểm chia cách đều của [0, 1] với bước chia h =
1/3 và xấp xỉ đạo hàm y’, y’’ bằng công thức hướng tâm
Điểm chia:
0
0
=x 31
1
=x
32
2
=x
1
3
=x
( )
10
0
−== yy
?
3
1
1
==
yy ?
3
2
2
==
yy
( )
01
3
== yy
PHƯƠNG PHÁP SAI PHÂN HỮU HẠN
BT biên tuyến tính
( )
( ) ( )
==
≤≤++=
βα
byay
bxaxryxqyxpy
,
*),()(')("
Chia [a, b] thành các đoạn nhỏ bằng nhau. Thay x = x
k
vào
(*). Xấp xỉ y’(x
k
) , y’’(x
k
): công thức đạo hàm hướng tâm
( ) ( ) ( )
2
012
1
2
)("
h
xyxyxy
xy
+−
≈
b= x
n+1
a= x
0
x
1
x
2
x
3
h
( )
( ) ( )
h
xyxy
xy
2
'
02
1
−
≈
( )
( ) ( )
h
xyxy
xy
2
'
13
2
−
≈
( ) ( ) ( )
2
123
2
2
)("
h
xyxyxy
xy
+−
≈
CÔNG THỨC LẮP GHÉP
+−−
+−
+−+−−
+−+
=
−
nn
n
qhp
h
p
h
p
h
qhp
h
p
h
qh
A
2
1
22
2
2
11
2
2
2
100
2
1
00
2
12
2
1
00
2
12
−+−
−
−
−
++−
=
−
β
α
nn
n
p
h
rh
rh
rh
rh
p
h
rh
b
2
1
2
1
2
1
2
3
2
2
2
11
2
n mốc x
k
∈ (a, b) – ứng n giá trò y
k
chưa biết → Ma trận cấp n
Ký hiệu p
k
= p(x
k
) … y
k
= y(x
k
), 1 ≤ k ≤ n ⇒ y= [y
1
, … y
n
]
T
: Ay = b
LẬP BẢNG LẮP GHÉP
Chia [a, b] thành các đoạn nhỏ độ dài h. n điểm chia x
k
(không kể 2 đầu) – ứng với y
k
chưa biết → n ẩn số y
k
i
x
k
p
k
q
k
r
k
a
kk
a
k,k+1
a
k-1,k
b
k
y
k
1
2
3
BT biên tuyến tính
( )
( ) ( )
==
≤≤++=
βα
byay
bxaxryxqyxpy
,
*),()(')("
Lập bảng cột x
k
→ p
k
= p(x
k
), q
k
= q(x
k
), r
k
= r(x
k
) → a
kk
(đ/chéo chính), a
k,k+1
(chéo trên), a
k-1,k
(dưới), b
k
→ Nghiệm y
k
Đ/chéo a
kk
: k = 1 → n; a
k,k+1
: k = 1 → (n – 1), a
k-1,k
: k = 2 → n
VÍ DỤ
Giải bài toán biên cấp 2 sau bằng phương pháp sai phân
hữu hạn với bước chia h = 0.2
==
+++−=
1)1(,2)0(
322'3"
yy
xyyy
h = 0.2 ⇒ n = 5 ⇒ 6 điểm chia ⇒ Hệ phương trình 4 ẩn
2.0
4.0
6.0
8.0
3−
3−
3−
3−
2
2
2
2
4.3
8.3
2.4
6.4
3.1
3.1
3.1
7.0
7.0
7.0
264.1−
152.0
168.0
116.1−
Ma trận cấp 4: Chéo chính a
kk
– 4 phần tử; Chéo trên a
k, k+1
: 3
08.2−
08.2−
08.2−
08.2−
i
x
i
p
i
q
i
r
i
a
ii
a
i,i+1
a
i-1,i
b
i
1
2
3
4
KẾT QUẢ
Giải hệ bằng phép khử Gauss (làm tròn 3 chữ số lẻ):
[ ]
−
−
−
−
−
−−
−
=
116.1
168.0
152.0
264.1
08.2
3.1
0
0
7.000
08.27.00
3.108.27.0
03.108.2
bA
[ ]
−−
−
−
−
−
=→
116.1
168.0
273.0
608.0
08.2
3.1
0
0
7.000
08.27.00
3.1642.10
0625.01
bA
=⇒
736.0
593.0
636.0
006.1
y