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

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

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

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

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

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

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

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

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

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

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

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

Модификации и обобщения

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

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

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

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

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

Реализации на языках программирования Реализация на языке Си для функции. #include <stdio.h> // printf() #include <stdlib.h> // EXIT_SUCCESS // функция первой производной double f( double const x, double const y ) { return 6 * x * x + 5 * x * y; } // точка входа int main() { double const h = .01; // размер шага double x = 1; // x_0 double y = 1; // y_0 int n = 10; // количество итераций // итерации по методу Эйлера for ( ; n--; y += h * f( x, y ), x += h ); // печать результата printf( "x:\t%-5.7lf\ny:\t%-5.7lf", x, y ); // выход 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())Реализация на языке Lua:n, h, x, y = 10, 0.01, 1, 1 -- количество итераций, шаг, координаты начальной точки function f (x, y) return 6*x^2+5*x*y end -- функция первой производной for i = 1, n do x, y = x + h, y + h * f(x, y) end print('x: '..x..' y: '..y)

См. также Метод Рунге — Кутты

Примечания

Литература

Категория:Численное интегрирование Категория:Объекты, названные в честь Леонарда Эйлера