Пример решения уравнения второго порядка методом рунге кутта

Методы Рунге-Кутты второго порядка

Пусть дано дифференциальное уравнение первого порядка

Пример решения уравнения второго порядка методом рунге кутта

с начальным условием х=х0, у =уо-

В окрестности точки х0 функцию у(х) разложим в ряд Тейлора:

Пример решения уравнения второго порядка методом рунге кутта

который можно применить для приближенного определения искомой функции у(х). Для уменьшения погрешности метода интегрирования дифференциального уравнения необходимо учитывать большее количество членов ряда. Однако при этом возникает необходимость аппроксимации производных от правых частей дифференциального уравнения.

Основная идея методов Рунге-Кутты заключается в том, что производные аппроксимируются через значения функции Дх, у) в точках на интервале [х(), х0+л], которые выбираются из условия наибольшей близости алгоритма к ряду Тейлора. В зависимости от старшей степени h, с которой учитываются члены ряда, построены вычислительные схемы Рунге-Кутты разных порядков точности.

Так, например, общая форма записи метода Рунге-Кутты второго порядка следующая:

Пример решения уравнения второго порядка методом рунге кутта

где Пример решения уравнения второго порядка методом рунге кутта

Решение ОДУ, полученное по этой схеме, имеет погрешность 0(1г).

Для параметра а наиболее часто используют значения

Пример решения уравнения второго порядка методом рунге кутта

Рассмотрим первый вариант метода Рунге-Кутты второго порядка.

При а = 0,5 формула (8.19) примет вид:

Пример решения уравнения второго порядка методом рунге кутта

Формулу (8.20) можно представить в виде следующей схемы:

Пример решения уравнения второго порядка методом рунге кутта

Это метод Рунге-Кутты второго порядка (1-й вариант), или исправленный метод Эйлера.

Геометрически процесс нахождения точки Х,у можно проследить по рис. 8.4. По методу Эйлера находится точка x()+h, yo+h — /о, лежащая на прямой Г,. В этой точке снова вычисляется тангенс угла наклона касательной (прямая L,). Усреднение двух тангенсов дает прямую L. Проводим через точку л’«,_у0 прямую L, параллельную L. Точка, в которой прямая L пересечется с ординатой х=х]0+h,u будет искомой точкой Х,у.

Тангенс угла наклона прямой L и L равен Пример решения уравнения второго порядка методом рунге кутта

Уравнение прямой L запишется в виде:

Пример решения уравнения второго порядка методом рунге кутта

тогда в точке Пример решения уравнения второго порядка методом рунге куттас учетом (8.22) получим решение:

Пример решения уравнения второго порядка методом рунге кутта

Формула описывает метод Рунгс-Кутты второго порядка при а = 0,5.

Пример решения уравнения второго порядка методом рунге кутта

В случае второго варианта метода Рунгс-Кутты второго порядка принимают

Пример решения уравнения второго порядка методом рунге кутта

Тогда формула (8.19) примет вид:

Пример решения уравнения второго порядка методом рунге кутта

Представим формулу (8.25) в виде схемы:

Пример решения уравнения второго порядка методом рунге кутта

Эго метод Рунге-Кутты второго порядка (2-й вариант), или модифицированный метод Эйлера.

Рассмотрим геометрическую интерпретацию метода Рунге-Кутты при а = 1 (рис. 8.5).

Пример решения уравнения второго порядка методом рунге кутта

Через точку х0, у0 проводим касательную (прямая L,) с тангенсом угла наклона, равным

Пример решения уравнения второго порядка методом рунге кутта

По методу Эйлера в точке х=х0 + h/2 находится приближенное решение ОДУ

Пример решения уравнения второго порядка методом рунге кутта

В точке Р определяется тангенс угла наклона касательной (прямая L*) интегральной кривой:

Пример решения уравнения второго порядка методом рунге кутта

где Пример решения уравнения второго порядка методом рунге кутта

Проводим через точку х0, у0 прямую, параллельную L

(прямая L0). Пересечение этой прямой с ординатой х=х0 + h и дает искомую точку Х,у. Уравнение прямой L0 можно записать в виде:

Пример решения уравнения второго порядка методом рунге кутта

Тогда с учетом (8.28) в точке х=х0 + h получим решение:

Пример решения уравнения второго порядка методом рунге кутта

Формула (8.30) описывает метод Рунге-Кутты второго порядка при а = 1.

Видео:3_11. Алгоритм Рунге-КуттыСкачать

3_11. Алгоритм Рунге-Кутты

