Równania ró˙zniczkowe — metody numeryczne
Dariusz Uci ´nski
Instytut Sterowania i Systemów Informatycznych
Universytet Zielonogórski
Wykład 9
Dariusz Uci ´nski
Metoda Eulera
Rozwa˙zmy równanie ró˙zniczkowe
dy (t )
dt
=
f (t, y (t)),
y (t
0
) =
y
0
którego rozwi ˛
azanie chcemy wyznaczy´c w przedziale [t
0
,
t
f
]
.
Podzielmy [t
0
,
t
f
]
na N podprzedziałów o długo´sci
h =
t
f
− t
0
N
Wielko´s´c h nazywamy długo´sci ˛
a kroku. Ustalamy
t
k
=
t
0
+
kh,
k = 1, . . . , N
Dariusz Uci ´nski
Metoda Eulera
Przybli˙zmy pochodn ˛
a w chwili t
k
ilorazem ró˙znicowym:
dy (t
k
)
dt
≈
y (t
k +1
) −
y (t
k
)
h
Mo˙zna wi ˛ec zapisa´c
y (t
k +1
) −
y (t
k
)
h
=
f (t
k
,
y (t
k
))
Oznacza to, ˙ze dla k = 1, . . . , N zachodzi
Schemat Eulera wprzód
y (t
k +1
) =
y (t
k
) +
h f (t
k
,
y (t
k
))
Dariusz Uci ´nski
Metoda Eulera
Przybli˙zmy pochodn ˛
a w chwili t
k
ilorazem ró˙znicowym:
dy (t
k
)
dt
≈
y (t
k +1
) −
y (t
k
)
h
Mo˙zna wi ˛ec zapisa´c
y (t
k +1
) −
y (t
k
)
h
=
f (t
k
,
y (t
k
))
Oznacza to, ˙ze dla k = 1, . . . , N zachodzi
Schemat Eulera wprzód
y (t
k +1
) =
y (t
k
) +
h f (t
k
,
y (t
k
))
Dariusz Uci ´nski
Alternatywne wyprowadzenie metody Eulera
Całkuj ˛
ac obie strony równania
dy (t )
dt
=
f (t, y (t)),
y (t
0
) =
y
0
otrzymamy
Z
t
k
+
h
t
k
dy (t )
dt
dt =
Z
t
k
+
h
t
k
f (t, y (t)) dt
czyli
y (t
k
+
h) − y (t
k
) =
Z
t
k
+
h
t
k
f (t, y (t))
|
{z
}
g(t)
dt
Dariusz Uci ´nski
Alternatywne wyprowadzenie metody Eulera
Mamy formuł ˛e prostok ˛
atów:
Z
t
k
+
h
t
k
g(t) dt ≈ h g(t
k
)
Dariusz Uci ´nski
Schemat Eulera wstecz
Tu inaczej przybli˙zmy pochodn ˛
a:
dy (t
k
)
dt
≈
y (t
k
) −
y (t
k −1
)
h
Prowadzi to do schematu niejawnego:
Schemat Eulera wstecz
y (t
k +1
) =
y (t
k
) +
h f (t
k +1
,
y (t
k +1
))
Pytanie: Jak to rozwi ˛
azywa´c?
Metoda Eulera nie jest zbyt dokładna, dlatego te˙z potrzeba
bardziej wyrafinowanych technik.
Dariusz Uci ´nski
Schemat Eulera wstecz
Tu inaczej przybli˙zmy pochodn ˛
a:
dy (t
k
)
dt
≈
y (t
k
) −
y (t
k −1
)
h
Prowadzi to do schematu niejawnego:
Schemat Eulera wstecz
y (t
k +1
) =
y (t
k
) +
h f (t
k +1
,
y (t
k +1
))
Pytanie: Jak to rozwi ˛
azywa´c?
Metoda Eulera nie jest zbyt dokładna, dlatego te˙z potrzeba
bardziej wyrafinowanych technik.
Dariusz Uci ´nski
Schemat Eulera wstecz
Tu inaczej przybli˙zmy pochodn ˛
a:
dy (t
k
)
dt
≈
y (t
k
) −
y (t
k −1
)
h
Prowadzi to do schematu niejawnego:
Schemat Eulera wstecz
y (t
k +1
) =
y (t
k
) +
h f (t
k +1
,
y (t
k +1
))
Pytanie: Jak to rozwi ˛
azywa´c?
Metoda Eulera nie jest zbyt dokładna, dlatego te˙z potrzeba
bardziej wyrafinowanych technik.
Dariusz Uci ´nski
Algorytm przewidywania i korekcji (metoda Heuna)
Mamy formuł ˛e trapezów:
Z
t
k
+
h
t
k
g(t) dt ≈ h
g(t
k
) +
g(t
k +1
)
2
Dariusz Uci ´nski
Algorytm przewidywania i korekcji (metoda Heuna)
Z równo´sci
y (t
k +1
) =
y (t
k
) +
Z
t
k +1
t
k
f (t, y (t))
|
{z
}
g(t)
dt
wynika wi ˛ec
y (t
k +1
) =
y (t
k
) +
h
2
h
f (t
k
,
y (t
k
)) +
f (t
k +1
,
y (t
k +1
)
|
{z
}
nieznane!
i
Jest to wi ˛ec schemat niejawny, który mo˙zna uwa˙za´c za
poł ˛
aczenie algortmów Eulera wprzód i wstecz (dlaczego?).
Pytanie: Jak uczyni´c go u˙zytecznym?
Dariusz Uci ´nski
Algorytm przewidywania i korekcji (metoda Heuna)
Przewidywanie (predykcja) — por. metod ˛e Eulera
y
?
(
t
k +1
) =
y (t
k
) +
h f (t
k
,
y (t
k
))
Korekcja
y (t
k
+
h) = y (t
k
) +
h
2
h
f (t
k
,
y (t
k
)) +
f (t
k +1
,
y
?
(
t
k +1
)
i
Etap korekcji mo˙zna implementowac z zastosowaniem metody
iteracji prostej.
Dariusz Uci ´nski
Algorytm przewidywania i korekcji (metoda Heuna)
Przewidywanie (predykcja) — por. metod ˛e Eulera
y
?
(
t
k +1
) =
y (t
k
) +
h f (t
k
,
y (t
k
))
Korekcja
y (t
k
+
h) = y (t
k
) +
h
2
h
f (t
k
,
y (t
k
)) +
f (t
k +1
,
y
?
(
t
k +1
)
i
Etap korekcji mo˙zna implementowac z zastosowaniem metody
iteracji prostej.
Dariusz Uci ´nski
Algorytm Rungego
Mamy formuł ˛e Simpsona:
Z
t
k
+
h
t
k
g(t) dt ≈
h
6
(
x
0
+
4x
1
+
x
2
)
Dariusz Uci ´nski
Uzasadnienie
Przybli˙zaj ˛
ac g(t) parabol ˛
a at
2
+
bt + c mamy
x
0
=
a
h
2
4
− b
h
2
+
c
x
1
=
c
x
2
=
a
h
2
4
+
b
h
2
+
c
sk ˛
ad
c = x
1
b =
x
2
− x
0
h
a =
2
h
2
(
x
0
− 2x
1
+
x
2
)
Dariusz Uci ´nski
Uzasadnienie (c.d.)
Pole pod parabol ˛
a wynosi
Z
h/2
−h/2
(
at
2
+
bt + c) dt
=
Z
h/2
−h/2
2
h
2
(
x
0
− 2x
1
+
x
2
)
t
2
+
x
2
− x
0
h
t + x
1
dt
=
h
6
(
x
0
+
4x
1
+
x
2
)
Dariusz Uci ´nski
Algorytm Rungego
Z równo´sci
y (t
k +1
) =
y (t
k
) +
Z
t
k +1
t
k
f (t, y (t)) dt
wynika wi ˛ec
y (t
k +1
) =
y (t
k
) +
h
6
(
m
0
+
4m
1
+
m
3
)
gdzie:
m
0
=
f (t
k
,
y (t
k
))
m
1
=
f (t
k
+
h
2
,
y
k
+
m
0
h
2
)
m
2
=
f (t
k
+
h, y
k
+
m
0
h)
m
3
=
f (t
k
+
h, y
k
+
m
2
h)
Dariusz Uci ´nski