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

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

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

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

где 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)

Ссылки

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

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

Комментарии

Скачала по Вашей ссылке русский вариант, изменила для своей системы диф. уравнений, но при запуске выдаёт ошибку :
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
< Private declarations >
public
< Public declarations >
end;
var
Form1: TForm1;
pn,k,ro,Pzv: Extended;

implementation
uses rk_method, Windows;

<$R *.dfm>
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;

Численное решение математических моделей объектов заданных системами дифференциальных уравнений

Введение:

При математическом моделировании ряда технических устройств используются системы дифференциальных нелинейных уравнений. Такие модели используются не только в технике, они находят применение в экономике, химии, биологии, медицине, управлении.

Исследование функционирования таких устройств требуют решения указанных систем уравнений. Поскольку основная часть таких уравнений являются нелинейными и нестационарными, часто невозможно получить их аналитическое решение.

Возникает необходимость использовать численные методы, наиболее известным из которых является метод Рунге — Кутты [1]. Что касается Python, то в публикациях по численным методам, например [2,3], данных по применение Рунге — Кутты крайне мало, а по его модификации — методу Рунге-Кутта-Фельберга вообще нет.

В настоящее время, благодаря простому интерфейсу, наибольшее распространение в Python имеет функцию odeint из модуля scipy.integrate. Вторая функция ode из этого модуля реализует несколько методов, в том числе и упомянутый пятиранговый метод Рунге-Кутта-Фельберга, но, вследствие универсальности, имеет ограниченное быстродействие.

Целью настоящей публикации является сравнительный анализ перечисленных средств численного решения систем дифференциальных уравнений с модифицированным автором под Python методом Рунге-Кутта-Фельберга. В публикации так же приведены решения по краевым задачам для систем дифференциальных уравнений (СДУ).

Краткие теоретические и фактические данные по рассматриваемым методам и программным средствам для численного решения СДУ

Для одного дифференциального уравнения n – го порядка, задача Коши состоит в нахождении функции, удовлетворяющей равенству:

и начальным условиям

Перед решением эта задача должна быть переписана в виде следующей СДУ

(1)

с начальными условиями

Модуль имеет две функции ode() и odeint(), предназначенные для решения систем обыкновенных дифференциальных уравнений (ОДУ) первого порядка с начальными условиями в одной точке (задача Коши). Функция ode() более универсальная, а функция odeint() (ODE integrator) имеет более простой интерфейс и хорошо решает большинство задач.

Функция odeint() имеет три обязательных аргумента и много опций. Она имеет следующий формат odeint(func, y0, t[,args=(), . ]) Аргумент func – это имя Python функции двух переменных, первой из которых является список y=[y1,y2. yn], а второй – имя независимой переменной.

Функция func должна возвращать список из n значений функций при заданном значении независимого аргумента t. Фактически функция func(y,t) реализует вычисление правых частей системы (1).

Второй аргумент y0 функции odeint() является массивом (или списком) начальных значений при t=t0.

Третий аргумент является массивом моментов времени, в которые вы хотите получить решение задачи. При этом первый элемент этого массива рассматривается как t0.

Функция odeint() возвращает массив размера len(t) x len(y0). Функция odeint() имеет много опций, управляющих ее работой. Опции rtol (относительная погрешность) и atol (абсолютная погрешность) определяют погрешность вычислений ei для каждого значения yi по формуле

Они могут быть векторами или скалярами. По умолчанию

Вторая функция модуля scipy.integrate, которая предназначена для решения дифференциальных уравнений и систем, называется ode(). Она создает объект ОДУ (тип scipy.integrate._ode.ode). Имея ссылку на такой объект, для решения дифференциальных уравнений следует использовать его методы. Аналогично функции odeint(), функция ode(func) предполагает приведение задачи к системе дифференциальных уравнений вида (1) и использовании ее функции правых частей.

Отличие только в том, что функция правых частей func(t,y) первым аргументом принимает независимую переменную, а вторым – список значений искомых функций. Например, следующая последовательность инструкций создает объект ODE, представляющий задачу Коши.

