Metody numeryczne równań różniczkowych zwyczajnych Marcin Jenczmyk m.jenczmyk@knm.katowice.pl 9 maja 2015 M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 1 / 18
Omawiany problem dotyczyć będzie numerycznego sposobu rozwiązywania układów równań różniczkowych zwyczajnych, tzn. układów równań postaci x (n) 1 (t) = f 1(t, x 1 (t), ẋ 1 (t),..., x (n 1) 1,..., x k (t), ẋ k (t),..., x (n 1) k ) x (n) 2 (t) = f 2(t, x 1 (t), ẋ 1 (t),..., x (n 1) 1,..., x k (t), ẋ k (t),..., x (n 1) k ). x (n) k (t) = f k (t, x 1 (t), ẋ 1 (t),..., x (n 1) 1,..., x k (t), ẋ k (t),..., x (n 1) k ) z zadanymi warunkami początkowymi x i (t 0 ) = x i, ẋ i (t 0 ) = x 1 i,..., x (n 1) i (t 0 ) = x n 1, i = 1..., k gdzie x 1,..., x k są funkcjami o odpowiedniej regularności. i M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 2 / 18
Zauważmy, że rozwiązanie problemu można sprowadzić do problemu numerycznego rozwiązania układu równań różniczkowych zwyczajnych stopnia pierwszego - każde równanie n-tego stopnia można sprowadzić do układu n równań stopnia pierwszego. M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 3 / 18
Np. równanie różniczkowe zwyczajne trzeciego stopnia z zadanymi warunkami początkowymi x (3) (t) = f (t, x, ẋ(t), ẍ(t)) x(t 0 ) = x 0, ẋ(t 0 ) = x 1 0, ẍ(t 0 ) = x 2 0 można za pomocą podstawienia z = ẍ, y = ẋ sprowadzić do układu trzech równań ż(t) = f (t, x, y, z), z(t 0 ) = x0 2 ẏ(t) = z(t, x, y), y(t 0 ) = x0 1 ẋ(t) = y(t, x), x(t 0 ) = x 0 M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 4 / 18
Ponadto rozważać możemy jedynie równania różniczkowe pierwszego stopnia - metody omówione poniżej będą miały zastosowanie zarówno dla układów równań różniczkowych zwyczajnych, jak i pojedynczych równań. M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 5 / 18
Rozważmy zadanie Cauchy ego {ẋ(t) = f (t, x(t)) Zapisując równanie w postaci x(t 0 ) = x 0 dx dt = f (t, x) i mnożąc obie strony przez dx (traktując tym samym dx jako infinitezymalny przyrost funkcji x(t) przy infinitezymalnm przyroście jej argumentu dt) otrzymujemy dx = f (t, x)dt. M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 6 / 18
Wyznacza to iteracyjną metodę Eulera: przy zadanej wartości rozwiązania x i w punkcie t i można uzyskać wartość rozwiązania w punkcie t i+1 = x + h dla wybranej wartości kroku czasowego h x i+1 = x i + hf (t i, x i ). (1) Użycie metody w celu rozwiązania zagadnienia Cauchy ego na przedziale [t 0, t f ] polega na podziale przedziału na M części o długości h, wystartowanie w punkcie t 0 na podstawie warunku początkowego, oraz iteracji zgodnie z równaniem 1. M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 7 / 18
W i-tym kroku rząd elementu w rozwinięciu Taylora, który zaniedbujemy to ẍ(c i ) h2 2. Wobec tego sumaryczny błąd rozwiązania po M krokach podlega oszacowaniu M i=1 ẍ(c i ) h2 2 Mẍ(c)h2 2 = ẍ(c)mh 2 h = ẍ(c)t f t 0 h = O(h). 2 M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 8 / 18
Dla przykładu rozważmy zadanie Cauchy ego {ẋ(t) = t x 2 ; x(0) = 1. Zgodnie z metodą Eulera, dobieramy wartość kroku czasowego h, a następnie tworzymy ciąg wartości poszukiwianej funkcji x i+1 = x i + h t x 2. Startując z punktu (0, 1) dla h = 1 2 otrzymujemy ciąg dyskretnych punktów oraz wartości rozwiązania (0, 1), (0.5, 0.75), (1.0, 0.6875), (1.5, 0.7656), (2.0, 0.9492), (2.5, 1.2119), (3.0, 1.5339) M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 9 / 18
M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 10 / 18
Wszystkie omawiane metody pozwalają na rozwiązywanie układów równań różniczkowych zwyczajnych. Rozpartując układ {ẋ(t) = ax(t) + by(t) ẏ(t) = cx(t) dy(t) z zadanymi warunkami początkowymi x(t 0 ) = x 0, y(t 0 ) = y 0 możemy sformułować procedurę iteracyjną [ ] [ ] [ ] xi+1 xi axi + by = + h i. y i+1 y i cx i dy i M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 11 / 18
są naturalnym rozwinięciem metody Eulera - zamiast poprzestawać na rozwinięciu Taylora z dokładnością do pierwszego rzędu w metodzie rzędu N postulujemy iterowanie wartości poszukiwanej funkcji wg wzoru x i+1 = x i + h N w j k j, j=1 gdzie k 1 = f (t i, x i ) k 2 = f (t i + a 1 h, x i + b 1 hk 1 ) k 3 = f (t i + a 2 h, x i + b 2 hk 1 + b 3 hk 2 ). k N =... M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 12 / 18
Wartości współczynników w j, k j, a k, b l można uzyskać na podstawie rozwinięcia x(t) w szereg Taylora z dokładnością do wyrazu N-tego rzędu. Np. dla metody drugiego rzędu x i+1 = x i + h (w 1 k 1 + w 2 k 2 ) = x i + hw 1 f (t i, x i ) + hw 2 f (t i + a 1 h, x i + b 1 hk 1 ) ( ) x i + hw 1 f (t i, x i ) + hw 2 f (t i, x i ) + h 2 f w 2 a 1 t + b f 1k 1 x podczas gdy [ x(t i + h) x(t i ) + hf (t i, x i ) + h2 f 2! t + f (t i, x i ) f ]. x M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 13 / 18
Otrzymujemy w ten sposób układ 3 równań z czteroma niewiadomymi w 1 + w 2 = 1 w 2 a 1 = 1 2 w 2 b 1 = 1 2 Pozwala nam to na pewną dowolność w rozwiązaniu. Jednym z rozwiązań jest a 1 = 1 2, b 1 = 1 2, w 1 = 0, w 2 = 1 oraz x i+1 = x i + hk 2, gdzie k 2 = f (t i + 1 2 h, x i + 1 2 hk 1), k 1 = f (t i, x i ). M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 14 / 18
W ogólności przy tworzeniu metody N-tego rzędu rozwiązywany układ będzie miał mniejszy rozmiar niż ilość niewiadomych, co pozwala na utworzenie większej ilości metod danego rzędu. Błąd metody Rungego-Kutty N-tego rzędu jest rzędu O(h N ) - rozumowanie jest analogiczne do szacowania błędu metody Eulera. M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 15 / 18
M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 16 / 18
Literatura John H. Mathews, Kurtis D. Fink: Numerical Methods Using MATLAB, Third Edition, Prentice Hall, 1999 E. Majchrzak, B. Mohnacki: Metody numeryczne. Podstawy teoretyczne, aspekty praktyczne i algorytmy, Wydawnictwo Politechniki Śląskiej, 1999 M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 17 / 18
Dziękuję za uwagę! M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 18 / 18