Kiejtés

  • IPA: [ ˈɛulɛrmoːt͡sːɛr]

Főnév

Euler-módszer

  1. (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

  1. 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.
  2. 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.
  3. 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:

  1. (y_0 = 1)
  2. (y_1 = y_0 + h f(t_0, y_0) = 1 + 0.1 (0 + 1) = 1.1)
  3. (y_2 = y_1 + h f(t_1, y_1) = 1.1 + 0.1 (0.1 + 1.1) = 1.22)
  4. (y_3 = y_2 + h f(t_2, y_2) = 1.22 + 0.1 (0.2 + 1.22) = 1.362)
  5. (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

  1. Egyszerű implementáció:
    • Az Euler-módszer könnyen érthető és megvalósítható.
  2. Kezdeti becslések:
    • Gyors közelítést ad a differenciálegyenlet megoldásához.



Hátrányok

  1. Alacsony pontosság:
    • Az Euler-módszer csak elsőrendű pontosságú, ami azt jelenti, hogy a hiba (O(h^2)).
  2. Stabilitási problémák:
    • Nagy (h) lépésméret esetén instabil lehet.
  3. 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

  1. Egyszerű kezdeti értékproblémák:
    • Gyors közelítés egy bonyolultabb módszer alkalmazása előtt.
  2. Numerikus szimulációk:
    • Például fizikai rendszerek vagy populációmodellek egyszerűsített szimulációja.
  3. 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