При построении численных алгоритмов будем считать, что решение этой дифференциальной задачи существует, оно единственно и обладает необходимыми свойствами гладкости.

При численном решении задачи Коши

(2)

(3)

по известному решению в точке t =0 необходимо найти из уравнения (3) решение при других t. При численном решении задачи (2),(3) будем использовать равномерную, для простоты, сетку по переменной t с шагом т > 0.

Приближенное решение задачи (2), (3) в точке обозначим . Метод сходится в точке если при . Метод имеет р-й порядок точности, если , р > 0 при . Простейшая разностная схема для приближенного решения задачи (2),(3) есть

(4)

При имеем явный метод и в этом случае разностная схема аппроксимирует уравнение (2) с первым порядком. Симметричная схема в (4) имеет второй порядок аппроксимации. Эта схема относится к классу неявных — для определения приближенного решения на новом слое необходимо решать нелинейную задачу.

Явные схемы второго и более высокого порядка аппроксимации удобно строить, ориентируясь на метод предиктор-корректор. На этапе предиктора (предсказания) используется явная схема

(5)

а на этапе корректора (уточнения) — схема

В одношаговых методах Рунге—Кутта идеи предиктора-корректора реализуются наиболее полно. Этот метод записывается в общем виде:

(6),

Формула (6) основана на s вычислениях функции f и называется s-стадийной. Если при имеем явный метод Рунге—Кутта. Если при j>1 и то определяется неявно из уравнения:

(7)

О таком методе Рунге—Кутта говорят как о диагонально-неявном. Параметры определяют вариант метода Рунге—Кутта. Используется следующее представление метода (таблица Бутчера)

Одним из наиболее распространенных является явный метод Рунге—Кутта четвертого порядка

(8)

Метод Рунге—Кутта— Фельберга

Привожу значение расчётных коэффициентов метода

(9)

С учётом(9) общее решение имеет вид:

(10)

Это решение обеспечивает пятый порядок точности, остаётся его адаптировать к Python.

Вычислительный эксперимент по определению абсолютной погрешности численного решения нелинейного дифференциального уравнения с использованием обеих функций def odein(),def oden() модуля scipy.integrate и адаптированного к Python методов Рунге—Кутта и Рунге—Кутта— Фельберга

Адаптированные к Python методы Рунге—Кутта и Рунге—Кутта— Фельберга имеют меньшую абсолютную, чем решение с применением функции odeint, но большую, чем с использованием функции edu. Необходимо провести исследование быстродействия.

Численный эксперимент по сравнению быстродействия численного решения СДУ при использовании функции ode с атрибутом dopri5 (метод Рунге – Кутты 5 порядка) и с использованием адаптированного к Python метода Рунге—Кутта— Фельберга

Сравнительный анализ проведём на примере модельной задачи, приведенной в [2]. Чтобы не повторять источник, приведу постановку и решение модельной задачи из [2].

Решим задачу Коши, описывающую движение тела, брошенного с начальной скоростью v0 под углом α к горизонту в предположении, что сопротивление воздуха пропорционально квадрату скорости. В векторной форме уравнение движения имеет вид

где – радиус вектор движущегося тела, – вектор скорости тела, – коэффициент сопротивления, вектор силы веса тела массы m, g – ускорение свободного падения.

Особенность этой задачи состоит в том, что движение заканчивается в заранее неизвестный момент времени, когда тело падает на землю. Если обозначить , то в координатной форме мы имеем систему уравнений:

К системе следует добавить начальные условия: (h начальная высота), . Положим . Тогда соответствующая система ОДУ 1 – го порядка примет вид:

Для модельной задачи положим . Опуская довольно обширное описание программы, приведу только листинг из комментариев к которому, думаю, будет ясен принцип её работы. В программу добавлен отсчёт времени работы для сравнительного анализа.

