|
Serwis Edukacyjny w I-LO w Tarnowie
Materiały dla uczniów liceum |
Autor artykułu: mgr Jerzy Wałaszek |
©2026 mgr Jerzy Wałaszek
|
| SPIS TREŚCI REMANENT |
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
Wzór ogólny
Kolejne punkty na osi X obliczamy, dodając krok \(h\):
Wartości igreków \(y\) dla kolejnych kroków obliczamy z kluczowego wzoru metody Eulera:
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:
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\):
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\):
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.
| \(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 |
| \(y\) | : przybliżona wartość funkcji \(y(x)\) w punkcie końcowym \(x_k\); \({y \in \mathbb{R}}\). |
| \(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}}\) |
| 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 |
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.
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).
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}\).
![]() |
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:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.