Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Методы решения дифференциальных уравнений. Метод Рунге-Кутта
Дифференциальным уравнением 1-го порядка называется уравнение вида:
Решить дифференциальное уравнение это значит определить функцию y=F(x), которая при подстановке в уравнение (4.5.1) приводит к тождеству. Поиск решения y=F(x) при реализации аналитических методов сводится к интегрированию уравнения (4.5.1), что не всегда приводит к успеху из-за сложности вида f(x, y). Поэтому для решения задач (4.5.1) используют численные методы. Метод Эйлера. При реализации метода Эйлера для уравнения (4.5.1) первую производную заменяют приближенным соотношением:
которое является первым приближением формулы Тейлора:
Таким образом, уравнение (4.5.2) преобразуется к виду:
где Для решения уравнения (4.5.1) с помощью приближения (4.5.3) вводят начальное условие Коши Поясним применимость формулы (4.5.3) для решения дифференциального укравнения
Выберем шаг итерации 0.5: y(1)=2;
Отсюда y(1)=2; y(1.5)=2+0.5*(2*2+e)=5.39; y(2)=5.39+0.5*(2*5.39+ y(2.5)=13.1+0.5*(2*13.1+ y(3)=43.17+0.5*(2*43.17+ Результаты вычислений представлены в таблице
Метод Рунге-Кутта четвертого порядка. Итерационная формула в этом методе имеет вид:
где Поясним применимость метода Рунге-Кутта четвертого порядка для решения уравнения Выберем шаг 1:
для следующего шага:
Обозначим
Для решения дифференциального уравнения более высокого порядка
Указанный метод позволяет свести решение дифференциального уравнения n-го порядка к решению системы n уравнений первого порядка. В свою очередь методы решения одного уравнения первого порядка распространяются на систему таких уравнений. Рассмотрим данный метод на примере дифференциального уравнения Выполним замену переменной
Таким образом любое уравнение n-порядка можно свести к системе уравнений первого порядка.
Пример. Написать алгоритм и программу решения дифференциального уравнения Обозначим выражение (4.5.4) в схеме алгоритма как (a).
program Runge_Cutta; uses crt; var y, x: array [1..11] of real; k1, k2, k3, k4, y0, h, f0, fn: real; i: integer;
function fun(x, y: real): real; begin fun: =2*y+exp(x); end;
begin {н.п.} clrscr; f0: =0; fn: =2; h: =abs(fn-f0)/10; {шаг} y0: =1; k1: =0; k2: =0; k3: =0; k4: =0; k1: =fun(f0, y0); k2: =fun(f0+h/2, y0+h*k1/2); k3: =fun(f0+h/2, y0+h*k2/2); k4: =fun(f0+h/2, y0+h*k3/2); y[1]: =y0+(h/6)*(k1+2*k2+2*k3+k4); {вычисление функции в первой точке} x[1]: =f0; f0: =f0+h; for i: =2 to 11 do begin k1: =fun(f0, y[i-1]); k2: =fun(f0+h/2, y[i-1]+h*k1/2); k3: =fun(f0+h/2, y[i-1]+h*k2/2); k4: =fun(f0+h/2, y[i-1]+h*k3/2); y[i]: =y[i-1]+(h/6)*(k1+2*k2+2*k3+k4); {вычисление функции в остальных точках} x[i]: =f0; f0: =f0+h; end; for i: =1 to 11 do writeln('x[', i, ']=', x[i]: 2: 1, ' y[', i, ']=', y[i]: 5: 3); readln; end.{к.п.}
Результаты задачи 5: x[1]=0.0 y[1]=1.733 x[2]=0.2 y[2]=2.870 x[3]=0.4 y[3]=4.618 x[4]=0.6 y[4]=7.282 x[5]=0.8 y[5]=11.315 x[6]=1.0 y[6]=17.391 x[7]=1.2 y[7]=26.510 x[8]=1.4 y[8]=40.151 x[9]=1.6 y[9]=60.505 x[10]=1.8 y[10]=90.814 x[11]=2.0 y[11]=135.871
|