Metoda Eulera i Rungego-Kutty - dla r-nia exp(x)

Równania różniczkowe i całkowe. Równania różnicowe. Transformata Laplace'a i Fouriera oraz ich zastosowanie w równaniach różniczkowych.
anusiakk
Użytkownik
Użytkownik
Posty: 34
Rejestracja: 24 lut 2009, o 15:47
Płeć: Mężczyzna
Podziękował: 3 razy

Metoda Eulera i Rungego-Kutty - dla r-nia exp(x)

Post autor: anusiakk »

Hej, mam pewien problem z tymi schematami dla r-nia:

\(\displaystyle{ y' = e^{x}, y_{0} = 1}\)

Mam je rozwiązać za pomocą Eulera i Kutty. Nie wiem kompletnie, czy dobrze zrobiłem. Mam obliczyć za ich pomocą do \(\displaystyle{ y_{3}}\), gdzie \(\displaystyle{ h = 0.2}\).

Dla Eulera:

\(\displaystyle{ 0 krok:
x _{0} = 0, y_{0} = 1,

1 krok: x_{1} = x_{0} + h = 0 + 0.2 = 0.2,
y_{1} = y_{0} + e^{x_{0}} = 1 + 0.2*(2.71^{0}) = 1.2 \Rightarrow y_{1} = 1.2,

czyli x_{1} = 0.2, y_{1} = 1.2,

2 krok:

x_{2} = 0.2 + h = 0.4,
y_{2} = y_{1} + 0.2*(e^{x_{1}}) = 1.44

czyli x_{2} = 0.4, y_{2} = 1.44,

3 krok:

x_{3} = 0.4 + 0.2 = 0.6,
y_{3} = y_{2} + 0.2*(e^{x_{2}}) = 1.74

czyli x_{3} = 0.6, y_{3} = 1.74,}\)


Dla Kutty:

Rozpisałem sb ogólne wzory, i wg nich liczyłem:

\(\displaystyle{ k_{1} = h*e^{x_{n}},
k_{2} = h*(e^{x_{n}} + 1/2*h + 1/2*k_{1}),
k_{3} = h*(e^{x_{n}} + 1/2*h + 1/2*k_{2}),
k_{4} = h*(e^{x_{n}} + h + k_{3}),}\)


co do obliczeń, podam tylko dla 0 i 1 kroku, bo resztę liczyłem wg powyższych wzorów, i jeśli te kroki są ok, to i następne też. Proszę jedynie o zweryfikowanie tych metod, czy dobrze rozpisałem wzory dla funkcji \(\displaystyle{ e^{x}}\).

\(\displaystyle{ 0 krok:
x_{0} = 0, y_{0} = 1

1 krok:

x_{1} = 0 + 0.2 = 0.2,
k_{1} = 0.2*e^{x_{0}} = 0.2,
k_{2} = 0.2*(e^{x_{0}} + 0.1 + 0.5*0.2) = 0.24,
k_{3} = 0.2*(e^{x_{0}} + 0.1 + 0.5*0.24) = 0.244,
k_{4} = 0.2*(e^{x_{0}} + 0.2 + 0.244) = 0.28,

y_{1} = y_{0} + 1/6*(k_{1} + 2*k_{2} + 2*k_{3} +k4) = 1.24

czyli x_{1} = 0.2, y_{1} = 1.24,}\)


Jakby ktoś mógł potwierdzić, że dobrze to liczę, byłbym bardzo wdzięczny. Dziękuję:)

-- 03 lis 2011 16:48 --

nikt nie wie czy to jest ok?-- 03 lis 2011 16:49 --:(
alek160
Użytkownik
Użytkownik
Posty: 399
Rejestracja: 30 maja 2009, o 21:47
Płeć: Mężczyzna
Pomógł: 86 razy

Metoda Eulera i Rungego-Kutty - dla r-nia exp(x)

Post autor: alek160 »

Kilka uwag na początek.
1. Twój sposób liczenia jest mało czytelny. Nie dziw się, że do tej pory nikt nie chciał poświecić swojego czasu na analizę - co poeta miał na myśli.
2. Rozwiązanie numeryczne - jeśli obliczamy 'na piechotę' - prowadzi się w tablicy. Zmniejsza to prawdopodobieństwo popełnienia błędu i analiza jest łatwiejsza.

3. Metoda Eulera. Zastosowałeś właściwy algorytm i otrzymałeś dobry wynik. Do pełni szczęścia zabrakło porównania Twoich obliczeń z rozwiązaniem dokładnym, które wynosi: \(\displaystyle{ \left[ y=e ^{x} \right]}\)

4. Metoda Runge-Kutta. Tych metod jest kilka. Ty przedstawiłeś algorytm RK4 (rzędu 4-tego). Czy tak miało być ???. Obliczenia wyszły źle.
Niżej pokażę Ci jak należy takie obliczenia wykonać i przedstawić.

4.1 Równanie różniczkowe, rozwiązanie przybliżone, metoda RK4.

\(\displaystyle{ \frac{ \mbox{d}y }{ \mbox{d}x }=e ^{x} \ \to y(0)=1}\)

4.2 Algorytm metody RK4, odniesiony ściśle do zadania.

\(\displaystyle{ y(n+1) = y(n) + \Delta y(n)}\)

gdzie:
\(\displaystyle{ \Delta y(n) = \frac{h}{6}\left( k _{1} + 2k _{2} + 2k _{3} +k _{4} \right)}\)

\(\displaystyle{ k _{1} = exp\left( x _{n} \right)}\)
\(\displaystyle{ k _{2} = exp\left( x _{n}+ \frac{h}{2} \right)}\)
\(\displaystyle{ k _{3} = exp\left( x _{n}+ \frac{h}{2} \right)}\)
\(\displaystyle{ k _{4} = exp\left( x _{n}+ h \right)}\)

\(\displaystyle{ h=0.2 \to}\) długość kroku obliczeniowego, wg zadania
\(\displaystyle{ n=0, 1, 2, ... \to}\) numer kroku obliczeniowego
przy czym, dla n=0 zachodzi y(0)=1

Dodatkowo w tablicy niżej są przedstawione - dla porównania - liczby wynikające z rozwiązania ścisłego.

\(\displaystyle{ \begin{tabular}{|c|c|c|c|c|c|c|c|c|}
\hline
n & x(n) & y(n) & k1 & k2 & k3 & k4 & \Delta y(n) & y(n) ścisłe\\ \hline
0 & 0.000 & 1.000 & 1.000 & 1.105 & 1.105 & 1.221 & 0.221 & 1.000 \\ \hline
1 & 0.200 & 1.221 & 1.221 & 1.350 & 1.350 & 1.492 & 0.270 & 1.221 \\ \hline
2 & 0.400 & 1.492 & 1.492 & 1.649 & 1.649 & 1.822 & 0.330 & 1.492 \\ \hline
3 & 0.600 & 1.822 & 1.822 & 2.014 & 2.014 & 2.226 & 0.403 & 1.822 \\ \hline
\end{tabular}}\)


Patrząc na wyniki w tablicy, widzimy jak znakomicie działa algorytm RK4.
Jednocześnie należy dodać, że tak świetnie jest tylko w równaniach dobrze uwarunkowanych. W równaniach różniczkowych, tzw sztywnych, tak pięknie nie jest.

Pozdrawiam
anusiakk
Użytkownik
Użytkownik
Posty: 34
Rejestracja: 24 lut 2009, o 15:47
Płeć: Mężczyzna
Podziękował: 3 razy

Metoda Eulera i Rungego-Kutty - dla r-nia exp(x)

Post autor: anusiakk »

Pieknie dziekuje za odpowiedz. Juz myslalem, ze nikt sie nie odezwie!

Co do Twojego sposobu liczenia: a czy to jest poprawne, ze do wyliczenia [przyblizenia] funkcji exp(x) uzywamy jej samej? Bo bo wyliczenia k1,k2, .. uzywasz exp(x), ktore nalezy przyblizyc.

To nieco zbilo mnie z tropu. Nie wiedzialem, jak mam to napisac czytelniej ... i przepraszam za brak polskich znaczkow.
alek160
Użytkownik
Użytkownik
Posty: 399
Rejestracja: 30 maja 2009, o 21:47
Płeć: Mężczyzna
Pomógł: 86 razy

Metoda Eulera i Rungego-Kutty - dla r-nia exp(x)

Post autor: alek160 »

W celu zastosowania metody numerycznej musimy odpowiednio przekształcić równanie różniczkowe.

\(\displaystyle{ 1. \qquad \frac{ \mbox{d}y }{ \mbox{d}x } = F\left( x,y\right)}\)

W Twoim zadaniu po prawej stronie nie występuje jawnie zmienna (y).
Jeśli po prawej stronie równania występuje jawnie zmienna (y), wówczas współczynniki (k) liczymy, jak następuje.

\(\displaystyle{ k _{1} = F\left( x _{n}, \ y _{n} \right)}\)
\(\displaystyle{ k _{2} = F\left( x _{n}+ \frac{h}{2}, \ y _{n}+ \frac{h}{2}k _{1} \right)}\)
\(\displaystyle{ k _{3} = F\left( x _{n}+ \frac{h}{2}, \ y _{n}+ \frac{h}{2}k _{2} \right)}\)
\(\displaystyle{ k _{4} = F\left( x _{n}+h, \ y _{n}+hk _{3} \right)}\)

Przykład:

\(\displaystyle{ 2. \qquad y' + \frac{2y}{x} = e ^{x}}\)

\(\displaystyle{ 3. \qquad \frac{ \mbox{d}y }{ \mbox{d}x } = - \frac{2y}{x} + e ^{x}}\)

Jak widać mamy po prawej stronie równania (3) jawnie występujący (y). W nomenklaturze numerycznej można to nazwać, że mamy funkcję dwóch zmiennych - \(\displaystyle{ y' = F(x,y)}\). Zgodnie z definicją RK4 otrzymujemy,

\(\displaystyle{ k _{1} = -2 \cdot \frac{y _{n} }{x _{n} } + e ^{x _{n} }}\)

\(\displaystyle{ k _{2} = -2 \cdot \frac{y _{n}+ \frac{h}{2} k _{1} }{x _{n} + \frac{h}{2} } + e ^{x _{n}+ \frac{h}{2} }}\)

\(\displaystyle{ k _{3} = -2 \cdot \frac{y _{n}+ \frac{h}{2} k _{2} }{x _{n} + \frac{h}{2} } + e ^{x _{n}+ \frac{h}{2} }}\)

\(\displaystyle{ k _{4} = -2 \cdot \frac{y _{n}+ h k _{3} }{x _{n} + h} + e ^{x _{n}+h }}\)

stąd
\(\displaystyle{ \Delta y _{n} = \frac{h}{6} \left( k _{1} + 2k _{2} + 2k _{3} + k _{4} \right)}\)
oraz
\(\displaystyle{ y _{n+1} = y _{n} + \Delta y _{n}}\)

W przypadku takich równań różniczkowych konieczne jest stosowanie komputera. Zastosowanie choćby arkusza 'excel' jest lepsze niż liczenie 'na piechotę'

Pozdrawiam.
ODPOWIEDZ