Метод Рунге-Кутта решения диф. уравнений и их систем.

Метод позволяет решать системы обыкновенных дифференциальных уравнений (ОДУ) первого порядка следующего вида:

Пример решения уравнения второго порядка методом рунге кутта

которые имеют решение:

Пример решения уравнения второго порядка методом рунге кутта

где t — независимая переменная (например, время); X, Y и т.д. — искомые функции (зависимые от t переменные). Функции f, g и т.д. — заданы. Также предполагаются заданными и начальные условия, т.е. значения искомых функций в начальный момент.

Одно диф. уравнение — частный случай системы с одним элементом. Поэтому, далее речь пойдет для определенности о системе уравнений.

Метод может быть полезен и для решения диф. уравнений высшего (второго и т.д.) порядка, т.к. они могут быть представлены системой диф. уравнений первого порядка.

Метод Рунге-Кутта заключается в рекурентном применении следующих формул:

Пример решения уравнения второго порядка методом рунге кутта

Реализация Метода Рунге-Кутта на Delphi может выглядеть так (привожу полностью модуль):

Модуль полностью работоспособен. Возвращаемое функцией Runge_Kutt значение — код ошибки. Вы можете дополнить список ошибок по своему усмотрению. Рассчитанные функции системы помещаются в массив Res. Чтобы не загромождать код, в модуле опущены проверки (типа блоков try). Рекомендую их добавить по своему усмотрению.

Ниже приводится описание функции Runge_Kutt и типов, использующихся в модуле.

  • FunArray — вектор функций (правых частей уравнений системы);
  • First, Last — начальная и конечная точки расчетного интервала;
  • Steps — число шагов по расчетному интервалу;
  • InitArray — вектор начальных значений
  • var Res — матрица результатов включая независимую переменную.

В модуле описаны типы:

Функция возвращает коды ошибок:

  • 0 — нет ошибок;
  • 100 — число уравнений не равно числу начальных условий.

Решение содержится в переменной-матрице Res. Первый индекс матрицы относится к переменной (0 — независимая переменная, 1 — первая зависимая и т.д.), второй — к номеру расчетной точки (0 — начальная точка).

Рассмотрим один пример использования модуля. Создадим новое приложение и подключим к нему модуль. На форме приложения разместим кнопку Button1 и область текста Memo1. Поместим в приложение две функции и обработчик нажатия кнопки:

Нажатие кнопки приведет к расчету точек системы, которые будут выведены в текстовую область.

Модуль с примером и справкой можно скачать бесплатно по адресу RK.zip (ZIP, 15,3Kb) (русский вариант). Английский вариант (условно-бесплатный) можно скачать по адресу RK_Eng.zip (ZIP, 23.4Kb)

Видео:6.4 Явные методы Рунге-КуттыСкачать

6.4 Явные методы Рунге-Кутты

Ссылки

  • http://sadovoya.narod.ru/RK.zip (русский вариант).
  • http://sintreseng.narod.ru/RK_Eng.zip (английский, условно-бесплатный вариант)

Видео:Методы численного анализа - Метод Рунге-Кутта для ОДУ 2 порядкаСкачать

Методы численного анализа - Метод Рунге-Кутта для ОДУ 2 порядка

Оставить комментарий

Видео:Метод ЭйлераСкачать

Метод Эйлера

Комментарии

Пример решения уравнения второго порядка методом рунге кутта

Пример решения уравнения второго порядка методом рунге куттаПример решения уравнения второго порядка методом рунге кутта

Пример решения уравнения второго порядка методом рунге кутта

Пример решения уравнения второго порядка методом рунге куттаПример решения уравнения второго порядка методом рунге кутта

Скачала по Вашей ссылке русский вариант, изменила для своей системы диф. уравнений, но при запуске выдаёт ошибку :
Project Ex.exe raised exception class EOverflow with message ‘ Floating point overflow ‘
Помогите, пожалуйста .

Вот изменённый мною модуль:

unit Unit1;
interface
uses
SysUtils, Forms, StdCtrls, Controls, Classes, Dialogs, Math;
type
TForm1 = class(TForm)
Memo1: TMemo;
rk_But: TButton;
procedure rk_ButClick(Sender: TObject);
private

public

end;
var
Form1: TForm1;
pn,k,ro,Pzv: Extended;

implementation
uses rk_method, Windows;