Flight time = 1.2316 Distance = 5.9829 Height =1.8542
Flight time = 1.1016 Distance = 4.3830 Height =1.5088
Flight time = 1.0197 Distance = 3.5265 Height =1.2912
Flight time = 0.9068 Distance = 2.5842 Height =1.0240
Время на модельную задачу: 0.454787

Для реализации средствами Python численного решения СДУ без использования специальных модулей, мною была предложена и исследована следующая функция:

def increment(f, t, y, tau
k1=tau*f(t,y)
k2=tau*f(t+(1/4)*tau,y+(1/4)*k1)
k3 =tau *f(t+(3/8)*tau,y+(3/32)*k1+(9/32)*k2)
k4=tau*f(t+(12/13)*tau,y+(1932/2197)*k1-(7200/2197)*k2+(7296/2197)*k3)
k5=tau*f(t+tau,y+(439/216)*k1-8*k2+(3680/513)*k3 -(845/4104)*k4)
k6=tau*f(t+(1/2)*tau,y-(8/27)*k1+2*k2-(3544/2565)*k3 +(1859/4104)*k4-(11/40)*k5)
return (16/135)*k1+(6656/12825)*k3+(28561/56430)*k4-(9/50)*k5+(2/55)*k6

Функция increment(f, t, y, tau) обеспечивает пятый порядок численного метода решения. Остальные особенности программы можно посмотреть в следующем листинге:

Время на модельную задачу: 0.259927

Предложенная программная реализация модельной задачи без использования специальных модулей имеет почти в двое большее быстродействие, чем с функцией ode, однако нельзя забывать, что ode имеет более высокую точность численного решения и возможности выбора метода решения.

Решение краевой задачи с поточно разделёнными краевыми условиями

Приведем пример некоторой конкретной краевой задачи с поточно разделенными краевыми условиями:

(11)

Для решения задачи (11) используем следующий алгоритм:

1. Решаем первые три неоднородные уравнения системы (11) с начальными условиями

Введем обозначение для решения задачи Коши:

2. Решаем первые три однородные уравнения системы (11) с начальными условиями

Введем обозначение для решения задачи Коши:

3. Решаем первые три однородные уравнения системы (11) с начальными условиями

Введем обозначение для решения задачи Коши:

4. Общее решение краевой задачи (11) при помощи решений задач Коши записывается в виде линейной комбинации решений:

где p2, p3 — некоторые неизвестные параметры.

5. Для определения параметров p2, p3, используем краевые условия последних двух уравнений (11), то есть условия при x = b. Подставляя, получим систему линейных уравнений относительно неизвестных p2, p3:
(12)
Решая (12), получим соотношения для p2, p3.

По приведенному алгоритму с применением метода Рунге—Кутта—Фельберга получим следующую программу:

y0[0]= 0.0
y1[0]= 1.0
y2[0]= 0.7156448588231397
y3[0]= 1.324566562303714
y0[N-1]= 0.9900000000000007
y1[N-1]= 0.1747719838716767
y2[N-1]= 0.8
y3[N-1]= 0.5000000000000001
Время на модельную задачу: 0.070878

Вывод

Разработанная мною программа отличается от приведенной в [3] меньшей погрешностью, что подтверждает приведенный в начале статьи сравнительный анализ функции odeint с реализованным на Python метода Рунге—Кутта—Фельберга.

3. Н.М. Полякова, Е.В. Ширяева Python 3. Создание графического интерфейса пользователя (на примере решения методом пристрелки краевой задачи для линейных обыкновенных дифференциальных уравнений). Ростов-на-Дону 2017.

Дифференциальные уравнения первого порядка. Понятие о методе Рунге—Кутта

Содержание:

\

По этой ссылке вы найдёте полный курс лекций по математике:

Обыкновенным дифференциальным уравнением называется уравнение вида связывающее независимую переменную х, искомую функцию у = у(х) и ее производные у'(х),у»(х)>. у(п)(ж) (наличие хотя бы одной производной обязательно). Здесь — заданная функция своих аргументов. Замечание. Обозначения зависимой и независимой переменных через х и у, используемые в приведенном определении, не являются жесткими; часто в качестве независимой удобно брать переменную t, иными буквами обозначают и зависимую переменную (см. ниже пример 2).

В обыкновенном дифференциальном уравнении искомая функция у = у(х) есть функция одной независимой переменной х. Если искомая функция есть функция двух (и более) независимых переменных, то имеем дифференциальное уравнение с частными производными. В этой и двух следующих главах мы будем рассматривать только обыкновенные дифференциальные уравнения.

Простейшим дифференциальным уравнением является уравнение вида ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ ПЕРВОГО ПОРЯДКА Эквивалентные дифференциальные уравнения Задача Коши еорема существования и единственности решения задачи Коши для уравнения Приближенные методы интегрирования уравнения Метод последовательных приближений Численные методы решения задачи Коши Метод Эйлера Понятие о методе Рунге—Кутта где f(x) — известная непрерывная на некотором интервале (а, 6) функция, а у = у(х) — искомая функция.

С таким уравнением мы уже встречались в интегральном исчислении, когда поданной функции f(x) требовалось найти ее первообразную F(x). Как известно, всякая функция, удовлетворяющая уравнению (2), имеет вид где F(x) — какая-нибудь первообразная для функции /(ж) на интервале (а, 6), а С — произвольная постоянная. Таким образом, искомая функция у = у(х) определяется из уравнения (2) неоднозначно. Порядком дифференциального уравнения называется порядок наивысшей производной, входящей в уравнение.

Например, — дифференциальное уравнение 1-го порядка; дифференциальное уравнение 2-го порядка; — дифференциальное уравнение пятого порядка. Решением дифференциального уравнения n-го порядка на интервале (а, Ь) называется всякая функция у = (р(х), имеющая на этом интервале производные до n-го порядка включительно и такая, что подстановка функции у = tp(x) и ее производных в дифференциальное уравнение обращает последнее в тождество по х на интервале (а, Ь).

Например, функция у = sin х является решением дифференциального уравнения второго порядка на интервале (-оо, +оо). В самом деле, . Подставив в данное уравнение найденные значения у и у», получим — Задача. Найти совпадающие решения двух дифференциальных уравнений (не решая самих уравнений): График решения дифференциального уравнения называется интегральной кривой этого уравнения. Процесс нахождения решения дифференциального уравнения называется интегрированием дифференциального уравнения.

К составлению и интегрированию дифференциальных уравнений приводят многочисленные задачи как самой математики, так и других наук (физики, химии, биологии и т. п.). Пример 1. Найти такую кривую, чтобы тангенс угла наклона касательной в каждой ее точке численно равнялся ординате точки касания. Пусть — уравнение искомой кривой.

Как известно, , значит, определяющее свойство кривой есть — дифференциальное уравнение первого порядка.

Нетрудно видеть, что функция _ть решение этого уравнения. Оно также имеет очевидное решение у = 0. Кроме того, решениями оудут функции где С — произвольная постоянная, так что уравнение имеет бесконечное множество решений. ^ Пример 2. Найти закон прямолинейного движения материальной точки, движущейся с постоянным ускорением а.

А Требуется найти формулу з = s(t). выражающую пройденный путь как функцию времени. По условию имеем — дифференциальное уравнение второго порядка. Последовательно находим: Произвольные постоянные можно определить, если положить В самом деле, полагая первом из соотношений (*). получаем , откуда — Из второго соотношения (*) при t = tq имеем откуда Подставляя найденные значения С\ и С? в выражение для функции *(f). приходим к известному закону движения материальной точки с постоянным ускорением: § 2. Эквивалентные дифференциальные уравнения.

Задача Коши Пусть имеем дифференциальное уравнение первого порядка Если в этом уравнении удается выразить производную у’ через х и у, то получаем уравнение разрешенное относительно производной. Здесь / — заданная функция своих аргументов. Наряду с уравнением (1) рассматривают эквивалентное ему дифференциальное уравнение или уравнение более общего вида получаемое из (Г) путем умножения на некоторую функцию известные функции своих аргументов).

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

Впрочем, дифференциальное уравнение имеет только одно решение а уравнение Чтобы выделить определенное решение уравнения (1), надо задать начальное условие, которое заключается в том, что при некотором значении независимой переменной х заранее дано значение уо искомой функции у(х): Геометрически это означает, что задается точка Мо(х0, уо), через которую должна проходить искомая интегральная кривая.

Возможно вам будут полезны данные страницы:

Задачу отыскания решения у(х) уравнения (1), удовлетворяющего начальному условию (2), называют задачей Коши (начальной задачей) для уравнения (1). §3. Теорема существования и единственности решения задачи Коши для уравнения Теорема 1 (существования и единственности решения). Пусть имеем дифференциальное уравнение и пусть функция f(x, у) определена в некоторой области D на плоскости хОу. Выберем произвольную точку Мо(хо,уо) € D.

Если существует окрестность Q этой

точки, в которой функция 1) непрерывна по совокупности аргументов; 2) имеет ограниченную частную производную ^, то найдется интервал оси Ох, на котором существует, и притом единственная, функция у = , являющаяся решением уравнения(1) и принимающая при х = жо значение уо (рис. Геометрически это означает, что через точку ) проходит одна и только одна интегральная кривая уравнения (1). Теорема 1 имеет локальный характер: она гарантирует существование единственного решения у = tp(x) уравнения (1) лишь в достаточно малой окрестности точки х0-

