Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz  

obrazek

Autor artykułu: mgr Jerzy Wałaszek

©2026 mgr Jerzy Wałaszek

obrazek

Równania różniczkowe

Metoda Eulera

SPIS TREŚCI REMANENT
Podrozdziały
 

Algorytm

Metoda Eulera (ang. Euler Method) to najprostsza metoda numeryczna służąca do przybliżonego rozwiązywania równań różniczkowych zwyczajnych pierwszego rzędu.

Wynikiem metody Eulera jest zbiór przybliżonych wartości (punktów) poszukiwanej funkcji dla określonych kroków, a nie cała funkcja w postaci wzoru matematycznego. Mówiąc najprościej: metoda Eulera daje nam tabelę z wynikami albo wykres złożony z kropek, które pokazują, jak zachowuje się rozwiązanie równania różniczkowego krok po kroku.

Oto jak to wygląda w szczegółach:

Co dokładnie dostajemy na końcu?

Ciąg punktów: Dostajemy pary liczb \({(x_0, y_0), (x_1, y_1), (x_2, y_2) \dots}\)

Przybliżenie, a nie ideał: Te wartości \(y\) są tylko przybliżeniem prawdziwego, idealnego rozwiązania. Metoda Eulera "idzie po omacku" za pomocą linii prostych, więc z każdym krokiem popełnia mały błąd.

Łamana linia: Jeśli połączymy te punkty na wykresie kreskami, otrzymamy tzw. łamaną Eulera, która mniej więcej naśladuje kształt prawdziwej krzywej.

Prosty przykład (analogia z podróżą samochodem): Wyobraź sobie, że jedziesz samochodem i nie działa Ci prędkościomierz, ale znasz równanie na swoją prędkość w każdej minucie. Chcesz wiedzieć, gdzie będziesz za 5 minut.

Prawdziwe rozwiązanie (analityczne): To dokładna, płynna trasa Twojego samochodu sekunda po sekundzie.

Wynik metody Eulera: To informacja typu: „W minucie 1. byłeś na 1. kilometrze, w minucie 2. na 2.2 kilometra, w minucie 3. na 3.5 kilometra”. Metoda sprawdza prędkość na początku każdej minuty i zakłada, że przez całą minutę jechałeś dokładnie tak samo, po czym przeskakuje do kolejnego punktu.

Podsumowanie matematyczne: Jeśli rozwiązujesz równanie \(y' = f(x, y)\) z warunkiem początkowym \(y(x_0) = y_0\), to wynikiem metody Eulera jest ciąg obliczony ze wzoru: \({y_{n+1}=y_{n}+h\cdot f(x_{n},y_{n})}\) gdzie \(h\) to wielkość skoku (kroku). Wynikiem jest lista kolejnych wartości \({y_1, y_2, y_3 \dots}\), które odpowiadają punktom \({x_1, x_2, x_3 \dots}\).

Dane wejściowe

  1. Równanie różniczkowe w postaci: \({y' = f(x, y)}\) (czyli pochodna po jednej stronie, reszta po prawej).
  2. Warunek początkowy: punkt startowy \(x_0\) oraz wartość funkcji w tym punkcie \(y_0\), czyli \({y(x_0) = y_0}\).
  3. Krok \(h\): długość odcinka, o jaki będziemy się przesuwać na osi X (im mniejszy krok h, tym dokładniejszy wynik).
  4. Punkt końcowy: wartość \(x\), dla której chcesz obliczyć przybliżoną wartość \(y\).

Wzór ogólny

Kolejne punkty na osi X obliczamy, dodając krok \(h\):

\[x_{n+1}=x_n+h\]

Wartości igreków \(y\) dla kolejnych kroków obliczamy z kluczowego wzoru metody Eulera:

\(y_{n+1}=y_{n}+h\cdot f(x_{n},y_{n})\),
gdzie
\(f(x_n, y_n)\)
to po prostu podstawienie współrzędnych aktualnego punktu do Twojego równania różniczkowego.

Przykład

Rozwiążmy konkretne zadanie:

Musimy wykonać 3 kroki (od 0 do 0,1, potem do 0,2 i do 0,3).

KROK 1 Wyznaczamy wartości dla \({x_1 = 0{,}1}\):

Mamy punkt startowy: \({x_0 = 0, y_0 = 1}\). Obliczamy nachylenie w tym punkcie: \({f(x_0,y_0) = 0 + 1 = 1}\). Podstawiamy do wzoru:

\[y_{1}=y_{0}+h\cdot f(x_{0},y_{0}) \\ \\
y_1=1+0{,}1\cdot 1=1+0{,}1=\mathbf{1{,}1}\]

Nasz nowy punkt to: \({x_1 = 0{,}1, y_1 = 1{,}1}\).

KROK 2 Wyznaczamy wartości dla \({x_2 = 0{,}2}\):

Mamy aktualny punkt: \({x_1 = 0{,}1, y_1 = 1{,}1}\). Obliczamy nachylenie w tym punkcie: \({f(x_1, y_1) = 0{,}1 + 1{,}1 = 1{,}2}\). Podstawiamy do wzoru na \(y_2\):

\[{y_2 = y_1+h\cdot f(x_{1},y_{1})} \\ \\
y_2=1{,}1+0{,}1\cdot 1{,}2=1{,}1+0{,}12=\mathbf{1{,}22}\]

Nasz nowy punkt to: \({x_2 = 0{,}2, y_2 = 1{,}22}\).

KROK 3 Wyznaczamy wartość końcową dla \({x_3 = 0{,}3}\):

Mamy aktualny punkt: \({x_2 = 0{,}2, y_2 = 1{,}22}\). Obliczamy nachylenie w tym punkcie: \({f(x_2, y_2) = 0{,}2 + 1{,}22 = 1{,}42}\). Podstawiamy do wzoru na \(y_3\):

\[{y_3=y_2+h\cdot f(x_2,y_2)} \\ \\
y_3=1{,}22+0{,}1\cdot 1{,}42=1{,}22+0{,}142=\mathbf{1{,}362}\]

Wynik

Przybliżona wartość funkcji dla \({x = 0{,}3}\) obliczona metodą Eulera wynosi \(1{,}362\).

Dla porównania: dokładny wynik wyliczony wzorami matematycznymi to około \(1{,}399\), więc przy kroku \(0{,}1\) błąd jest niewielki.

Algorytm metody Eulera

Specyfikacja problemu

Dane wejściowe

\(x_s\) : współrzędna \(x\) punktu startowego; \({x_s \in \mathbb{R}}\).
\(x_k\) : współrzędna \(x\) punktu końcowego; \({x_k \in \mathbb{R},\;x_k > x_s}\).
\(y_s\) : współrzędna \(y\) punktu startowego; \({y_s \in \mathbb{R}}\).
\(h\) : odstęp punktów po osi \(x\); \({h \in \mathbb{R},\;h > 0}\).
\(f(x,y)\) : funkcja rzeczywista, która definiuje równanie różniczkowe

Dane wyjściowe

\(y\) : przybliżona wartość funkcji \(y(x)\) w punkcie końcowym \(x_k\); \({y \in \mathbb{R}}\).

Zmienne pomocnicze

\(h_r\) : odstęp roboczy punktów po osi \(x\); \({h_r \in \mathbb{R}}\).
\(x\) : bieżąca współrzędna \(x\); \({x \in \mathbb{R}}\).
\(c\) : numer kroku; \({c \in \mathbb{N}}\)

Lista kroków

K01: \(x \leftarrow x_s\) ; inicjujemy zmienne
K02: \(y \leftarrow y_s\) ; x i y z warunku początkowego
K03: \(h_r \leftarrow h\) ; zapamiętujemy wielkość odstępu
K04: \(c \leftarrow 0\) ; numer kroku
K05: Dopóki \(x < x_k\),
wykonuj kroki K6...K10
 
K06:   \(c \leftarrow c+1\) ; zwiększamy numer kroku
K07:   Jeśli \(x+h_r > x_k\),
  to \(h_r \leftarrow x_k-x\)
; dopasowujemy odstęp w ostatnim kroku,
; jeśli jest zbyt duży
K08:   \(y \leftarrow y + h_r \cdot f(x,y)\) ; wzór Eulera na nowe y
K09:   \(x \leftarrow x + h_r\) ; przesuwamy się na osi OX
K10:   Pisz x,y ; wypisujemy współrzędne punktów
K11: Zakończ  

Zalety metody Eulera

Niezwykła prostota algorytmiczna: Jest to najprostsza metoda numeryczna do zrozumienia i zaimplementowania. Wymaga zaledwie jednej małej pętli i jednej linijki kodu ze wzorem.

Minimalny koszt obliczeniowy na jeden krok: W każdej iteracji komputer musi wyznaczyć wartość funkcji \(f(x,y)\) tylko jeden raz. Dla porównania, popularna metoda RK4 (klasyczna metoda Rungego-Kutty czwartego rzędu; ang. Classical fourth-order Runge-Kutta method) wymaga aż czterokrotnego wyliczania funkcji w każdym kroku.

Doskonała wartość dydaktyczna: Stanowi idealny punkt wyjścia do nauki analizy numerycznej. Pokazuje uczniom intuicyjne przejście od geometrycznej definicji pochodnej (stycznej) do dyskretnych kroków w kodzie.

Szybkość działania przy małych wymaganiach: Jeśli zjawisko jest w miarę liniowe lub błąd nie ma krytycznego znaczenia, metoda ta działa błyskawicznie.

Wady metody Eulera

Bardzo niska dokładność (Metoda I rzędu): Lokalny błąd obcięcia jest proporcjonalny do \(h^2\), a błąd globalny (skumulowany na całym przedziale) do \(h\). Aby zwiększyć dokładność np. 10-krotnie, trzeba zmniejszyć krok \(h\) 10-krotnie, co drastycznie wydłuża czas obliczeń.

Szybka kumulacja błędu: Metoda "idzie po linii prostej" (stycznej). Jeśli prawdziwe rozwiązanie mocno skręca (ma dużą krzywiznę), algorytm szybko "wylatuje z zakrętu" i z każdym krokiem oddala się od rzeczywistego wyniku.

Słaba stabilność numeryczna: Dla wielu równań (tzw. równań sztywnych, ang. stiff equations) metoda Eulera staje się niestabilna. Jeśli krok \(h\) będzie minimalnie za duży, wykres zamiast dążyć do rozwiązania zacznie gwałtownie oscylować i wartości \(y\) uciekną do nieskończoności.

Konieczność stosowania bardzo małych kroków: Aby utrzymać stabilność i sensowną dokładność dla bardziej dynamicznych funkcji, trzeba drastycznie zmniejszać \(h\). To z kolei zwiększa liczbę iteracji i naraża program na kumulację błędów zaokrągleń zmiennoprzecinkowych (ang. floating-point round-off errors).


do podrozdziału  do strony 

Przykładowa implementacja

Metoda Eulera jest najprostszą metodą numeryczną do rozwiązywania równań różniczkowych zwyczajnych (ODE) pierwszego rzędu z zadanym warunkiem początkowym. Działa ona na zasadzie przechodzenia "krok po kroku": znając wartość funkcji w punkcie startowym oraz tempo jej zmian (pochodną), wyznaczamy wartość w kolejnym punkcie, przesuwając się wzdłuż linii stycznej o mały krok \(h\). Poniższy program rozwiązuje równanie różniczkowe \({\frac{dy}{dx} = x + y}\) z warunkiem  początkowym \({y(0) = 1}\) na przedziale od \({x = 0}\) do \({x = 2}\).

 


do podrozdziału  do strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2026 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.