procedure Syst (var t: TFloat; var X: TFloatVector;
var RP: TFloatVector);
const
fdr1=0.503;
fdr2=0.503;
fdr3=0.196;
W1=179.8928;
W2=3773.8568;
W3=2504.1203;
b1=55.9203;
b2=98.6;
b3=98.6;
Ls1=3.78;
Ls2=9;
Ls3=15.3;
Svidj2=1352.438;
Svidj3=1352.438;
my=0.62;
vk=30;
m=1.2;
L1=30.969;
L2=42.131;
delta1=0;

begin
pn:=2.5*Power(10,4);
k:=6*Power(10,-7);
ro:=8.5*Power(10,-7);
Pzv:=3.919*Power(10,7);

RP[0] := (1/(k*W1))*(my*fdr1*sqrt(2/ro)*sqrt(Abs(pn-X[0]))-my*fdr2*sqrt(2/ro)*sqrt(Abs(X[0]-X[1]))-(delta1*delta1*delta1*b1)/(12*ro*vk*Ls1)*X[0]); // dp1/dt
RP[1] := (1/(k*W2))*(my*fdr2*sqrt(2/ro)*sqrt(Abs(X[0]-X[1]))-my*fdr3*sqrt(2/ro)*sqrt(Abs(X[1]-X[2]))-(X[4]*X[4]*X[4]*b2)/(12*ro*vk*Ls2)*X[1]); // dp2/dt
RP[2] := (1/(k*W3))*(my*fdr3*sqrt(2/ro)*sqrt(Abs(X[1]-X[2]))-(X[6]*X[6]*X[6]*b3)/(12*ro*vk*Ls3)*X[2]); // dp3/dt;
RP[3] := (((Svidj2*X[1]*(L1+L2))/L1)-Pzv)*(2/m); // dv2/dt
RP[4] := X[3]; // d delta2/dt
RP[5] := (((Svidj3*X[2]*(L1+L2))/L2)-Pzv)*(2/m); // dv3/dt
RP[6] := X[5]; // d delta3/dt
end;

procedure TForm1.rk_ButClick(Sender: TObject);
var
I, t1, t2: Cardinal;
tOut, InitConds: TFloatVector;
XOuts: TFloatMatrix;
Points: Cardinal;
First, Last: TFloat;
StepsFact: Cardinal;
Count: Word;
begin
Memo1.Clear;
First := 0.0;
Last := 10.0;
Count:= 7;
Points:=10+1; //11 points for output
StepsFact:=1000000; //all steps inside function = 10*StepsFact

try
SetLength(InitConds, Count);
InitConds[0]:=0.0; //x0(0)=0
InitConds[1]:=0.0; //x1(0)=0
InitConds[2]:=0.0; //x2(0)=0
InitConds[3]:=0.0; //x3(0)=0
InitConds[4]:=0.0; //x4(0)=0
InitConds[5]:=0.0; //x5(0)=0
InitConds[6]:=0.0; //x6(0)=0

SetLength(tOut, Points);
SetLength(XOuts, Count, Points);
except
ShowMessage(‘Out of memory. ‘);
exit;
end;

Видео:Численные методы решения ДУ: метод Рунге-КуттаСкачать

Численные методы решения ДУ: метод Рунге-Кутта

Метод Рунге — Кутта второго порядка

Рассмотрим метод Рунге — Кутта второго порядка (метод Эйлера — Коши).

В этом методе величины ум вычисляются по следующим формулам (рис. 2.24):

Пример решения уравнения второго порядка методом рунге кутта

Пример решения уравнения второго порядка методом рунге кутта

Обозначим Пример решения уравнения второго порядка методом рунге кутта

Пример решения уравнения второго порядка методом рунге кутта

Рис. 2.24. Метод Эйлера — Коши

тогда Пример решения уравнения второго порядка методом рунге кутта

Геометрически это означает, что определяется направление интегральной кривой в исходной точке (х„ у,) и во вспомогательной точке (xi+l, у*+)), а в качестве окончательного выберем среднее из этих направлений.

Пример 2.59. Решить методом Эйлера дифференциальное уравнение y’=cosy + 3x методом Рунге — Кутта второго порядка (начальное условие у(0) = 1,3 на отрезке [0; 1]).

function f(x,y:real):real; begin

?ГЙе1п(‘Введите у, a, b, h’); readln(y,a,b,h); x:=a; repeat

y:=y+h*(f(x,y)+f(x+h,z))/2; x:=x+h; until x>b+0.1; readkey; end.

Видео:04 Метод Рунге-Кутты 4-го порядкаСкачать

04 Метод Рунге-Кутты 4-го порядка

Метод Рунге — Кутта 4-го порядка

