Jawne i niejawne metody rozwiązywania równań różniczkowych

Transkrypt

Jawne i niejawne metody rozwiązywania równań różniczkowych
Zadanie 1: Schematy jawne i niejawne dla równa« ró»niczkowych
zwyczajnych
20 kwietnia 2016
Równanie ró»niczkowe o ogólnej postaci
du
= f (t, u)
dt
(1)
rozwi¡»emy prostymi schematami ró»nicowymi i porównamy dokªadno±¢ uzyskanych rozwi¡za«.
Zadanie 1
Nale»y znale¹¢ numerycznie rozwi¡zanie rówanania:
1
dy
= f (t) = −ay + 2a + e−at cos(t/2)
dt
2
(2)
przy u»yciu metod
10pkt)
a) jawnej Eulera (
10pkt)
b) niejawnej Eulera (
c) trapezów (
10pkt)
d) Rungego-Kutty 2 rz¦du (
10pkt)
e) Rungego-Kutty 4 rz¦du (
10pkt)
Rozwi¡zanie nale»y znale¹¢ dla nast¦puj¡cych parametrów:
poczatkowego
y(0) = 2.
a = 0.1, t ∈ [0; 40], ∆t = 0.5, 0.005
i warunku
Rozwi¡zanie dokªadne:
y(t) = e−at sin(t/2) + 2
(3)
Jako wyniki nale»y przedstawi¢ wykresy: a) rozwi¡zania numerycznego (ynum (t)) i b) bª¦du metody liczonego
jako
δ(t) = ydok (t)−ynum (t) dla ka»dej z metod.
Dla danej warto±ci
∆t nale»y:
i) zrobi¢ jeden wykres zbiorczy
przedstwiaj¡cy uzyskane rozwi¡zania numeryczne (wszystkie metody), ii) jeden wykres bª¦du dla jawnej i
p = 1), iii) jeden wykres bª¦du dla metody trapezów i RK2 (ten
p = 2) oraz iv) oddzielny wykres bª¦du dla RK4 (rz¡d zbie»no±ci p = 4). W sumie b¦dzie
niejawnej metody Eulera (rz¡d zbie»no±ci
sam rz¡d zbie»no±ci
8 wykresów.
Uwaga 1:
wszystkie metody najlepiej zaimplementowa¢ w tej samej p¦tli i zapisywa¢ wyniki (rozwi¡zania
+ bª¡d) do jednego pliku (dla okre±lonego
Uwaga 2:
multiplot
∆t)
- pozwoli to na ªatw¡ kontrol¦/podgl¡d uzyskanych danych.
wszystkie wykresy mo»na przedstawi¢ na jednym rysunku (1 plik zamiast 8) korzystaj¡c z opcji
w Gnuplocie.
Szkielet skryptu realizuj¡cego takie zadanie (wykresy s¡ umieszczane kolejno od
lewej do prawej ):
set term postscript color enhanced solid size 20cm,40cm
set out 'z1.eps'
set multiplot layout 4,2 rowsfirst
plot .............. #rozwiazania dla dt=0.1
plot .............. #rozwiazania dla dt=0.01
plot .............. #bª¡d metod Eulera dt=0.1
plot .............. #bª¡d metod Eulera dt=0.01
1
font 12
plot ..............
plot ..............
plot ..............
plot ..............
unset multiplot
#bª¡d
#bª¡d
#bª¡d
#bª¡d
metod trapezów
metod trapezów
metody RK4 dla
metody RK4 dla
i RK2 dla dt=0.1
i RK2 dla dt=0.01
dt=0.1
dt=0.01
jawna metoda Eulera
Po dyskretyzacji zmiennej czasowej
jako
un
tn = n · ∆t, n = 0, 1, 2, . . . , tmax /∆t aktualne
un+1 . Do znalezienia un+1
a rozwi¡zanie w chwili nast¦pnej (tn+1 ) przez
rozwi¡zanie oznaczymy
wykorzystujemy proste
podstawienie (metoda jawna):
un+1 = un + ∆tf (tn , un )
Powy»szy wzór stosujemy a» osiagniemy warunek
(4)
tn = tmax .
niejawna metoda Eulera
Do znalezienia
un+1
wykorzystujemy formuª¦:
un+1 = un + ∆tf (tn+1 , un+1 )
w której warto±¢
f (tn+1 , un+1 )
(5)
jest nieznana (dlatego metoda niejawna). Aby znale¹¢
un+1
wykorzystujemy
metod¦ Newtona poszukiwania pierwiastków równania nieliniowego:
F (un+1 ) = un+1 − un − ∆tf (tn+1 , un+1 )
(6)
Wykorzystujemy wzór iteracyjny:
uk+1
n+1
=
ukn+1
−
F (ukn+1 )
∂F (uk
n+1 )
∂uk
n+1
=
ukn+1 − un − ∆t −aukn+1 + 2a + 21 e−atn+1 cos(tn+1 /2)
−
1 + ∆ta
ukn+1
K = 20 razy startuj¡c
K
oblicze« un+1 = un+1 .
Wzór (7) iterujemy
do dalszych
od przybli»enia
u1n+1 = un ,
(7)
a ostatnie przybli»enie zachowujemy
metoda trapezów
W metodzie trapezów rozwi¡zanie w kolejnym kroku wyznaczamy wedªug wzoru:
∆t
[f (tn , un ) + f (tn+1 , un+1 )]
(8)
2
Poniewa» warto±ci f (tn , un+1 ) nie znamy (metoda niejawna) wi¦c un+1 znajdujemy w identyczny sposób jak
w metodzie niejawnej Eulera. Rozwi¡zanie w chwili tn+1 znajdujemy korzystaj¡c z metody Newtona. Czyli
un+1 = un +
najpierw deniujemy równanie nieliniowe:
F (un+1 ) = un+1 − un −
∆t
[f (tn , un ) + f (tn+1 , un+1 )]
2
(9)
a nast¦pnie znajdujemy jego miejsce zerowe korzystaj¡c z formuªy iteracyjnej:
uk+1
n+1
=
ukn+1
−
ukn+1 − un −
∆t
2
(−aun + 2a + 12 e−atn cos(tn /2)) + (−aukn+1 + 2a + 21 e−atn+1 cos(tn+1 /2))
1+
∆t
2 a
(10)
metoda Rungego-Kutty 2 rz¦du (jawna)
W jawnej metodzie RK2 rozwi¡zanie w chwili
tn+1
wyznaczamy korzystaj¡c z dwóch etapów po±rednich:
un+1 = un +
gdzie wielko±ci
k1 i k2
∆t
[k1 + k2 ]
2
(11)
s¡ zdeniowane w nast¦puj¡cy sposób:
k1
= f (tn , un )
(12)
k2
= f (tn+1 , un + ∆tk1 )
(13)
(14)
2
metoda Rungego-Kutty 4 rz¦du (jawna)
W jawnej metodzie RK4 rozwi¡zanie w chwili
tn+1
un+1 = un +
gdzie wielko±ci
ki
wyznaczamy korzystaj¡c z czterech etapów po±rednich:
∆t
[k1 + 2k2 + 2k3 + k4 ]
6
(15)
s¡ zdeniowane w nast¦puj¡cy sposób:
k1
= f (tn , un )
k2
= f (tn+1/2 , un +
k3
k4
(16)
∆t
k1 )
2
∆t
= f (tn+1/2 , un +
k2 )
2
= f (tn+1 , un + ∆tk3 )
(17)
(18)
(19)
(20)
oraz
tn+1/2 = tn +
∆t
2
Zadanie 2 - problem sztywny, ekstrapolacja Richardsona
Nale»y rozwi¡za¢ numerycznie problem oscylatora van der Pola tj. znale¹¢ rozwi¡zanie jego równania ruchu:
d2 u
du
− λ(1 − u2 )
+u=0
dt2
dt
(21)
Powy»sze RRZ 2 rz¦du zamieniamy na ukªad 2 RRZ 1 rz¦du:
du
dt
dv
dt
Przyjmujemy
λ = 0.35.
= f (t, u, v) = v
(22)
= g(t, u, v) = λ(1 − u2 )v − u
(23)
Poniewa» problem jest sztywny (czyli mamy do czynienia z ró»nymi skalami cza-
sowymi) zastosujemy automatyczn¡ kontrol¦ kroku czasowego. Sposób post¦powania jest nast¦puj¡cy. Je±li
znamy rozwi¡zanie w chwili
tn
to rozwi¡zanie w chwili
tn+2
mo»emy uzyska¢ na dwa sposoby.
sposób to oczywi±cie wykonanie jednego dªugiego kroku o dªugo±ci
2∆t
Pierwszy
które daje nam rozwi¡zanie
(1)
un+2
ró»n¡ce od dokªadnego o pewien bª¡d lokalny:
(1)
udok (tn+2 ) = un+2 + C(2∆t)N + O(∆tN +1 )
Mo»emy te» wykona¢ dwa krótsze kroki co
∆t
(24)
i otrzyma¢ lepsze rozwi¡zanie
(2)
un+2
co da nam inny bª¡d
lokalny:
(2)
udok (tn+2 ) = un+2 + 2C(∆t)N + O(∆tN +1 )
(25)
Staª¡ bª¦du C wyznaczamy odejmuj¡c od (25) rozwi¡zanie (24). Nast¦pnie mo»emy okre±li¢ bª¡d rozwi¡zania
uzyskanego w dwóch krokach:
(2)
E = 2C∆tN =
(1)
un+2 − un+2
2N −1 − 1
(26)
i wykorzysta¢ go do modykacji kroku czasowego:
∆tnowy =
S · tol
|E|
1/N
∆t
(27)
N oznacza bª¡d lokalny metody.
Algorytm numerycznego rozwi¡zywania równania ró»niczkowego z doborem kroku czasowego:
1. dysponuj¡c rozwi¡zaniem
un
znajdujemy
(2)
(1)
(1)
un+2 −un+2
jak i
2N −1 −1
jemy ten o wi¦kszej warto±ci bezwzgl¦dnej
2. obliczamy zarówno bª¡d
Eu =
(2)
un+2 i un+2
(2)
Ev =
3
(1)
vn+2 −vn+2
i jako
2N −1 −1
E
do dalszych oblicze« przyjmu-
3. zmieniamy krok czasowy wg (27)
4. je±li jest speªniony warunek
|E| < tol
to akceptujemy lepsze rozwi¡zanie
kolejny krok, w przeciwnym wypadku wykonujemy algorytm dla
zmienionym krokiem
∆tnowy
Nale»y przyj¡¢ parametry: startowy krok czasowy
v(0) = 0,
parametr antystagnacyjny
tol
S = 0.75,
∆t(t).
∆t = 0.002, warunki pocz¡tkowe u(0) = 1 i
tol = 10−3 , 10−8 , t ∈ [0, tmax ], tmax = 20.
przedstawiaj¡ce rozwi¡zanie w postaci v(u) oraz
tolerancja bª¦du
nale»y sporz¡dzi¢ wykresy
pokazuj¡ce zmiany czasowe kroku
i wykonujemy
zaczynaj¡c od punktu 1 ze
(który automatycznie si¦ zmniejszy)
Uwaga
Dla obu warto±ci parametru
un+2
(2)
un+2 = un+2
Bonus za komplet wyników - 4 wykresy - (
50pkt).
jawna metoda RK4
Rozwi¡za¢ problem przy u»yciu jawnej metody RK4. Poniewa» mamy do czynienia z ukªadem dwóch równa«
ró»niczkowych wi¦c musimy zmodykowa¢ wzory podane w zadaniu 1.
Aby znale¹¢ rozwi¡zania
Przyj¡¢
N = 5
un+1 i vn+1
obliczamy ±ci±le w podanej kolejno±ci:
ku1
=
f (un , vn )
(28)
kv1
=
g(un , vn )
(29)
ku2
=
kv2
=
ku3
=
kv3
=
∆t
∆t
ku1 , vn +
kv1 )
2
2
∆t
∆t
g(un +
ku1 , vn +
kv1 )
2
2
f (un +
∆t
∆t
ku2 , vn +
kv2 )
2
2
∆t
∆t
g(un +
ku2 , vn +
kv2 )
2
2
f (un +
(30)
(31)
(32)
(33)
ku4
=
f (un + ∆tku3 , vn + ∆tkv3 )
(34)
kv4
=
g(un + ∆tku3 , vn + ∆tkv3 )
(35)
un+1
=
un +
vn+1
=
∆t
(ku1 + 2ku2 + 2ku3 + ku4 )
6
∆t
vn +
(kv1 + 2kv2 + 2kv3 + kv4 )
6
(36)
(37)
przy obliczaniu (26) i (27) - rz¡d bª¦du lokalnego jest wi¦kszy o 1 w stosunku do bª¦du
globalnego metody (N
= p + 1).
4

Podobne dokumenty