Из теоремы 1 вытекает, что уравнение (1) имеет бесконечное множество различных решений (например, одно решение, график которого проходит через точку (жо, г/о); другое решение, когда график проходит через точку Пример 1. В уравнении функция определена и непрерывна во всех точках плоскости хОу и имеет всюду щ = 1. В силу теоремы 1 через каждую точку (xq, уо) плоскости хОу проходит единственная интегральная кривая этого уравнения. Пример 2.

В уравнении функция определена и непрерывна на всей плоскости хОу. Здесь так что второе условие теоремы 1 нарушается в точках оси Ох. Нетрудно проверить, что функция где С — любая постоянная, является решением данного уравнения. Кроме того, уравнение имеет очевидное решение Если искать решения этого уравнения, соответствующие условию у(0) = 0, то таких решений найдется бесчисленное множество, в частности, следующие (рис. 2): Таким образом, через каждую точку оси Ох проходят по крайней мере две интегральные кривые и, следовательно, в точках Этой оси нарушается единственность.

Если взять точку Л/|(1, 1), то в достаточно малой ее окрестности выполнены все условия теоремы 1. Следовательно, через данную точку в малом квадрате П проходит единственная интегральная кривая ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ ПЕРВОГО ПОРЯДКА Эквивалентные дифференциальные уравнения Задача Коши еорема существования и единственности решения задачи Коши для уравнения Приближенные методы интегрирования уравнения Метод последовательных приближений Численные методы решения задачи Коши Метод Эйлера Понятие о методе Рунге—Кутта уравнения у’ = 3у >.

Если квадрат Q взять достаточно большим (подумайте, каким), то в нем единственность решения уже не будет иметь места. Это подтверждает локальный характер теоремы 1. Теорема 1 дает достаточные условия существования единственного решения уравнения у’ = . Это означает, что может существовать единственное решение у = у(х) уравнения у’ = f(x> у)* удовлетворяющее условию у\х=го = у0, хотя в точке (жо> уо) не выполняются условия 1) или 2) теоремы или оба вместе.