В вычислительной практике наиболее часто используется метод Рунге — Кутта четвертого порядка. В этом методе величины ум вычисляются по следующим формулам:

Пример решения уравнения второго порядка методом рунге кутта

Пример 2.60. Пусть дано дифференциальное уравнение у’ = = у-х с начальным условием у(0) =1,5.

Найти с точностью s = 0,01 решение этого уравнения методом Рунге — Кутта при * = 1,5.

Весь отрезок интегрирования [0; 1,5] разобьем на шесть частей точками:

  • *0 = 0; *4=1;
  • *, = 0,25; *5=1,25;
  • *2 = 0,5; *6=1,5.
  • *3 = 0,75;

Из начальных условий имеем *0 = 0; у0 = 1,5.

Найдем первое приближение

Пример решения уравнения второго порядка методом рунге кутта

Используя формулы метода Рунге — Кутта, получаем Пример решения уравнения второго порядка методом рунге кутта

К = [(Уо + к ъ) — (Ло + Л)]А = 0,41.

Следовательно Ду0 = -(0,375 + 2 • 0,39 + 2 • 0,392 + 0,41) = 0,392.

Отсюда Пример решения уравнения второго порядка методом рунге кутта

Пример 2.61. Проинтегрировать дифференциальное уравнение Пример решения уравнения второго порядка методом рунге кутта

методом Рунге — Кутта на отрезке [0; 2] и выдать на печать значение функции в каждой двадцатой точке. В качестве шага интегрирования можно взять h = 0,005, в качестве начальных условий — у(0) = 1.

F(X,Y) — подпрограмма-функция (правая часть уравнения)

For I:=l TO N DO Begin X:=X+H;

Замечание. Метод Рунге—Кутта для решения дифференциального уравнения

Пример решения уравнения второго порядка методом рунге кутта

сводится к последовательному вычислению следующих равенств

Пример решения уравнения второго порядка методом рунге кутта

Пример 2.62. Решить дифференциальное уравнение

Пример решения уравнения второго порядка методом рунге кутта

у(0) = 1,3 на отрезке [0; 1] методом Рунге — Кутта 4-го порядка.

Program Runge; var kl,k2,k3,k4,x,y,a,b,h,d:real; function f(x,y:real):real; begin f:= cos(y)+3*x; end; begin

угке1п(‘Введите у, a, b, h’); readln(y,a,b,h);

k2:=f(x+h/2,y+h*kl/2); k3:=f(x+h/2,y+h*k2/2); k4:=f(x+h,y+h*k3); d:=(kl+2*k2+2*k3+k4)/6; y:=y+d; x:=x+h; until x>b+0.1; readln; end.

📹 Видео

Решение ОДУ методом Рунге КуттаСкачать

Решение ОДУ методом Рунге Кутта

4a. Методы Рунге-КуттаСкачать

4a. Методы Рунге-Кутта

Явный метод Рунге-Кутты второго порядка для решения задачи Коши. Контрольная работа МФТИСкачать

Явный метод Рунге-Кутты второго порядка для решения задачи Коши. Контрольная работа МФТИ

Решение ОДУ методом Рунге-Кутта 4 порядка (программа)Скачать

Решение ОДУ методом Рунге-Кутта 4 порядка (программа)

Решение ОДУ: метод Рунге КуттаСкачать

Решение ОДУ: метод Рунге Кутта

Численные методы. Лекция 10: метод Эйлера, методы Рунге-КуттыСкачать

Численные методы. Лекция 10: метод Эйлера, методы Рунге-Кутты

Метод Рунге Кутты 2 и 4 порядковСкачать

Метод Рунге Кутты 2 и 4 порядков

Лекция 5. Методы Рунге--Кутты. 11.03.2021Скачать

Лекция 5. Методы Рунге--Кутты. 11.03.2021

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

Метод простых итераций пример решения нелинейных уравнений

Метод Эйлера. Метод Рунге-Кутта. Классический метод Рунге-Кутта 4 порядка точности. Лекция №9Скачать

Метод Эйлера. Метод Рунге-Кутта. Классический метод Рунге-Кутта 4 порядка точности. Лекция №9

6.1 Численные методы решения задачи Коши для ОДУСкачать

6.1 Численные методы решения задачи Коши для ОДУ

Линейное неоднородное дифференциальное уравнение второго порядка с постоянными коэффициентамиСкачать

Линейное неоднородное дифференциальное уравнение второго порядка с постоянными коэффициентами

Решение ОДУ методом Рунге КуттаСкачать

Решение ОДУ методом Рунге Кутта
Поделиться или сохранить к себе: