34
Dr Piotr Fronczak Metody numeryczne Wyklad nr 7

Metody numeryczne - if.pw.edu.plagatka/numeryczne/wyklad_08.pdf · Numeryczne rozwi ązanie równania róŜniczkowego – zbiór punktów, które przybli Ŝaj ą funkcj ęy(x). Metoda

Embed Size (px)

Citation preview

Dr Piotr Fronczak

Metody numeryczne

Wykład nr 7

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

++

==

=

+

+

2

),(),(11

1

Eu

iiiiii

yxfyxfhyy ++

+

++=

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.

Przykład:

1)0(5.2 =−= ywarunkuprzyydx

dy

Wniosek: Metody jawne (Eulera,

Runge-Kutty) są numerycznie stabilne,

jeśli krok h jest wystarczająco mały.

Metody niejawne są bezwarunkowo

stabilne.