Открыть главное меню

Метод Эйлера

(перенаправлено с «Метод ломаных»)

Метод Эйлера — простейший численный метод решения систем обыкновенных дифференциальных уравнений. Впервые описан Леонардом Эйлером в 1768 году в работе «Интегральное исчисление»[1]. Метод Эйлера является явным, одношаговым методом первого порядка точности. Он основан на аппроксимации интегральной кривой кусочно-линейной функцией, так называемой ломаной Эйлера.

Ломаная Эйлера (красная линия) — приближённое решение в пяти узлах задачи Коши и точное решение этой задачи (выделено синим цветом)

Содержание

Описание методаПравить

Пусть дана задача Коши для уравнения первого порядка:

 

 

где функция   определена на некоторой области  . Решение ищется на интервале  . На этом интервале введем узлы:

 

Приближенное решение в узлах  , которое обозначим через  , определяется по формуле:

 

Эти формулы непосредственно обобщаются на случай систем обыкновенных дифференциальных уравнений.

Оценка погрешности метода на шаге и в целомПравить

Погрешность на шаге или локальная погрешность — это разность между численным решением после одного шага вычисления   и точным решением в точке  . Численное решение задаётся формулой

 

Точное решение можно разложить в ряд Тейлора:

 

Локальную ошибку  получаем, вычитая из второго равенства первое:

 

Это справедливо, если   имеет непрерывную вторую производную[2]. Другим достаточным условием справедливости этой оценки, из которого вытекает предыдущее и которое обычно может быть легко проверено, является непрерывная дифференцируемость   по обоим аргументам[3].

Погрешность в целом, глобальная или накопленная погрешность — это погрешность в последней точке произвольного конечного отрезка интегрирования уравнения. Для вычисления решения в этой точке требуется   шагов, где   длина отрезка. Поэтому глобальная погрешность метода  .

Таким образом, метод Эйлера является методом первого порядка — имеет погрешность на шаге   и погрешность в целом  [3].

Значение метода ЭйлераПравить

Метод Эйлера являлся исторически первым методом численного решения задачи Коши. О. Коши использовал этот метод для доказательства существования решения задачи Коши. Ввиду невысокой точности и вычислительной неустойчивости для практического нахождения решений задачи Коши метод Эйлера применяется редко. Однако в виду своей простоты метод Эйлера находит своё применение в теоретических исследованиях дифференциальных уравнений, задач вариационного исчисления и ряда других математических проблем.

Модификации и обобщенияПравить

Модифицированный метод Эйлера с пересчетомПравить

Повысить точность и устойчивость вычисления решения можно с помощью неявного метода Эйлера следующего вида.

Прогноз:

 .

Коррекция:

 .

Для повышения точности корректирующую итерацию можно повторить, подставляя   .

Модифицированный метод Эйлера с пересчетом имеет второй порядок точности, однако для его реализации необходимо как минимум дважды вычислять  . Метод Эйлера с пересчетом представляет собой разновидность методов Рунге-Кутты (предиктор-корректор).

Двухшаговый метод Адамса — БашфортаПравить

Другой способ повысить точность метода заключается в использовании не одного, а нескольких вычисленных ранее значений функции:

 

Это линейный многошаговый метод.

Реализации на языках программированияПравить

Реализация на языке Си для функции .

#include <stdio.h>

double func(double x, double y)
{
	return 6*x*x+5*x*y; // функция первой производной
}

int main(int argc, char** argv)
{
    int i, n; 
    double x, y, h;

    h = 0.01; // шаг
    n = 10; // количество итераций
    x = 1; // x0
    y = 1; // y0

    for (i = 0; i < n; i++)
    {
        y += h * func(x, y); // вычисление yi
        x += h;
    }

    return EXIT_SUCCESS;
}

Реализация на языке Python 3.7:

# n - количество итераций, h - шаг, (x, y) - начальная точка
def Euler(n = 10, h = 0.01, x = 1, y = 1):
    for i in range(n):
        y += h * function(x, y)
        x += h
    return x, y # решение

def function(x, y):
    return 6 * x**2 + 5 * x * y # функция первой производной

print(Euler())

См. такжеПравить

ЛитератураПравить

  • Эйлер Л. Интегральное исчисление. Том 1. — М.: ГИТТЛ. 1956. [1]
  • Бабенко К. И. Основы численного анализа. — М.: Наука. 1986.

ПримечанияПравить

  1. Эйлер Л. Интегральное исчисление, том 1, раздел 2, гл. 7.
  2. Atkinson, Kendall A. (1989), An Introduction to Numerical Analysis (2nd ed.), New York: John Wiley & Sons, с. 342, ISBN 978-0-471-50023-0 
  3. 1 2 Математический энциклопедический словарь. — М.: «Сов. энциклопедия », 1988. — С. 641.