Пример 3:

Для уравнения имеем В точках оси Ох функции / и разрывны, причем Но через каждую точку (хо, 0) оси Ох проходит единственная интегральная кривая Замечание. Если отказаться от ограниченности , то получается следующая теорема существования решения. Теорема 2. Если функция f(x, у) непрерывна в некоторой окрестности точки (х0, уо), то уравнение имеет в этой окрестности по крайней мере одно решение , принимающее при х = х0 значение уо.

Теорема существом*и« и единственности решение задачи Кошм для уравнения Задача. Найти интегральную кривую уравнения проходящую через точку . Задача. Найти решение задачи Коши Определение 1. Общим решением дифференциального уравнения в некоторой области Q существования и единственности решения задачи Коши называется однопараметрическое семейство S функций у = ip(x, С), зависящих от переменной ж и одной произвольной постоянной С (параметра), такое, что 1) при любом допустимом значении постоянной С функция является решением уравнения (1): 2) каково бы ни было начальное условие .

Можно подобрать такое значение Со постоянной С, что решение у = Со) будет удовлетворять начальному условию При этом предполагается, что точка (жо, уо) принадлежит области П существования и единственности решения задачи Коши. Пример 4. Показать, что общим решением дифференциального уравнения является функция где С — произвольная постоянная. 4 В данном случае /, и условия теоремы 1 выполняются всюду. Следовательно, через каждую точку (zo, уо) плоскости хОу проходит единственная интегральная кривая данного уравнения. Проверим, что функция удовлетворяет условиям 1) и 2), содержащимся в определении общего решения.

