Метод Эйлера — простейший численный метод решения систем обыкновенных дифференциальных уравнений[1]. Впервые описан Леонардом Эйлером в 1768 году в работе «Интегральное исчисление». Данный метод дает возможность приближенно выразить функцию теоретически с любой точностью, заданной наперёд. Суть метода Эйлера в пошаговом вычислении значений решения y=y(x) дифференциального уравнения вида y’=f (x, y) с начальным условием (x0; y0) на отрезке [x0.X]. Метод Эйлера является методом 1-го порядка точности и называется методом ломаных. Он основан на аппроксимации интегральной кривой кусочно-линейной функцией, так называемой ломаной Эйлера. Ниже представлены точное решение и решение, полученное с помощью метода Эйлера, при , X = 9, , h = 0.1
(рис. 1).
Для сравнения эффективности численных методов решения дифференциальных уравнений рассмотрим решение следующего уравнения:
Для вычисления используются следующие формулы:
(1)
Код программы (C++):
#include<iostream>
using namespace std;
int main()
{
float x0, y0, xn, h, yn, slope;
int i, n;
cout«"Enter Initial Condition"« endl;
cout«"x0 = ";
cin» x0;
cout«"y0 = ";
cin » y0;
cout«"Enter calculation point xn = ";
cin»xn;
cout«"Enter number of steps: ";
cin» n;
h = (xn-x0)/n;
/* Метод Эйлера */
cout«"\nx0\ty0\tslope\tyn\n";
cout«"------------------------------\n";
for(i=0; i < n; i++) // Данный цикл содержит в себе необходимые формулы
{
slope = f(x0, y0);
yn = y0 + h * slope;
cout« x0«"\t"« y0«"\t"« slope«"\t"« yn« endl;
y0 = yn;
x0 = x0+h;
}
/* Вывод результата */
cout«"\nValue of y at x = "« xn« " is " « yn;
return 0;
}
Рис. 1. Сравнение точного решения с решением, полученным методом Эйлера
Сутьмодифицированного способа Эйлера [2] заключается в пошаговом вычислении значений дифференциального уравнения вида с начальным условием ( ; ). Данный метод является методом 2-го порядка точности и называется модифицированным методомЭйлера.
Разница между данным методом и методом Эйлера минимальна и заключается в использовании следующих формул:
(2)
График:
На примере второго графика с теми же значениями (Рис. 2), взятыми из предыдущего, видно, что получилось более точное решение. Модифицированный Метод Эйлера и точное решение при , X = 9, = 1, h = 0,1
рис. 2. Сравнение точного решения с решением, полученным модифицированным методом Эйлера
Классический метод Рунге-Кутты.Суть метода Рунге-Кутты в пошаговом вычислении значений решения y=y(x) дифференциального уравнения вида y’=f(x,y) с начальным условием (x0;y0). Классический метод Рунге-Кутты является методом 4-го порядка точности и называется методом Рунге-Кутты 4-го порядка точности [2][3].
Расчетные формулы:
(3)
Код программы (C++):
# В данном случае внутри цикла дописываем недостающие формулы
for(i=0; i < n; i++)
{
k1 = h * (f(x0, y0));
k2 = h * (f((x0+h/2), (y0+k1/2)));
k3 = h * (f((x0+h/2), (y0+k2/2)));
k4 = h * (f((x0+h), (y0+k3)));
k = (k1+2*k2+2*k3+k4)/6;
yn = y0 + k;
cout« x0«"\t"« y0«"\t"« yn« endl;
x0 = x0+h;
y0 = yn;
}
Из рис. 3 видно, что полученное решение практически не отличается от точного.
рис. 3. Сравнение точного решения с решением, полученным методом Рунге-Кутты
Для сравнения рассмотренных методов рассмотрим таблицу.
Таблица «Сравнение результатов методов при точном шаге»
Методы |
шаг |
результат |
Метод Эйлера |
0.1 |
~ -3,486 |
Модификация Эйлера |
0.1 |
~ 1,421 |
Классический метод Рунге-Кутта |
0.1 |
~ 1,028 |
Результате работ программ таковы, что наиболее точным из перечисленных методов является классический метод Рунге-Кутты, что видно на представленном выше графике. Далее по точности расчётов идут модифицированный метод Эйлера и метод Эйлера соответственно.
В ходе выполнения данной работы были изучены следующие методы решения: метод Эйлера, модифицированный метод Эйлера, классический метод Рунге-Кутты, а также углублены познания по теме численные методы решения дифференциальных уравнений [3].
Список литературы
1. Зенков А.В. Численные методы Учебное пособие – Урал. ун-та, 2016 – 104с.
2.Л. А. Игумнов, С. Ю. Литвинчук, Т. В. Юрченко Методы вычислительной математики решение уравнений и систем уравнений Учебное пособие - ННГАСУ, 2018. – 80 с.
3. Березин Н.С., Жидков Н.П. Методы вычислений. - Т.1. - М.: Наука, 2010. – 217-305 с.