Tải bản đầy đủ (.ppt) (21 trang)

phương pháp tính: Giải phương trình vi phân thường

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (764.02 KB, 21 trang )


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

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

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

×