Действительно, при любом С имеем так что у = х + С есть решение данного уравнения. Потребовав, чтобы при х = хо решение принимало значение уо, приходим к соотношению уо = х0 + Со, откуда Решение . или удовлетворяет поставленному начальному условию. Частным решением дифференциального уравнения (1) называется решение, получаемое из общего при каком-либо конкретном значении произвольной постоянной С (включая ±оо).

Таким образом, общее решение этого дифференциального уравнения можно определить как множество всех частных решений уравнения. В процессе интегрирования дифференциального уравнения мы часто приходим к уравнению неявно задающему общее решение уравнения. Уравнение (2) называют общим интегралом дифференциального уравнения (\). Уравнение где Со — некоторое конкретное значение постоянной С, называется частным интегралом. Замечание.

Название происходит от того, что для простейшего дифференциального уравнения вида его общее решение действительно записывается при помощи обычного неопределенного интеграла Пример. Общий интеграл уравнения имеет следующий вид или В дальнейшем для краткости мы будем иногда говорить, что решение уравнения проходит через некоторую точку Mq(xq, уо), если точка М0 лежит на графике этого решения.

Определение 2:

Решение дифференциального уравнения (1) называется особым, если в каждой его точке нарушается свойство единственности, т. е. если через каждую его точку (so, уо) кроме этого решения проходит и другое решение уравнения (1), не совпадающее в сколь угодно малой окрестности точки График особого решения называют особой интегральной кривой уравнения. Геометрически это — огибающая семейства интегральных кривых дифференциального уравнения, определяемых его общим интегралом1*.

Если для дифференциального уравнения (1) в некоторой области D на плоскости хОу выполнены условия теоремы 1, то через каждую точку (хо, уо) € D проходит единственная интегральная кривая уравнения. Эта кривая входит в однопа-раметрическое семейство кривых образующих общий интеграл уравнения (1), и получается из этого семейства при конкретном значении параметра С, т.е. является частным интегралом уравнения (1). Никаких других решений, проходящих через точку (жо> 2/о)> здесь быть не может.

Следовательно, для существования особого решения у уравнения (1) необходимо, чтобы не выполнялись условия теоремы 1. В частности, если правая часть уравнения (1) непрерывна в рассматриваемой области D, то особые решения могут проходить только через те точки, где производная Ц становится бесконечной. Напомним, что огибающей семейства кривых Ф(х, у, С) = 0 называется такая кривая, которая в каждой своей точке касается некоторой кривой семейства и каждого отрезка которой касается бесконечное множество кривых из этого семейства.

Например, для уравнения ) функция / = Зу2/3 непрерывна всюду, но производная Ц обращается в бесконечность при у = 0. т.е. на оси Ох плоскости хОу. Уравнение (3) имеет общее решение — семейство кубических парабол — и очевидное решение проходящее через те точки, где производная ^ не ограничена. Решение у = 0 — особое, так как через каждую его точку проходит и кубическая парабола, и сама эта прямая у = 0 (см. рис. 2).

Таким образом, в каждой точке решения у = 0 нарушается свойство единственности. Особое решение у = 0 не получается из решения у = (х +С)3 ни при каком числовом значении параметра С (включая ±оо). Из теоремы 1 можно вывести только необходимые условия для особого решения. Множество тех точек, где производная не ограничена, если оно является кривой, может и не быть особым решением уже потому, что эта кривая, вообще говоря, не является интегральной кривой уравнения (1).

Если, например, вместо уравнения (3) взять уравнение то в точках прямой у = 0 по-прежнему нарушается условие ограниченности производной ^, но эта прямая, очевидно, не является интегральной кривой уравнения (4). Итак, чтобы найти особые решения уравнения (1), надо 1) найти множество точек, где производная ^ обращается в бесконечность; 2) если это множество точек образует одну или несколько кривых, проверить, являются ли они интегральными кривыми уравнения (1);

3) если это интегральные кривые, проверить, нарушается ли в каждой их точке свойство единственности. При выполнении всех этих условий найденная кривая представляет собой особое решение уравнения (1). Задача. Найти особые решения уравнения Сделать рисунок. §4. Приближенные методы интегрирования уравнения 4.1. Метод изоклин Пусть имеем дифференциальное уравнение где функция /(ж, у) в некоторой области D на плоскости хОу удовлетворяет условиям теоремы I.

Это уравнение определяет в каждой точке (ж, у) области D значение у’, т. е. угловой коэффициент касательной к интегральной кривой в этой точке. Говорят, что уравнение (1) определяет в области D поле направлений. Чтобы его построить, надо в каждой точке (ж0, уо) € D представить с помощью некоторого отрезка направление касательной к интегральной кривой в этой точке, определяемое значением /(жо, уо). Совокупность этих отрезков дает геометрическую картину поля направлений.

Задача интегрирования дифференциального уравнения (1) может быть теперь сформулирована так: найти такую кривую, чтобы касательная к ней в каждой точке имела направление, совпадающее с направлением поля в этой точке. Такое истолкование дифференциального уравнения и его интегрирования дает графический способ решения уравнения. Для построения интегральных кривых пользуются изоклинами. Изоклиной называется множество всех точек плоскости хОу, в которых касательные к искомым интегральным кривым имеют одно и то же направление (у’ = const).

Из этого определения следует, что семейство изоклин дифференциального уравнения (1) задается уравнением где к — числовой параметр. Если придать параметру к близкие числовые значения, можно найти достаточно густую сеть изоклин и приближенно построить интегральные кривые дифференциального уравнения. Пример 1. Проинтегрировать уравнение по способу изоклин. Семейство изоклин данного уравнения определяется уравнением ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ ПЕРВОГО ПОРЯДКА Эквивалентные дифференциальные уравнения Задача Коши еорема существования и единственности решения задачи Коши для уравнения Приближенные методы интегрирования уравнения.

Метод последовательных приближений Численные методы решения задачи Коши Метод Эйлера Понятие о методе Рунге—Кутта Полагая , получаем изоклины , по которым строим интегральные кривые уравнения (рис. 4). Нулевая изоклина определяет множество возможных точек экстремума интегральных кривых (прямая х = О в примере 1).

Для большей точности построения интегральных кривых определяют направление вогнутости и точки перегиба этих кривых (если такие точки существуют). Для этого находят у» в силу уравнения (1): Знак правой части определяет знак у», т.е. направление вогнутости интегральных кривых. Линия, заданная уравнением есть множество всех возможных точек перегиба интегральных кривых. В примере 1 имеем поэтому все интегральные кривые обращены вогнутостью вверх, и точек перегиба интегральных кривых нет.

Метод последовательных приближений

