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