Лабараторная работа 5. Численное решение задачи Коши для обыкновенных дифференциальных уравнений
Лабараторная. Численное решение задачи Коши для обыкновенных дифференциальных уравнений. Вариант 10
Лабараторная. Численное решение задачи Коши для обыкновенных дифференциальных уравнений. Вариант 11
Цель работы: изучение методов численного интегрирования обыкновенных дифференциальных уравнений, практическое решение уравнений на ЭВМ, сравнительный анализ рассмотренных методов.
Описание метода Рунге-Кутта четвертого порядка точности.
Дифференциальные уравнения широко используются для математического моделирования процессов и явления в самых разнообразных областях науки и техники. Движение космических объектов, кинетика химических реакций, динамика биологических популяций в природе, модели экономического развития и т.п., все эти явления исследуются с помощью дифференциальных уравнений. Любая физическая ситуация, где рассматривается степень изменения одной переменной по отношению к другой переменной, описывается дифференциальным уравнением.
В общем случае обыкновенными дифференциальными уравнениями называются такие уравнения, которые содержат одну или несколько производных от искомой функции.
x – независимая переменная.
Наивысший порядок n входящей в уравнение производной называется порядком дифференциального уравнения.
В ряде случаев из общей записи дифференциального уравнения удается выразить старшую производную в явном виде.
Такая форма записи называется уравнением, разрешенным относительно старшей производной.
Решением дифференциального уравнения n-го порядка называется всякая n раз дифференцируемая функция , которая после ее подстановки в уравнение обращает его в тождество. График функции называют интегральной кривой.
Общее решение обыкновенного дифференциального уравнения содержит n произвольных постоянных :
.
Если дополнительные условия задаются в одной точке, то такая задача называется задачей Коши. Дополнительные условия в задаче Коши называются начальными условиями, а точка , в которой они задаются, – начальной точкой. Начальные условия могут быть заданы следующим образом:
В основу семейства алгоритмов Рунге-Кутта положена идея аппроксимации рядом Тейлора. Метод Рунге-Кутта четвертого порядка относится к явным алгоритмам. Он использует промежуточные моменты времени для вычисления состояния в момент времени tk+1. Следующие формулы определяют алгоритм Рунге-Кутта четвертого порядка:
Каждое из четырех ki является аппроксимирующим значением векторного поля.
k1- значение векторного поля при xk.
k2 - аппроксимированное значение на полшага позже, в момент времени tk+h/2.
k3 - также значение векторного поля в момент tk+h/2, но вычисляется с использованием k2.
k4 - значение векторного поля в момент tk+1, вычисляется с использованием основного последнего значения k3.
Наконец, эти четыре значения усредняются, чтобы дать аппроксимацию векторного поля для определения xk+1.
Определение близости полученного заданным методом решения к точному значению производится с помощью оценок:
, i = 1,2,…,n.
Где QUOTE – точное решение, yi – полученное приближенное решение.
Блок-схема алгоритма программы решения задачи Коши методом Рунге-Кутта четвертого порядка точности.
При запуске программы требуется ввод дифференциального уравнения, начальных условий, шага, интервала интегрирования и точного решения.
Алгоритм вычисления значений функции заключается в следующем:
- Находим значения векторного поля по формулам:
mas_k[1] := f1(x, y, y1);
mas_m[1] := f2(x, y, y1);
mas_k[2] := f1(x + h/2, y + (h*mas_k[1])/2, y1 + (h*mas_m[1])/2);
mas_m[2] := f2(x + h/2, y + (h*mas_k[1])/2, y1 + (h*mas_m[1])/2);
mas_k[3] := f1(x + h/2, y + (h*mas_k[2])/2, y1 + (h*mas_m[2])/2);
mas_m[3] := f2(x + h/2, y + (h*mas_k[2])/2, y1 + (h*mas_m[2])/2);
mas_k[4] := f1(x + h, y + h*mas_k[3], y1 + h*mas_m[3]);
mas_m[4] := f2(x + h, y + h*mas_k[3], y1 + h*mas_m[3]);
- Находим значения функции по численномк методу и по точному решению:
y := y + h/6*(mas_k[1] + 2*mas_k[2] + 2*mas_k[3] + mas_k[4]);
y1 := y1 + h/6*(mas_m[1] + 2*mas_m[2] + 2*mas_m[3] + mas_m[4]);
- Вычисляем оценки:
o1[i] := Abs(mas_y[i] - yt);
o2 := (sqrt(sqr(mas_y[i] - yt)))/(sqrt(sqr(yt)));
Вариант 10.
Дано:
QUOTE – дифференциальное уравнение
QUOTE ;
QUOTE – начальные условия
h = 0.02
[0;0.8] – интервал интегрирования
QUOTE – точное решение
Ответ: δ1 = 0,00000407; δ2 = 0,00000411;