Сравнение численных методов решения дифференциальных уравнений - Студенческий научный форум

XV Международная студенческая научная конференция Студенческий научный форум - 2023

Сравнение численных методов решения дифференциальных уравнений

Егоркин А.А. 1, Коваленко П.С. 1
1Коломенский институт (филиал) Московского политехнического университета
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Метод Эйлерапростейший численный метод решения систем обыкновенных дифференциальных уравнений[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 Conditionendl;
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«"\ty0«"\tslope«"\tyn« 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 с.

Просмотров работы: 76