Problem początkowy, metody Eulera i Runge-Kutty

PMiKNoM seminaria - zajęcia 3

Problem Początkowy Cauchy’ego

Równanie różniczkowe postaci: `y' = f(x,y)`
Warunek początkowy: `y(x_0) = y_0`

Metoda Jawna Eulera

Rozpatrywany problem: ` y’(x)=y(x)+x `
Warunek początkowy: `y(0) = 1`
Szukane: `y(1)=?`
Metoda Jawna Eulera - wyprowadzenie
Metoda Eulera - algorytm programu
  1. Zapisz definicję funkcji pochodnej `f(x,y) = y + x`
  2. Zadeklaruj zmienne (w tym zmienne tablicowe)
  3. Oblicz krok metody (`h`)
  4. Wylicz wartość punktów położenia `x(i)` - pętla for
  5. Zapisz wartość funkcji w punkcie początkowym `y(0) = 1`
  6. Wylicz wartość funkcji w kolejnych punktach metodą Eulera - pętla for
  7. Zapisz obliczoną wartość do arkusza

Metody Runge-Kutty

Metoda Runge-Kutty II rzędu

Metoda ta znana jest również jako metoda punktu środkowego (midpoint). Podczas, gdy w metodzie Eulera wyznaczamy wartość funkcji w kolejnym punkcie korzystając z wartości pochodnej w punkcie bieżącym, tj.

` y_{i+1} = y_i + h \cdot f(x_i, y_i) `

W metodzie punktu środkowego wyznaczamy wartość funkcji w kolejnym punkcie korzystając z wartości pochodnej w punkcie pośrednim:

` y_{i+1} = y_i + h \cdot f(x_{i+ \frac 1 2}, y_{i+ \frac 1 2}) `
gdzie `x_{i+1/2} = x_i +h/2`, natomiast `y_{i+1/2}` wyznaczany jest (metodą Eulera) jako:
` y_{i+ \frac 1 2} = y_i + \frac h 2 \cdot f(x_i, y_i) `

Wzór metody Runge-Kutty II rzędu wygląda zatem następująco:

` y_{i+ 1} = y_i + h \cdot f ( x_i + \frac h 2, y_i + \frac h 2 \cdot f(x_i, y_i) ) `
Metoda Runge-Kutty IV rzędu

Iteracyjny wzór metody Rungego-Kutty 4. rzędu to:

` y_{i+1} = y_i + \frac 1 6 (k_1 + 2 \cdot k_2 + 2 \cdot k_3 + k_4) `
gdzie:
` k_1 = h \cdot f(x_i, y_i) `
` k_2 = h \cdot f(x_i + \frac h 2, y_i + \frac {k_1} 2) `
` k_3 = h \cdot f(x_i + \frac h 2, y_i + \frac {k_2} 2) `
` k_4 = h \cdot f(x_i + h, y_i + k_3) `
Metody Runge-Kutty - algorytm programów
  1. Zapisz definicję funkcji pochodnej `f(x,y) = y + x`
  2. Zadeklaruj zmienne (w tym zmienne tablicowe)
  3. Oblicz krok metody (`h`)
  4. Wylicz wartość punktów położenia `x(i)` - pętla for
  5. Zapisz wartość funkcji w punkcie początkowym `y(0) = 1`
  6. Wylicz wartość funkcji w kolejnych punktach metodą Runge-Kutty - pętla for
  7. Zapisz obliczoną wartość do arkusza

Porównanie rozwiązań numerycznych i analitycznego

Dodatkowe materiały: