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

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

Описание метода

править

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

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

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

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

править

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

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

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

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

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

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

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

править

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

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

править

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

править

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

Прогноз:

.

Коррекция:

.

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

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

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

править

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

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

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

править

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

#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)

См. также

править

Примечания

править
  1. Эйлер Л. Интегральное исчисление, том 1, раздел 2, гл. 7.
  2. Atkinson K. A. An Introduction to Numerical Analysis (англ.). — 2nd Ed.. — New York: John Wiley & Sons, 1989. — P. 342. — ISBN 978-0-471-50023-0.
  3. 1 2 Эйлера метод ломаных // Математический энциклопедический словарь / Гл. ред. Ю. В. Прохоров. Ред. кол. С. И. Адян, Н. С. Бахвалов, В. И. Битюцков, А. П. Ершов, Л. Д. Кудрявцев, А. Л. Онищик, А. П. Юшкевич. — М.: «Советская энциклопедия», 1988. — С. 641. — 847 с., ил. — 148 900 экз.

Литература

править

📚 Artikel Terkait di Wikipedia

Функция Эйлера

2007, Euler's Phi-Function, p. 136. Weisstein, MathWorld, Totient Function Ruiz, S., A Congruence With the Euler Totient Function, 2004 Виноградов, 1952

Ряд из натуральных чисел

Favorite Numbers: 24  (19 сентября 2008). The Euler-Maclaurin formula, Bernoulli numbers, the zeta function, and real-variable analytic continuation by

Постоянная Апери

февраля 2011 Leonhard Euler (2008), Finding the sum of any series from a given general term (англ.), arXiv:0806.4096v1 Leonhard Euler (1773), Exercitationes

Ряд обратных квадратов

августа 2020. Leonhard Euler biography . Дата обращения: 16 апреля 2016. Архивировано из оригинала 17 марта 2008 года. Euler et le problème de Bâle 

Вирт, Никлаус

защитил диссертацию, темой которой стал язык программирования Эйлер (англ. Euler) — расширение Алгола средствами языка Лисп. Диссертация Вирта была замечена

Полилогарифм

 — ISBN 2-88124-682-6. (see § 1.2, «The generalized zeta function, Bernoulli polynomials, Euler polynomials, and polylogarithms», p. 23.) Robinson, J.E

Уравнения Максвелла

polarization (англ.) // Phys. Rev. Lett.. — 1951. — Vol. 82. — P. 664. Heisenberg W., Euler H. Folgerungen aus der Dlracschen Theorie des Positrons (нем.) // Z. Phys

Дзета-функция Римана

Архивировано 29 апреля 2018 года. van der Poorten, Alfred (1979), A proof that Euler missed ... Apéry's proof of the irrationality of ζ(3) (PDF), The Mathematical