inżynierskie metody numeryczne D10/325, [email protected] ...
Metody numeryczne - if.pw.edu.plagatka/numeryczne/wyklad_08.pdf · Numeryczne rozwi ązanie...
Transcript of Metody numeryczne - if.pw.edu.plagatka/numeryczne/wyklad_08.pdf · Numeryczne rozwi ązanie...
Równania róŜniczkowe zwyczajne
),( yxfdx
dy=
Równanie róŜniczkowe zwyczajne pierwszego rzędu
11)( yxy =z warunkiem początkowym
f(x,y) – nachylenie krzywej y(x) będące funkcją x i y.
Np. rozwaŜmy następujące równanie:
xeyyxf
dx
dy 3.072.1),(
−+−==
Dla warunku początkowego
Numeryczne rozwiązanie równania róŜniczkowego – zbiór punktów, które przybliŜają
funkcję y(x).
Metoda Eulera),( yxf
dx
dy=
∫∫++
=11
),(i
i
i
i
x
x
y
y
dxyxfdy
∫+
+=+
1
),(1
i
i
x
x
ii dxyxfyy
Całkę moŜemy policzyć jedną z metod omówionych na poprzednim wykładzie.
Najprostsza – metoda prostokątów:
))(,( 11 iiiiii xxyxfyy −+= ++
gdy stałeii xx −+1
),(1 iiii yxhfyy +=+
),(1
1ii
ii
ii
x
yxfxx
yy
dx
dy
i
=−
−≈
+
+
To samo uzyskamy
przybliŜając pochodną
za pomocą róŜnic zwykłych
Przykład:x
eyyxfdx
dy 3.072.1),(
−+−==
Przedział 0 ≤ x ≤ 2.5 Warunek początkowy y(0) = 3.
xxeey
2.13.0
9
43
9
70 −− −=
Krok h = 0.5
01 =x 31 =y
5.05.012 =+= xx 7.4)72.1(5.0 13.0
112 =+−+= − xeyyy
15.023 =+= xx 893.4)72.1(5.0 23.0
223 =+−+= − xeyyy
5.15.034 =+= xx 550.4)72.1(5.0 33.0
334 =+−+= − xeyyy
25.045 =+= xx 052.4)72.1(5.0 43.0
445 =+−+= − xeyyy
5.25.056 =+= xx 542.3)72.1(5.0 53.0
556 =+−+= − xeyyy
0.0 0.5 1.0 1.5 2.0 2.5
3.5
4.0
4.5
5.0
0.0 0.5 1.0 1.5 2.0 2.5
3.5
4.0
4.5
5.0
Analiza błędów
Błędy zaokrągleń
Błędy obcięcia
Wynikają z arytmetyki zmiennoprzecinkowej w komputerze
Wynikają z przyjętego przybliŜenia metody rozwiązywania
równań.
Dwa rodzaje:
Błąd lokalny – związany w pojedynczym krokiem metody
Błąd akumulowany – związany z nawarstwianiem się błędów z poprzednich
kroków.
Razem dają one całkowity błąd obcięcia.
Lokalny błąd obcięcia
Dokładne rozwiązanie w kroku i dane jest przez rozwinięcie w szereg Taylora:
ix
NS
ii
NS
i
Taylor
idx
ydhyxhfyy
ξ=
+ ++=2
22
12
),(
gdzie
ixx
NS
iidx
dyyxf
=
=),(
(NS –rozwiązanie
numeryczne)
iξ jest liczbą między xi i xi+1.
),(1
NS
ii
NS
i
NS
i yxhfyy +=+
Porównując z metodą Eulera
)(2
2
2
22
11hO
dx
ydhyye
ix
NS
i
Taylor
i
TR
i ==−==
++
ξ
Dostajemy lokalny błąd obcięcia
(∗)
Akumulowany błąd obcięcia
Całkowity błąd obcięcia w punkcie xi:
NS
i
TS
i
TR
i yyE −=
Całkowity błąd obcięcia w punkcie xi*1:
NS
i
TS
i
TR
i yyE 111 +++ −=
ix
TS
ii
TS
i
TS
idx
ydhyxhfyy
η=
+ ++=2
22
12
),(
Prawdziwa wartość moŜe być wyraŜona przez rozwinięcie w szereg Taylora:TS
iy 1+
(∗∗)
Odejmując od otrzymujemy (∗)(∗∗)
[ ]ix
NS
ii
TS
ii
TR
i
TR
idx
ydhyxfyxfhEE
η=
+ +−+=2
22
12
),(),(
Twierdzenie o wartości średniej
JeŜeli f(x) jest ciągła na zamkniętym przedziale [a,b] i róŜniczkowalna na (a,b), to
istnieje takie c w tym przedziale, Ŝe
ab
afbf
dx
dycf
cx −
−==
=
)()()('
Zatem
[ ] TR
i
xxy
NS
i
TS
i
xxy
NS
ii
TS
ii Ey
yxfyy
y
yxfyxfyxf
i
i
i
i==
== ∂
∂=−
∂
∂=−
γγ
),()(
),(),(),(
gdzie γi jest wartością y między a NS
i
TS
i yy
ii
ixxx
y
TR
i
TR
idx
ydh
y
yxfhEE
ηγ
===
+ +
∂
∂+=
2
22
12
),(1
ii
ixxx
y
TR
i
TR
idx
ydh
y
yxfhEE
ηγ
===
+ +
∂
∂+=
2
22
12
),(1
C≤M≤
[ ] 2
1 1 MhhCEETR
i
TR
i ++≤+
Teraz zobaczmy, jak błąd obcięcia akumuluje się w kolejnych krokach.
Czyli górne oszacowanie błędu:
NSTSTRyyboE 111 ,0 ==
2
2 MhETR ≤
[ ] [ ] [ ]{ }11112222
23 ++=++=++≤ hCMhMhhCMhMhhCEETRTR
[ ] [ ]{ }11122
4++++≤ hChCMhE
TR
Niech ]1[ hCz +=
1
11
12
−
−=+++
+
z
zzzz
mm
[ ] [ ]{ }1111 1
1
2 −+=
−+
≤−
−i
i
TR
i hCC
hM
hC
hCMhE
Z równania tego trudno wciąŜ oszacować rząd wielkości błędu. Zwróćmy jednak uwagę, Ŝe
...!32
132
++++=ss
ses
...!3
)(
2
)(1
32
++++=hChC
hCehC
hCehC ≤+1
[ ] )1(11
−−≤+ ihCi
ehC
{ }1)1( −≤ −ihCTR
i eC
hME
Po N krokach całkowity błąd obcięcia wyniesie
{ } { }11)(
111 −=−≤ −
++ xxChCNTR
NNe
C
hMe
C
hME
h
xxN N 11 −
= +bo
Czyli )(1 hOETR
N ≤+choć )(
2hOeTR
i =
Niejawna metoda Eulera
),(111
1
+++
+
+=
+=
iiii
ii
yxhfyy
hxx
Równanie to jest w ogólności nieliniowe i musi być rozwiązane jedną z metod
omówionych na wykładzie nr 2.
Rząd błędu jest taki sam jak w zwykłej metodzie Eulera.
Zmodyfikowana metoda Eulera
ZałoŜenie, Ŝe nachylenie między punktami xi i xi+1 jest stałe było głównym źródłem
błędów w metodzie Eulera.
),( ii
ixx
yxfdx
dy=
=
Nachylenie w metodzie zmodyfikowanej jest średnią nachylenia na początku
przedziału i oszacowania nachylenia na końcu przedziału.
Nachylenie na początku przedziału:
By oszacować nachylenie na końcu przedziału najpierw trzeba oszacować yi+1:
),(1 iii
Eu
i yxhfyy +=+ liczone zwykłą metodą EuleraEu
y
Wreszcie szacujemy nachylenie
),( 11
1
1
Eu
ii
xxyy
yxfdx
dy
i
Eui
++
==
=
+
+
Zmodyfikowana metoda Eulera (MidPoint).
W metodzie tej nachylenie jest szacowane na podstawie wartości y w środku przedziału.
),(2
iiim yxfh
yy += liczone zwykłą metodą Euleramy
),( mm
xx
yxfdx
dy
m
==
),(1 mmii yxhfyy +=+
Metody Rungego-Kutty
W metodach tych nachylenie szacowane jest na podstawie kilku punktów
wewnątrz przedziału. RóŜne metody RK klasyfikowane są ze względu na ich
rząd (odpowiadający liczbie punktów wziętych do szacowania nachylenia)
Np. metoda RK drugiego rzędu ma lokalny błąd obcięcia O(h3) i akumulowany
błąd obcięcia O(h2).
Metody Rungego-Kutty drugiego rzędu
( )( )( )
12122
1
22111
,
,
hKbyhaxfK
yxfK
hKcKcyy
++=
=
++=+
ii
ii
ii
Stałe 21221 ,,, bacc zaleŜą od wybranej metody drugiego rzędu
Zmodyfikowana metoda Eulera w postaci metody RK drugiego rzędu
1,1,2
1,
2
121221 ==== bacc
( )
),(
),(
2
1
12
1
211
hKyhxfK
yxfK
hKKyy
ii
ii
ii
++=
=
++=+
2
),(),(11
1
Eu
iiiiii
yxfyxfhyy ++
+
++=
Przypomnienie
Równania te moŜna otrzymać całkując ogólne równanie róŜniczkowe zwyczajne
za pomocą metody trapezów.
Metoda MidPoint w postaci metody RK drugiego rzędu
2
1,
2
1,1,0 21221 ==== bacc
)2
1,
2
1(
),(
12
1
21
hKyhxfK
yxfK
hKyy
ii
ii
ii
++=
=
+=+
Metody RK drugiego rzędu i rozwinięcie w szereg Taylora
yi+1 moŜna przybliŜyć szeregiem:
)(2
3
2
22
1 hOdx
ydh
dx
dyhyy
ii xx
ii +++=+
),( ii
ix
yxfdx
dy=
iiiii xyxyxixdx
dy
y
yxf
x
yxf
dx
yd
,,
2
2),(),(
∂
∂+
∂
∂=
)(),(),(
2
),(
2),(
3
,
2
,
2
1 hOyxfy
yxfh
x
yxfhyxhfyy ii
yxyx
iiii
iiii
+∂
∂+
∂
∂++=+
( )( )( )
12122
1
22111
,
,
hKbyhaxfK
yxfK
hKcKcyy
++=
=
++=+
ii
ii
ii
Dla metod RK drugiego rzędu:
Rozwijając K2 w szereg Taylora:
( ) )(),(),(
,2
12122
,,
hOKy
yxfhb
x
yxfhayxfK
iiii yxyx
+∂
∂+
∂
∂+=
ii
(∗)
Wstawiając K2 i K1 do (*):
( ) ( )
)(),(),(
),(,,
32
212
2
22211
,
,
hOyxfy
yxfhbc
x
yxfhachyxfchyxfcyy
ii
yx
yx
ii
ii
ii
+∂
∂+
+∂
∂+++=+ iiii
)(),(),(
2
),(
2),(
3
,
2
,
2
1 hOyxfy
yxfh
x
yxfhyxhfyy ii
yxyx
iiii
iiii
+∂
∂+
∂
∂++=+
Porównując wyrazy tego samego rzędu tu i tu
Otrzymujemy:
2
1
2
1
1
212
22
21
=
=
=+
bc
ac
cc
Trzy równania – cztery niewiadome, zatem wiele rozwiązań.
Dwa przykłady pokazaliśmy wcześniej.
Metody Rungego-Kutty czwartego rzędu
( )( )( )( )( )
34324214144
23213133
12122
1
443322111
,
,
,
,
hKbhKbhKbyhaxfK
hKbhKbyhaxfK
hKbyhaxfK
yxfK
hKcKcKcKcyy
++++=
+++=
++=
=
++++=+
ii
ii
ii
ii
ii
Klasyczna metoda RK IV rzędu
0,1
2
1,
6
2,
6
1
424131434
3221323241
=====
========
bbbba
bbaacccc
Wtedy ( )
),(
)2
1,
2
1(
)2
1,
2
1(
),(
226
1
34
23
12
1
43211
hKyhxfK
hKyhxfK
hKyhxfK
yxfK
hKKKKyy
ii
ii
ii
ii
ii
++=
++=
++=
=
++++=+
Całkowity błąd obcięcia w metodzie RK IV rzędu jest O(h4).
Równania w czerwonej ramce moŜna wyprowadzić całkując ogólne równanie
róŜniczkowe za pomocą metody Simpsona 1/3.
RozwiąŜmy równanie Dokładne rozwiązanie
Warunek początkowy:
Krok:
2xy
dx
dy−= x2
22 exxy −++=
( ) 10 =y
1.0=h
Przykład
Pojedyczny krok:
( )[ ] ( ) ( )
( )
( )
( )[ ] ( )
[ ] 104829.1226
1
109499.0104988.1,1.01.0,
104988.02/.1,05.01.02
1,
2
1
10475.005.1,05.01.02
1,
2
1
1.0011.01,01.0,
4321
34
223
12
2
1
=++++=
==++=
=+=
++=
==
++=
=−===
+ KKKKyy
fKyhxfhK
KfKyhxfhK
fKyhxfhK
fyxfhK
i1i
x y f(x,y) K 1 K 2 K 3 K4 Wart. rzecz.
0 1 1 0.1 0.10475 0.104988 0.109499 1
0.1 1.104829 1.094829 0.109483 0.113707 0.113918 0.117875 1.104829
0.2 1.218597 1.178597 0.11786 0.121503 0.121685 0.125028 1.218597
0.3 1.340141 1.250141 0.125014 0.128015 0.128165 0.130831 1.340141
0.4 1.468175 1.308175 0.130817 0.133108 0.133223 0.13514 1.468175
0.5 1.601278 1.351278 0.135128 0.136634 0.13671 0.137799 1.601279
0.6 1.73788 1.37788 0.137788 0.138427 0.138459 0.138634 1.737881
0.7 1.876246 1.386246 0.138625 0.138306 0.13829 0.137454 1.876247
0.8 2.014458 1.374458 0.137446 0.136068 0.135999 0.134046 2.014459
0.9 2.150396 1.340396 0.13404 0.131492 0.131364 0.128176 2.150397
1 2.281717 1.281717 0.128172 0.12433 0.124138 0.119586 2.281718
Błąd bardzo mały.
y(5) = -111.4129 (-111.4132)
Metoda RK IV rzędu
-10
-8
-6
-4
-2
0
2
4
0 1 2 3 4
X Value
Y V
alu
e
Wart. dokł.
RK IV rzędu
Porównanie między metodami drugiego i czwartego rzędu pokazuje róŜnicę:
Porównanie metod RK
-10
-8
-6
-4
-2
0
2
4
0 1 2 3 4
X Value
Y V
alu
e
Wart. rzecz.
rząd II
rząd IV
Błąd metody
0.00
2.00
4.00
6.00
8.00
10.00
0 1 2 3 4 5
X ValueB
łąd
ab
so
lutn
y
błąd RK II błąd RK IV
Układy równań róŜniczkowych
nnnnn
n
n
Ytyyyytfdt
dy
Ytyyyytfdt
dy
Ytyyyytfdt
dy
==
==
==
)(),...,,,(
...
)(),...,,,(
)(),...,,,(
121
2122122
1112111
Rozwiązywanie układu r. r. za pomocą metod RK
Najpierw liczymy K1 dla wszystkich równań.
Potem liczymy K2 dla dla wszystkich równań.
……
Gdy znamy wszystkie K, obliczamy wszystkie yi+1.
),,,(
),,,(
),,,(
3
2
1
wzyxfdx
dw
wzyxfdx
dz
wzyxfdx
dy
=
=
=
w zakresie [a,b] z warunkami początkowymi y(a) = y1, z(a) = z1, w(a) = w1.
),,,(
),,,(
),,,(
31,
21,
11,
iiiiw
iiiiz
iiiiy
wzyxfK
wzyxfK
wzyxfK
=
=
=
)2
1,
2
1,
2
1,
2
1(
)2
1,
2
1,
2
1,
2
1(
)2
1,
2
1,
2
1,
2
1(
1,1,1,32,
1,1,1,22,
1,1,1,12,
hKwhKzhKyhxfK
hKwhKzhKyhxfK
hKwhKzhKyhxfK
wiziyiiw
wiziyiiz
wiziyiiy
++++=
++++=
++++=
Przykład: Układ trzech równań róŜniczkowych
KROK 1: Liczymy K1
KROK 2: Liczymy K2
)2
1,
2
1,
2
1,
2
1(
)2
1,
2
1,
2
1,
2
1(
)2
1,
2
1,
2
1,
2
1(
2,2,2,33,
2,2,2,23,
2,2,2,13,
hKwhKzhKyhxfK
hKwhKzhKyhxfK
hKwhKzhKyhxfK
wiziyiiw
wiziyiiz
wiziyiiy
++++=
++++=
++++=
),,,(
),,,(
),,,(
3,3,3,34,
3,3,3,24,
3,3,3,14,
hKwhKzhKyhxfK
hKwhKzhKyhxfK
hKwhKzhKyhxfK
wiziyiiw
wiziyiiz
wiziyiiy
++++=
++++=
++++=
KROK 3: Liczymy K3
KROK 4: Liczymy K4
KROK 5: Liczymy yi+1
( )
( )
( )hKKKKww
hKKKKzz
hKKKKyy
wwwwii
zzzzii
yyyyii
4,3,2,1,1
4,3,2,1,1
4,3,2,1,1
226
1
226
1
226
1
++++=
++++=
++++=
+
+
+
Równania róŜniczkowe wyŜszych rzędów
bxadladx
yd
dx
yd
dx
dyyxf
dx
ydn
n
n
n
≤≤
=
−
−
)1(
)1(
2
2
,...,,,,
Warunki początkowe:
1)1(
)1(
21 ....,,,)( −
=
−
−
=
=== n
ax
n
n
ax
Adx
ydA
dx
dyAay
Równanie n-tego rzędu moŜna przekształcić w układ n równań pierwszego rzędu:
)1(
)1(
212
2
121
...,,,−
−−
− =====n
n
nn
dx
yd
dx
dww
dx
yd
dx
dww
dx
dyw
Mamy zatem układ:
1212
2121
11
)(
...
)(
)(
−−−− ==
==
==
nnnn Aawwarunkiemzw
dx
dw
Aawwarunkiemzwdx
dw
Aaywarunkiemzwdx
dy
Przykład:
2
2
3
3
432dx
ydx
dx
dyyx
dx
yd++−=
7
2
3)0(
0
2
2
0
=
=
=
=
=
x
x
dx
yd
dx
dy
yz warunkami początkowymi:
moŜna przekształcić do postaci
Równanie róŜniczkowe trzeciego rzędu
7)0(432
2)0(
3)0(
2212
121
1
=++−=
==
==
wwarunkiemzxwwyxdx
dw
wwarunkiemzwdx
dw
ywarunkiemzwdx
dy
Stabilność metody
Gdy rozwiązujemy równanie róŜniczkowe numerycznie, chcielibyśmy, by błąd
nie narastał wraz z kolejnymi krokami rozwiązania. Czasami jednak tak nie jest –
objawia się wtedy niestabilność metody.
W ogólności stabilność rozwiązania zaleŜy od:
1. Wybranej metody numerycznej
2. Kroku h uŜywanego w metodzie
3. Specyfiki równania róŜniczkowego.
Istnieje kilka sposobów analizowania stabilności rozwiązań.
Porównanie rozwiązań z wykorzystaną pojedynczą precyzją obliczeń (float)
z rozwiązniami z podwójną precyzją (double).
Jak akumuluje się błąd zaokrągleń?
Jak akumuluje się błąd obcięcia?
Porównanie rozwiązań przy róŜnej wielkości kroku h.
Inny sposób: weźmy równanie, którego rozwiązanie jest znane analitycznie.
jeśli metoda jest niestabilna przy analizie tego równania, to moŜna oczekiwać,
Ŝe będzie teŜ niestabilna przy analizie innych równań.
1)0( =−= ywarunkuprzyydx
dyα
Weźmy równanie:
0>α
Rozwiązanie analityczne: xexy α−=)(
Zatem w punkcie i+1:
h
i
TShxhxx
i
TSexyeeeexy iii ααααα −−−+−−
+ ==== + )()()(
11
Rozwiązanie numeryczne metodą Eulera:
iiii yhhyyy )1()(1 αα −=−+=+
Porównując oba równania widzimy, Ŝe (1-αh) jest przybliŜeniem wykładnikaw rozwiązaniu analitycznym.
111 <−<− hα
20 << hα Warunek stabilności.
PoniewaŜ α zaleŜy od równania, oznacza to, Ŝe metoda będzie stabilna dlawystarczająco małego h.