Euler-módszer
Kiejtés
- IPA: [ ˈɛulɛrmoːt͡sːɛr]
Főnév
- (matematika, algoritmusok) Az Euler-módszer egy numerikus eljárás differenciálegyenletek megoldására, különösen az alábbi alakú kezdeti értékproblémákhoz:
[ y’(t) = f(t, y), y(t_0) = y_0 ]
Ez az egyik legegyszerűbb numerikus integrációs módszer, amely a függvény deriváltjának közelítésére épít lineáris interpolációval.
Matematikai alapok
A derivált definíciója alapján: [ y’(t) = ]
Az egyenlet átrendezésével: [ y(t + h) y(t) + h f(t, y) ]
Az Euler-módszer iteratív képlete: [ y_{n+1} = y_n + h f(t_n, y_n) ] ahol: - (y_n) a megoldás közelítése az (n)-edik lépésben, - (h) az időlépés mérete, - (f(t_n, y_n)) a differenciálegyenlet jobb oldali kifejezése.
Algoritmus lépései
- Inicializálás:
- (t_0, y_0): A kezdeti értékek.
- (h): Az időlépés mérete.
- (N): Az iterációk száma.
- Iteráció:
- Számítsd ki (y_{n+1})-et az Euler-képlettel: [ y_{n+1} = y_n + h f(t_n, y_n) ]
- Frissítsd az (t_{n+1} = t_n + h) értéket.
- Eredmény:
- Az (y_n) értékek a megoldás közelítései a megfelelő (t_n) pontokon.
Időbonyolultság
- Az Euler-módszer időbonyolultsága (O(N)), ahol (N) az időlépések száma.
Példa
Differenciálegyenlet:
[ y’(t) = t + y, y(0) = 1 ]
Lépésméret ((h)):
[ h = 0.1 ]
Megoldás az első 5 iterációra:
- (y_0 = 1)
- (y_1 = y_0 + h f(t_0, y_0) = 1 + 0.1 (0 + 1) = 1.1)
- (y_2 = y_1 + h f(t_1, y_1) = 1.1 + 0.1 (0.1 + 1.1) = 1.22)
- (y_3 = y_2 + h f(t_2, y_2) = 1.22 + 0.1 (0.2 + 1.22) = 1.362)
- (y_4 = y_3 + h f(t_3, y_3) = 1.362 + 0.1 (0.3 + 1.362) = 1.5282)
Python implementáció
def euler_method(f, t0, y0, h, n):
t = t0
y = y0
results = [(t, y)]
for _ in range(n):
y += h * f(t, y)
t += h
results.append((t, y))
return results
# Példa differenciálegyenlet: y'(t) = t + y
f = lambda t, y: t + y
# Paraméterek
t0 = 0
y0 = 1
h = 0.1
n = 5
# Számítás
results = euler_method(f, t0, y0, h, n)
print("t, y értékek:")
for t, y in results:
print(f"{t:.1f}, {y:.5f}")
Kimenet:
t, y értékek: 0.0, 1.00000 0.1, 1.10000 0.2, 1.22000 0.3, 1.36200 0.4, 1.52820 0.5, 1.72102
C++ implementáció
#include <iostream>
#include <vector>
#include <iomanip>
using namespace std;
vector<pair<double, double>> euler_method(double (*f)(double, double), double t0, double y0, double h, int n) {
double t = t0, y = y0;
vector<pair<double, double>> results = {{t, y}};
for (int i = 0; i < n; ++i) {
y += h * f(t, y);
t += h;
results.push_back({t, y});
}
return results;
}
double f(double t, double y) {
return t + y; // Példa differenciálegyenlet
}
int main() {
// Paraméterek
double t0 = 0, y0 = 1, h = 0.1;
int n = 5;
// Számítás
auto results = euler_method(f, t0, y0, h, n);
// Eredmények kiírása
cout << fixed << setprecision(5);
cout << "t, y értékek:" << endl;
for (const auto& [t, y] : results) {
cout << t << ", " << y << endl;
}
return 0;
}
Kimenet:
t, y értékek: 0.00000, 1.00000 0.10000, 1.10000 0.20000, 1.22000 0.30000, 1.36200 0.40000, 1.52820 0.50000, 1.72102
Előnyök
- Egyszerű implementáció:
- Az Euler-módszer könnyen érthető és megvalósítható.
- Kezdeti becslések:
- Gyors közelítést ad a differenciálegyenlet megoldásához.
Hátrányok
- Alacsony pontosság:
- Az Euler-módszer csak elsőrendű pontosságú, ami azt jelenti, hogy a hiba (O(h^2)).
- Stabilitási problémák:
- Nagy (h) lépésméret esetén instabil lehet.
- Pontosságra érzékeny:
- Kis (h) értékek szükségesek a pontos eredményhez, ami növeli a számítási költséget.
Alkalmazások
- Egyszerű kezdeti értékproblémák:
- Gyors közelítés egy bonyolultabb módszer alkalmazása előtt.
- Numerikus szimulációk:
- Például fizikai rendszerek vagy populációmodellek egyszerűsített szimulációja.
- Oktatás:
- Az Euler-módszer bemutatja a numerikus integráció alapötleteit.
Összegzés
Az Euler-módszer egy alapvető, egyszerű numerikus módszer differenciálegyenletek megoldására. Bár alacsony pontossága miatt nem a legmegfelelőbb a precíz számításokhoz, alapvető szerepet játszik a numerikus analízis és az algoritmusok megértésében. Nagyobb pontosság érdekében fejlettebb módszerek, például a Runge-Kutta-módszer alkalmazhatók.
Fordítások
- Euler-módszer - Értelmező szótár (MEK)
- Euler-módszer - Etimológiai szótár (UMIL)
- Euler-módszer - Szótár.net (hu-hu)
- Euler-módszer - DeepL (hu-de)
- Euler-módszer - Яндекс (hu-ru)
- Euler-módszer - Google (hu-en)
- Euler-módszer - Helyesírási szótár (MTA)
- Euler-módszer - Wikidata
- Euler-módszer - Wikipédia (magyar)