Пусть имеем дифференциальное уравнение где функция f(x, у) в некоторой области D изменения х, у удовлетворяет условиям теоремы 1, и пусть точка (хо, уо) € D. Решение задачи Коши равносильно решению некоторого интегрального уравнения, т. е. уравнения, в которое неизвестная функция входит под знаком интеграла. В самом деле, пусть — решение уравнения (2), заданное в некоторой окрестности точки х0 и удовлетворяющее начальному условию (3).

Тогда при имеет место тождество Проинтегрируем это тождество по х Отсюда учитывая (3), получаем так что решение y(x) задачи Коши удовлетворяет интегральному уравнению (4) Обратно: если непрерывная функция , удовлегворяет интегральному уравнению (4), то, как легко проверить, у(х) является решением задачи Коши (2)-(3). Решение интегрального уравнения (4) для всех х, достаточно близких к хо» может быть построено методом последовательных приближений по формуле причем в качестве (po(t) можно взять любую непрерывную на отрезке функцию, в частности, ( Прммер 2.

Методом последовательных приближений решить задачу Коши Сводим данную задачу к интегральному уравнению Выбирая за нулевое приближение функцию последовательно находим: Легко видеть, что функция у = ех есть решение задачи. 4.3. Численные методы решения задачи Коши Метод Эйлера Пусть требуется найти приближенное решение дифференциального уравнения удовлетворяющее начальному условию.

Будем предполагать, что в некотором прямоугольнике функция f(x, у) непрерывна и имеет непрерывные частные производные достаточно высокого порядка по всем аргументам, так что решение задачи Коши (1)-(2) существует, единственно и является функцией, дифференцируемой достаточное число раз. Численное решение задачи состоит в построении таблицы приближенных значений , уп решения задачи в точках Чаще всего выбирают . Точки хк называют узлами сетки, а величину — шагом сетки.

Геометрически искомая интегральная кривая у = у(х), проходящая через точку заменяется ломаной Эйлера MqM\Mi . с вершинами в точках Метод Эйлера относится к группе одно-шаговых методов, в которых для вычисления точки требуется знание только предыдущей вычисленной точки . Для оценки погрешности метода на одном шаге сетки разложим точное решение в окрестности узла х = Хк по формуле Тейлора Сравнение формул () показывает, что они совпадают до членов первого порядка по h включительно, а погрешность формулы (4) равна 0(h2). Поэтому говорят, что метод Эйлера имеет первый порядок.

Пример. Методом Эйлера решить задачу Коши на отрезке с шагом В данном случае . Пользуясь формулой последовательно находим Результаты вычислений сведем в таблицу Точное решение Замечание. Если рассмотреть задачу Коши на любом отрезке с любым шагом , то получим и т.д., так что в этом случае ломаная Эйлера «распрямляется» и совпадает с прямой точным решением поставленной задачи Коши. Понятие о методе Рунге—Купа Метод Эйлера весьма прост, но имеет низкую точность.

Точность решения можно повысить путем усложнения разностной схемы. Весьма распространенными на практике являются схемы Рунге—Кутта. Пусть опять требуется решитьзадачу Коши . Будем строить таблицу приближенных значенийу решения уравнения вточках(узлах сетки). Рассмотрим схему равноотстоящих узлов — шаг сетки. В методе Рунге—Кутта величины yi+\ вычисляются по следующей схеме

Присылайте задания в любое время дня и ночи в ➔

Официальный сайт Брильёновой Натальи Валерьевны преподавателя кафедры информатики и электроники Екатеринбургского государственного института.

Все авторские права на размещённые материалы сохранены за правообладателями этих материалов. Любое коммерческое и/или иное использование кроме предварительного ознакомления материалов сайта natalibrilenova.ru запрещено. Публикация и распространение размещённых материалов не преследует за собой коммерческой и/или любой другой выгоды.

Сайт предназначен для облегчения образовательного путешествия студентам очникам и заочникам по вопросам обучения . Наталья Брильёнова не предлагает и не оказывает товары и услуги.


источники:

http://habr.com/ru/post/418139/

http://natalibrilenova.ru/differentsialnyie-uravneniya-pervogo-poryadka-ponyatie-o-metode-runge-kutta-/