4. Metoda Rungego
Transkrypt
4. Metoda Rungego
ANALIZA NUMERYCZNA Grzegorz Szkibiel Wiosna 2014/15 Spis tre±ci 1 2 Metoda Eulera 3 1.1 zagadnienia brzegowe . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Zastosowanie ró»niczki . . . . . . . . . . . . . . . . . . . . . . 4 1.3 Output do pliku oraz wykres . . . . . . . . . . . . . . . . . . . 5 1.4 Bª¡d metody Eulera 6 . . . . . . . . . . . . . . . . . . . . . . . Metoda Taylora 7 2.1 Istotny bª¡d . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 Metoda Taylora rz¦du 2 8 . . . . . . . . . . . . . . . . . . . . . 3 Równania z opó¹nionym argumentem 10 4 Metoda Rungego-Kutty 12 4.1 Metoda Rungego-Kutty stopnia 2 . . . . . . . . . . . . . . . . 12 4.2 Ogólna metoda Rungego-Kutty rz¦du 2 . . . . . . . . . . . . . 14 2 Zaj¦cia 4 Metoda Rungego-Kutty Metoda Taylora ma pewna istotn¡ wad¦. Mianowicie, wymaga ona znalezienia wzorów na kolejne pochodne funkcji, która jest rozwi¡zaniem zagadnienia pocz¡tkowego (1.1). Metoda Rungego-Kutty zast¦puje kolejne pochodne funkcji 4.1 y przez odpowiednio dobrane kombinacje warto±ci funkcji f. Metoda Rungego-Kutty stopnia 2 Z równania ró»niczkowego postaci (1.1) oraz z reguªy ªa«cucha wynika, »e y 0 (x) = f y 00 (x) = fx + fy y 0 = fx + f fy . Tutaj, fx = ∂f (y,x) oraz ∂x fy = ∂f (y,x) . Dalej, ze wzoru Taylora stopnia 2 mamy ∂y 1 y(x + h) = y + hy 0 + h2 y 00 2 1 2 = y + f h + h (fx + f fy ) 2 1 1 = y + hf + h(f + hfx + hf fy ). 2 2 Stosuj¡c dla odmiany wzór Taylora, a wªa±ciwie ró»niczk¦ dla funkcji dwóch zmiennych, otrzymujemy f (y + hf, x + h) = f + hfx + hf fy . 12 Oznaczaj¡c F1 = F1 (y, x, h) = hf (y, x) F2 = F2 (y, x, h) = hf (y + F1 , x + h), otrzymujemy ostatecznie wzór na metod¡ Heuna : te» metod¦ Rungego-Kutty rz¦du 2 1 y(x + h) = y + (F1 + F2 ). 2 nazywan¡ (4.1) Zastosujemy metod¦ Heuna dla zagadnienia pocz¡tkowego y0 = przy h = 0,1 na przedziale xy − y 2 , x2 [1, 3]. y(1) = 2 Mamy nast¦puj¡cy algorytm: 1. 2. 3. 4. 5. double x = 1.0; double y = 2.0; double h = 0.1; int M = 20; double F1, F2; 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. cout << x << "; " << y << endl; for (int i=0;i<M;++i) { F1 = (h * (x*y - y*y)) / (x*x); x = x + h; y = y + F1; F2 = (h * (x*y - y*y)) / (x*x); y = y + (F2-F1)/2.0; cout << x << "; " << y << endl; } Linie 11. i 12. koryguj¡ zmienne x oraz y tak, aby upro±ci¢ wzór na F2. Dzi¦ki temu, kod programu jest prostszy. Ale w linii 14. musimy obliczy¢ warto±¢ rego y, y odpowiadaj¡c¡ argumentowi czyli od aktualnego odj¡¢ F1. x+h, zatem nale»y wróci¢ do ,,sta- St¡d wzór, który mamy w linii 14. zamiast (4.1). W wyniku zastosowania powy»szego algorytmu, otrzymujemy nast¦puj¡c¡ tabel¦ funkcji y: 13 x 1 1, 1 y 2 1, 85 x 1, 7 1, 8 y 1, 65 1, 65 x 2, 4 2, 5 y 1, 74 1, 76 4.2 1, 2 1, 3 1, 4 1, 76 1, 71 1, 67 1, 9 2 2, 1 1, 66 1, 68 1, 69 2, 6 2, 7 2, 8 1, 79 1, 81 1, 83 1, 5 1, 6 1, 66 1, 65 2, 2 2, 3 1, 71 1, 72 2, 9 3 1.85 1, 88 Ogólna metoda Rungego-Kutty rz¦du 2 Podstaw¡ metody Rungego-Kutty rz¦du 2 jest nast¦puj¡ce uogólnienie (4.1): y(x + h) = y(x) + w1 F1 + w2 F2 , F1 = hf , jak dot¡d, ale F2 = hf (y + αF1 , x + βh), gdzie w1 , w2 , α i β s¡ takimi nieujemnymi liczbami rzeczywistymi, »e w1 + w2 = 1 oraz αw2 = βw2 = 21 . Metoda Heuna ma parametry w1 = w2 = 21 , α = β = 1. 1 Mo»na te» przyj¡¢ w1 = 0, w2 = 1 oraz α = β = . Wówczas otrzymujemy 2 przy czym nieco zmodykowan¡ metod¦ Eulera. 14