Zajmiemy się równaniem
y(x0)=y0 (1)
Podobnie jak przy konstrukcji metody Eulera postawmy sobie następujące zadanie: znaleźć wartość funkcji y=y(x), w x=x1=x0+h
y(x0)=y0 (1)
Podobnie jak przy konstrukcji metody Eulera postawmy sobie następujące zadanie: znaleźć wartość funkcji y=y(x), w x=x1=x0+h
Załóżmy, że rozwiązanie zadania (1) jest parabolą i skorzystajmy z następującej własności paraboli:
- - współczynnik kierunkowy siecznej (A0A1) jest średnią
arytmetyczną współczynnika kierunkowego stycznej (A0S0)
i stycznej (A1S1).
Teraz możemy wyznaczyć przybliżoną wartość współczynnika kierunkowego stycznej (A1S1), wynosi on
Następnie wyznaczmy współczynnik kierunkowej siecznej (A0A1), jest on równy
Jest to przybliżona wartość tego współczynnika ze względu na sposób liczenia y1E. Zamiast siecznej (A0A1) mamy sieczną (A0A1'). Z trójkąta A0PA1' policzymy
Uporządkujemy dotychczasowe rozwiązania wprowadzając oznaczenia
(2)
Wzory (2) są wzorami Runge-Kutty II rzędu. Można wykazać, że całkowity błąd metody jest rzędu O(h2).
Spróbujmy dojść do tych samych wzorów (2) inną drogą i wyprowadzić
wzory Runge-Kutty wyższych rzędów. Zapiszmy uogólnienie algebraiczne wzorów
(2)
(3)
Będziemy szukać stałych a,b,c,... , a,b,g,... i w1,w2,w3,... takich, by wartość funkcji y(x) dla x=x1, czyli y1 była możliwie bliska wartości dokładnej. Uzyskamy to rozwijając w szereg Taylora funkcję przybliżoną i ścisłą, żądając zgodności (do wyrazu odpowiedniego rzedu) tych rozwinięć. Wykonajmy obliczenie dla metody Runge-Kutty II rzędu, czyli wartość przybliżoną obliczamy następująco
(4)
stąd otrzymujemy
Zastąpmy f(x0+ah,y0+ak1) jej rozwinięciem w szereg Taylora, czyli
(5)
gdzie
Z (5) po uporządkowaniu i wstawieniu k1=hf mamy
(6)
Załóżmy, że y0*=y(x0) i y1*=y(x1) są dokładnymi wartościami funkcji y i zapiszmy korzystając z rozwinięcia w szereg Taylora
(7)
Żądamy zgodności obu (6, 7) rozwinięć do drugiego wyrazu rozwinięcia w szereg Taylora. Porównajmy więc współczynniki przy h i h2 z obu rozwinięć. Otrzymujemy
w1+w2=1 ,
w2a=1/2 ,
w2a=1/2
,
(3)
Będziemy szukać stałych a,b,c,... , a,b,g,... i w1,w2,w3,... takich, by wartość funkcji y(x) dla x=x1, czyli y1 była możliwie bliska wartości dokładnej. Uzyskamy to rozwijając w szereg Taylora funkcję przybliżoną i ścisłą, żądając zgodności (do wyrazu odpowiedniego rzedu) tych rozwinięć. Wykonajmy obliczenie dla metody Runge-Kutty II rzędu, czyli wartość przybliżoną obliczamy następująco
(4)
stąd otrzymujemy
Zastąpmy f(x0+ah,y0+ak1) jej rozwinięciem w szereg Taylora, czyli
(5)
gdzie
Z (5) po uporządkowaniu i wstawieniu k1=hf mamy
(6)
Załóżmy, że y0*=y(x0) i y1*=y(x1) są dokładnymi wartościami funkcji y i zapiszmy korzystając z rozwinięcia w szereg Taylora
(7)
Żądamy zgodności obu (6, 7) rozwinięć do drugiego wyrazu rozwinięcia w szereg Taylora. Porównajmy więc współczynniki przy h i h2 z obu rozwinięć. Otrzymujemy
w1+w2=1 ,
stąd
Mamy więc całą rodzinę wzorów Runge-Kutty II rzędu zależną od parametru a. I tak dla a=1 mamy a=1, w1=1/2, w2=1/2, są to wzory (4).
Wartość funkcji y w x=x2=x1+h=x0+2h możemy
policzyć stosując (4), o ile (x1, y(x1)=y1)
potraktujmy tak, jak warunek początkowy. Czyli ogólnie (4) zapiszemy
Wzory wyższych rzędów można otrzymać analogicznie. W poniższej tabeli są zapisane najczęściej używane współczynniki dla metod typu Runge-Kutty rzędu od I do IV
Wzory wyższych rzędów można otrzymać analogicznie. W poniższej tabeli są zapisane najczęściej używane współczynniki dla metod typu Runge-Kutty rzędu od I do IV
Rząd
metody P |
Stałe
(wzór 3) w |
Wartości
współczynników k |
Nazwa
metody |
Błąd
lokalny e |
Błąd
całkowity E |
1
|
w1=1
|
k1=hf(xi,yi)
|
Eulera
|
O(h2)
|
O(h)
|
2
|
w1=w2=1/2
|
k1=hf(xi,yi)
k2=hf(xi+h,yi+k1)
|
Heuna
|
O(h3)
|
O(h2)
|
3
|
w1=w3=1/6
w2=2/3
|
k1=hf(xi,yi)
k2=hf(xi+h/2,yi+k1/2)
k3=hf(xi+h,yi-k1+2k2)
|
pokrewna metodzie
Simsona
|
O(h4)
|
O(h3)
|
4
|
w1=w4=1/6
w2=w3=1/3
|
k1=hf(xi,yi)
k2=hf(xi+h/2,yi+k1/2)
k3=hf(xi+h/2,yi+k2/2)
k4=hf(xi+h,yi+k3)
|
klasyczna metoda
Runge-Kutty
|
O(h5)
|
O(h4)
|
Metody typu Runge-Kutty są łatwe do zaprogramowani,
zmiana kroku całkowania może być dokonywana w dowolnym etapie obliczeń i nie
wymaga dużego nakładu pracy, są metodami samostartującymi, tzn. znajomość
warunku początkowego wystarcza, by rozpocząć obliczenia. Wymagają one jednak
wielokrotnego (dla metody rzędu p p-krotnego) obliczania wartości funkcji f w
każdym kroku całkowania, mogą więc być metodami kosztownymi (zwykle
najbardziej czasochłonnymi, a więc i kosztownym zadaniem jest obliczanie wartości
funkcji f).
Przykład
Znaleźć rozwiązanie zagadnienia początkowego
y'(x)=x+y
y(0)=1
metodą Runge-Kutty IV rzędu. Obliczenia wykonać dla xÎ[0,0.2] z krokiem h=0.1 . Porównać otrzymane wyniki z rozwiązaniem ścisłym y(x)=2ex-x-1.
Wzory Runge-Kutty IV rzędu (patrz (3) i powyższa tabela) mają postać
gdzie
Dla przypomnienia yi+1=y(xi+1)=y(x0+(i+1)h). Dla i=0 liczymy wartości y1=y(x1)=y(x0+h)=y(0.1). Najpierw policzymy
dalej
Analogicznie obliczenia przeprowadzamy dla i=1 (czyli dla x2=x0+2h), policzymy y2=y(x2). Policzymy wartości rozwiązania ścisłego dla x=x1 i x=x2 i wyniki tych obliczeń zestawimy w tabeli
i+1
|
x
|
y
|
k=0.1(x+y)
|
Y(x)=2ex-x-1
|
0
|
0
|
1
|
||
0.
0.05
0.05
0.1
|
1.
1.05
1.055
1.1105
|
k1=0.1
k2=0.11
k3=0.1105
k4=0.12105
|
||
1
|
0.1
|
1.11034
|
1.1103420
|
|
0.1
0.15
0.15
0.2
|
1.11034
1.170857
1.17638285
1.242978285
|
k1=0.121034
k2=0.13220857
k3=0.132638285
k4=0.1442978285
|
||
2
|
0.2
|
1.242803
|
1.2428055
|
Brak komentarzy:
Prześlij komentarz