Пусть дана задача Коши для уравнения первого порядка:
где функция определена на некоторой области . Решение ищется на полуинтервале . На этом промежутке введём узлы
Приближенное решение в узлах , которое обозначим через , определяется по формуле
Эти формулы непосредственно обобщаются на случай систем обыкновенных дифференциальных уравнений.
Оценка погрешности метода на шаге и в целом
Погрешность на шаге, или локальная погрешность, — это разность между численным решением после одного шага вычисления и точным решением в точке . Численное решение задаётся формулой
Локальную ошибку получаем, вычитая из второго равенства первое:
Это справедливо, если имеет непрерывную вторую производную[2]. Другим достаточным условием справедливости этой оценки, из которого вытекает предыдущее и которое обычно может быть легко проверено, является непрерывная дифференцируемость по обоим аргументам[3].
Погрешность в целом, глобальная или накопленная погрешность — это погрешность в последней точке произвольного конечного отрезка интегрирования уравнения. Для вычисления решения в этой точке требуется шагов, где — длина отрезка. Поэтому глобальная погрешность метода .
Таким образом, метод Эйлера является методом первого порядка — имеет погрешность на шаге и погрешность в целом [3].
Значение метода Эйлера
Метод Эйлера являлся исторически первым методом численного решения задачи Коши. О. Коши использовал этот метод для доказательства существования решения задачи Коши. Ввиду невысокой точности и вычислительной неустойчивости для практического нахождения решений задачи Коши метод Эйлера применяется редко. Однако в виду своей простоты метод Эйлера находит своё применение в теоретических исследованиях дифференциальных уравнений, задач вариационного исчисления и ряда других математических проблем.
Модификации и обобщения
Модифицированный метод Эйлера с пересчетом
Повысить точность и устойчивость вычисления решения можно с помощью явного метода Эйлера следующего вида.
Прогноз:
.
Коррекция:
.
Для повышения точности корректирующую итерацию можно повторить, подставляя .
Модифицированный метод Эйлера с пересчетом имеет второй порядок точности, однако для его реализации необходимо как минимум дважды вычислять . Метод Эйлера с пересчетом представляет собой разновидность методов Рунге-Кутты (предиктор-корректор).
Двухшаговый метод Адамса — Башфорта
Другой способ повысить точность метода заключается в использовании не одного, а нескольких вычисленных ранее значений функции:
#include<stdio.h> // printf()#include<stdlib.h> // EXIT_SUCCESS// функция первой производнойdoublef(doubleconstx,doubleconsty){return6*x*x+5*x*y;}// точка входаintmain(){doubleconsth=.01;// размер шагаdoublex=1;// x_0doubley=1;// y_0intn=10;// количество итераций// итерации по методу Эйлераfor(;n--;y+=h*f(x,y),x+=h);// печать результатаprintf("x:\t%-5.7lf\ny:\t%-5.7lf",x,y);// выходreturnEXIT_SUCCESS;}
# n - количество итераций, h - шаг, (x, y) - начальная точкаdefEuler(n=10,h=0.01,x=1,y=1):foriinrange(n):y+=h*function(x,y)x+=hreturnx,y# решениеdeffunction(x,y):return6*x**2+5*x*y# функция первой производнойprint(Euler())
n,h,x,y=10,0.01,1,1-- количество итераций, шаг, координаты начальной точкиfunctionf(x,y)return6*x^2+5*x*yend-- функция первой производнойfori=1,ndox,y=x+h,y+h*f(x,y)endprint('x: '..x..' y: '..y)