Лабораторная работа решение дифференциальных уравнений

Лабораторная работа № 8. Аналитическое и численное решение дифференциальных уравнений

Лабораторная работа № 8

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

§1. Аналитическое решение дифференциальных уравнений

Общее решение дифференциальных уравнений.

Для нахождения аналитических решений дифференциальных уравнений в Maple применяется команда dsolve(eq, var, options), где eq – дифференциальное уравнение, var – неизвестные функции, options – параметры. Параметры могут указывать метод решения задачи, например, по умолчанию ищется аналитическое решение: type=exact. При составлении дифференциальных уравнений для обозначения производной применяется команда diff, например, дифференциальное уравнение y»+y=x записывается в виде: diff(y(x),x$2)+y(x)=x.

Общее решение дифференциального уравнения зависит от произвольных постоянных, число которых равно порядку дифференциального уравнения. В Maple такие постоянные, как правило, обозначаются как _С1, _С2, и т. д.

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

Команда dsolve выдает решение дифференциального уравнения в невычисляемом формате. Для того, чтобы с решением можно было бы работать далее (например, построить график решения) следует отделить правую часть полученного решения командой rhs(%).

1. Найти общее решение дифференциального уравнения y’+ycosx=sinxcosx.

de:=

1

Итак, решение искомого уравнения есть функция 1.

Замечание: при записи решения диффреренциального уравнения в Maple в строке вывода произвольная постоянная обозначена как _С1.

Найти общее решение дифференциального уравнения второго порядка y»-2y’+y=sinx+e-x.

deq:=

Замечание: так как исходное уравнение было второго порядка, то полученное решение содержит две произвольные константы, которые в Maple обычно обознаются как _С1 и _С2. Первые два слагаемых представляют собой общее решение соответствующего однородного дифференциального уравнения, а вторые два – частное решение неоднородного дифференциального уравнения.

3. Найти общее решение дифференциального уравнения порядка y»+k2y=sin(qx) в двух случаях: q¹k и q=k (резонанс).

de:=

Теперь найдем решение в случае резонанса. Для этого перед вызовом команды dsolve следует приравнять q=k.

Замечание: в обоих случаях частное решение неоднородного уравнения и общее решение, содержащее произвольные постоянные, выводятся отдельными слагаемыми.

Фундаментальная (базисная) система решений.

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

Найти фундаментальную систему решений дифференциального уравнения: y(4)+2y»+y=0.

de:=

> dsolve(de, y(x), output=basis);

Решение задачи Коши или краевой задачи.

Команда dsolve может найти решение задачи Коши или краевой задачи, если помимо дифференциального уравнения задать начальные или краевые условия для неизвестной функции. Для обозначения производных в начальных или краевых условиях используется дифференциальный оператор , например, условие y»(0)=2 следует записать в виде , или условие y'(1)=0: . Напомним, что производная n-го порядка записывается в виде .

1. Найти решение задачи Коши: y(4)+y»=2cosx, y(0)=-2, y'(0)=1, y»(0)=0, y»'(0)=0.

2. Найти решение краевой задачи: , , . Построить график решения.

de:=

Замечание: для построения графика решения предварительно следует отделить правую часть полученного выражения.

Системы дифференциальных уравнений.

Команда dsolve может найти решение системы дифференциальных уравнений (или задачи Коши), если в ней указать: dsolve(,), где sys — система дифференциальных уравнений, x(t),y(t),… — набор неизвестных функций.

Найти решение системы дифференциальных уравнений:

Найдены две функции x(t) и y(t), которые зависят от двух произвольных постоянных _С1 и _С2.

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

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

Чтобы найти приближенное решение дифференциального уравнения в виде степенного ряда, в команде dsolve следует после переменных указать параметр type=series (или просто series). Для того, чтобы указать порядок разложения n, т. е. порядок степени, до которой производить разложение, следует перед командой dsolve вставить определение порядка с помощью команды Order:=n.

Если ищется общее решение дифференциального уравнения в виде разложения в степенной ряд, то коэффициенты при степенях х найденного разложения будут содержать неизвестные значения функции в нуле y(0) и ее производных D(y)(0), (D@@2)(y)(0) и т. д. Полученное в строке вывода выражение будет иметь вид, похожий на разложение искомого решения в ряд Маклорена, но с другими коэффициентами при степенях х. Для выделения частного решения следует задать начальные условия y(0)=у1, D(y)(0)=у2, (D@@2)(y)(0)=у3 и т. д., причем количество этих начальных условий должно совпадать с порядком соответствующего дифференциального уравнения.

Разложение в степенной ряд имеет тип series, поэтому для дальнейшей работы с этим рядом его следует преобразовать в полином с помощью команды convert(%,polynom), а затем выделить правую часть полученного выражения командой rhs(%).

1. Найти решение задачи Коши: , в виде степенного ряда с точностью до 5-го порядка.

y(0)=0>, y(x), type=series);

В полученном решении слагаемое означает, что точность разложения была до 5-го порядка.

2. Найти общее решение дифференциального уравнения y»(х)-y3(х)=е-хcosx, в виде разложения в степенной ряд до 4-го порядка. Найти разложение при начальных условиях: y(0)=1, y'(0)=0.

> restart; Order:=4: de:=diff(y(x),x$2)-

Замечание: в полученном разложении запись D(y)(0) обозначает производную в нуле: y'(0). Для нахождения частого решения осталось задать начальные условия:

3. Найти приближенное решение в виде степенного ряда до 6-го порядка и точное решение задачи Коши: , , , . Построить на одном рисунке графики точного и приближенного решений.

de:=

y(x)=

y(x)=

Замечание: тип решения дифференциального уравнения в виде ряда есть series, поэтому для дальнейшего использования такого решения (вычислений или построения графика) его обязательно следует конвертировать в полином с помощью команды convert

На этом рисунке видно, что наилучшее приближение точного решения степенным рядом достигается примерно на интервале -1 restart; Ordev=6:

Замечание: в строке вывода появляется сообщение о том, что при решении использован метод rkf45. Во избежание вывода строк, не несущих полезной информации, рекомендуется отделять промежуточные команды двоеточием. Если необходимо получить значение решения при каком-то фиксированном значении переменной х (заодно будет выведено значение производной решения в этой точке), например, при х=0.5, то следует набрать:

Теперь найдем приближенное решение задачи Коши в виде степенного ряда и построим графики численного решения и полученного степенного ряда в интервале их наилучшего совпадения.

> p1:=odeplot(de,[x, y(x)],-2..3, thickness=2,

Наилучшее приближение решения степенным рядом достигается примерно на интервале -1 restart; cond:=x(0)=1,y(0)=2:

> p1:=odeplot(F,[t, x(t)],-3..7, color=black,

Пакет графического представления решений дифференциальных уравнений Detools.

Для численного решения задачи Коши, построения графиков решения и фазовых портретов в Maple имеется специальный пакет DEtools.

Команда DEplot из пакета DEtools строит численными методами графики решения или фазовые портреты. Эта команда аналогична команде odeplot, но более функциональна. Она, в отличие от odeplot, сама производит численное решение дифференциального уравнения. Основные параметры DEplot похожи на параметры odeplot: DEplot(de, vars, range, x=х1..х2, y=у1..у2, cond, ptions), где de — дифференциальное уравнение или система дифференциальных уравнений; vars – список неизвестных функций; range – диапазон измерения независимой переменной; cond – начальные условия; x=х1..х2 и y=у1..у2 – диапазоны изменения функций; options – дополнительные параметры.

Наиболее часто используемые параметры: linecolor=цвет линии; scene=[x, y] — определяет, какие зависимости выводить на график; iterations=число итераций, необходимое для повышения точности вычислений (по умолчанию это число равно 1); stepsize=число, равное расстоянию между точками на графике, по умолчанию оно равно (x2-x1)/20, этот параметр необходим для вывода более гладкой кривой решения; obsrange=true/false — прерывать или нет вычисления, если график решения выходит за установленный для рисования интервал.

Для решения дифференциального уравнения n-ого порядка начальные условия можно задавать в более компактной форме: [x0, y0, y’0, y»0,…], где x0 — точка, в которой задаются начальные условия, y0 — значение искомой функции в точке x0, y’0, y»0,… — значения производных первой, второй и т. д. до (n-1)-ого порядка.

Нарисовать график решения дифференциального уравнения:

, , , в интервале .

(D@@2)(y)(0)=1]], stepsize=.1, linecolor=black,

Построение фазовых портретов систем дифференциальных уравнений.

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

С помощью команды DEplot можно построить фазовый портрет в плоскости (x, y), для системы двух дифференциальных уравнений: , если в параметрах данной команды указать scene=[x, y].

Если система дифференциальных уравнений является автономной, то на фазовом портрете будет построено поле направлений в виде стрелок. Размер стрелок регулируется параметром arrows=SMALL, MEDIUM, LARGE, LINE или NONE.

Для того, чтобы нарисовать весь фазовый портрет, необходимо для каждой фазовой траектории указывать начальные условия: например, для системы двух дифференциальных уравнений первого порядка несколько начальных условий в команде DEplots указываются после задания диапазона изменения независимой переменной t: [[x(0)=x1, y(0)=y1], [x(0)=x2, y(0)=y2],…, [x(0)=xn, y(0)=yn]].

Начальные условия можно задавать в более компактной форме: [t0, x0, y0], где t0 — точка, в которой задаются начальные условия, x0 и y0 — значения искомых функций в точке t0.

Фазовый протрет системы двух дифференциальных уравнений первого порядка можно также построить с помощью команды phaseportrait(sys, [x, y],x1..x2,[[cond]]), где sys — система двух дифференциальных уравнений первого порядка, [x, y] — имена искомых функций, x1..x2 — интервал, на котором следует построить фазовый портрет, а в фигурных скобках указываются начальные условия. Эта команда находится в пакете DEtools, поэтому данный пакет должен быть предварительно загружен.

1. Построить фазовый портрет системы дифференциальных уравнений:

для нескольких наборов начальных условий: х(0)=1, у(0)=0.2; х(0)=0, у(0)=1; х(0)=1, у(0)=0.4; х(0)=1, у(0)=0.75; х(0)=0, у(0)=1.5; х(0)=-0.1, у(0)=0.7.

stepsize=0.1, arrows=none, linecolor=black);

2. Построить фазовый портрет с полем направлений автономной системы

для различных начальных условий х(0)=1, у(0)=0; х(0)=-1, у(0)=0; х(0)=p, у(0)=1; х(0)=-p, у(0)=1; х(0)=3p, у(0)=0.2; х(0)=3p, у(0)=1; х(0)=3p, у(0)=1.8; х(0)=-2p, у(0)=1;.

3. Построить фазовый портрет системы дифференциальных уравнений:

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

stepsize=.1, colour=blue, linecolor=black);

1. Найти общее решение дифференциального уравнения:

2. Найти фундаментальную систему решений дифференциального уравнения:

3. Найти решение задачи Коши: , , ,

4. Найти решение системы дифференциальных уравнений:

при начальных условиях х(0)=1, х'(0)=0; у(0)=1.

5. Найти решение нелинейного уравнения при начальных условиях у(0)=2а, у'(0)=а в виде разложения в степенной ряд до 6-го порядка.

6. Построить график численного решения задачи Коши у’=sin(xy), у(0)=1.

7. Решить численно задачу Коши: , , . Найти приближенное решение этого уравнения в виде разложения в степенной ряд. Построить на одном рисунке графики полученных решений.

8. Построить график численного решения задачи Коши у»-xу’+ xу=0, у(0)=1, у'(0)=-4 на интервале [-1.5; 3], используя команду DEplot.

9. Построить фазовый портрет системы дифференциальных уравнений

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

Лабораторная работа решение дифференциальных уравнений

Добро пожаловать!

Теперь вы можете поделиться своей работой!

Просто нажмите на значок

ФЭА / АИТ / Лабораторная работа «Численное решение дифференциальных уравнений. Метод Рунге-Кутта» по дисциплине «Оптимизация и оптимальные управления» Вариант №4

«Численное решение дифференциальных уравнений.

по дисциплине «Оптимизация и оптимальные управления»

Метод численного решения дифференциального уравнения первого порядка — это нахождение корней уравнения при известных начальных условиях х0; у(х0).

наиболее распространённый метод решения дифференциальных уравнений — метод Рунге-Кутта, так как он даёт более точное решение.

Пусть необходимо решить уравнение при известных начальных условиях х0; у(х0).

В методе Рунге-Кутта функцию раскладывают в ряд Тейлора:

В методе Рунге-Кутта при вычислении ограничиваются только первыми пятью членами ряда. При этом у(х) переносят в левую часть: .

И используя для правой части новую переменную k, получим

.

Здесь k-усреднённая производная, которая имеет вид:

,

; ; k4=hf(x+h,y+k3).

Тогда окончательно получим формулу:

.

В общем виде данная формула примет вид:

,

где

; ;

Алгоритм метода Рунге-Кутта

Шаг 1. Задаются начальные данные а=х0; у0; b; h.

Шаг 2. Вычисляется новое значение функции по формуле: ,

Где ; ;

Шаг 3. Вычисляется новое значение аргумента по формуле: хi+1=xi+h.

Шаг 4. Полученные значения функции и аргумента выводятся на печать.

Шаг 5. Если аргумент функции меньше b, то необходимо перейти к шагу 2, в противном случае управление переходит к шагу 6.

Задание. Написать программу решения дифференциального уравнения методом Рунге-Кутта, если известны следующие данные:

1) Решим дифференциальное уравнение методом Рунге-Кутта:

Лабораторная работа Решение дифференциальных уравнений в Matlab

НазваниеЛабораторная работа Решение дифференциальных уравнений в Matlab
Дата15.02.2018
Размер0.51 Mb.
Формат файла
Имя файлаlab#5DiffEquationsMatlab.docx
ТипЛабораторная работа
#36539
Подборка по базе: Английский язык. Самостоятельна работа 6.3..odt, Юриспруденция, дипломная работа.docx, Практическая работа — тестирование.docx, Курсовая работа.docx, Лабораторная работа №6м.pdf, Практическая работа № 24.pdf, ОТЧЕТ по практическим и лабораторной работам Гильманов Э.Р. АТПз, Корр Практическая работа 2.docx, Контрольная работа ДОУ Кравцова.В.А. 2ДОУ-19з.docx, Практическая работа.docx

РОССИЙСКИЙ УНИВЕРСИТЕТ ТРАНСПОРТА (МИИТ)

Кафедра «Управление и защита информации»

«Решение дифференциальных уравнений в Matlab»

«ИСТОРИЯ И МЕТОДОЛОГИЯ НАУКИ И ТЕХНИКИ

В ОБЛАСТИ УПРАВЛЕНИЯ»

Выполнила: студентка группы ТУУ-151

Проверила: доц. Зольникова Н.Н.

Решить дифференциальное уравнение:

при начальном условии

Решим данную задачу Коши с помощью метода Рунге-Кутта 4-5 порядка точности, используя функцию ode45(). Для этого запишем исходное уравнение как функцию в Matlab:

function y = dy( x, y )

%Уравнение, задающее производную

y = 2*cos(2*x) + sin(y);

end
Также необходимо задать начальные условия и интервал, на котором будет искаться решение.

interval = [0, 50];
%Решение с помощью метода Рунге-Кутта 4-5 порядка точности

[X,Y] = ode45(@dy, interval, y0);

plot(X, Y) %изображение графика функции

grid on %создание сетки на графике

Решить задачу Коши и краевую задачу для дифференциального уравнения

Для нахождения решения данного дифференциального уравнения следует найти общее решение соответствующего однородного дифференциального уравнения

Составляем и решаем характеристическое уравнение:

Характеристическое уравнение имеет два кратных действительных корня, следовательно, общее решение однородного уравнения имеет вид:

Найдем частное решение. Так как в исходном уравнении правая часть представляет собой константу, то частное решение будет иметь вид:

Подставляем частное решение в исходное уравнение. Получаем:

Таким образом, частное решение имеет вид:

Общее решение исходного дифференциального уравнения записывается в виде:

При этом производная

Решение задачи Коши.

Для нахождения и подставим начальные условия и решим систему:

Таким образом, при данных начальных условиях получаем решение в виде:

Решение краевой задачи.

Для определения и подставим краевые условия.

Таким образом, при данных краевых условиях получаем решение в виде:

Решим задачу Коши аналитически с помощью метода dsolve() и методом Рунге-Кутта с помощью функции ode45().

В функцию dsolve() необходимо записать исходное уравнение, начальные или граничные условия и переменную, по которой происходит дифференцирование. Символ «Dy» обозначает первую производную, «D2y» соответственно вторую производную.

Y = dsolve(‘D2y+2*Dy+y=1.5’, ‘y(0)=0’, ‘Dy(0)=0’, ‘x’)

y = ezplot(Y, [0,20]) %изображение графика символьного выражения

set(y, ‘LineWidth’, 2); %установка толщины линии

axis([0 20 0 2]); %задание границ графика

grid on; %создание сетки на графике

hold on; %следующий график будет рисоваться в этом же окне

Для использования функции ode45() запишем исходное уравнение в виде системы:

function F = dy2( x, y )

% ОДУ первого порядка

%Решение с помощью метода Рунге-Кутта 4-5 порядка точности

%Интервал, на которм будет находится решение

[X,Y] = ode45(@dy2, interval, y0);

%Значения искомой функции находятся в первом столбце матрицы Y

plot(X, Y(:,1), ‘:r’, ‘LineWidth’, 1.5) %изображение графика функции

legend(‘Аналитическое решение’,’Метод Рунге-Кутта’);
Оба графика решений полностью совпали.

Решение краевой задачи также найдем аналитически через функцию dsolve() и с помощью методов bvp4c() и ode45().

Y = dsolve(‘D2y+2*Dy+y=1.5’, ‘y(0)= 1’, ‘Dy(5)=6.5’, ‘x’)

y = ezplot(Y, [0,20]); %изображение графика символьного выражения

set(y, ‘LineWidth’, 2); %установка толщины линии

axis([0 20 -100 50]); %задание границ графика

grid on; %создание сетки на графике

hold on; %следующий график будет рисоваться в этом же окне


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

function res = boundCon( ya, yb )

%Функция, вычисляющая разность между значением в граничной точке

% и точным значением

%Задаем стартовые значения для поиска начальных условий

solinit = bvpinit(linspace(0,5), [1 1]);

%Нахождение значений y(x) и y'(x) на интервале [0;5]

sol = bvp4c(@dy2, @boundCon, solinit);

[X,Y] = ode45(@dy2, interval, y0);

%Значения искомой функции находятся в первом столбце матрицы Y

plot(X, Y(:,1), ‘:r’, ‘LineWidth’, 1.5) %изображение графика функции

legend(‘Аналитическое решение’,’Метод Рунге-Кутта’);

Графики решений полностью совпали.

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

%Интервал, на которм будет находится решение

[X,Y] = ode45(@dy2, interval, y0);

%Значения функции y(x) находятся в первом столбце

%Значения производной y'(x) находятся во втором столбце


источники:

http://mysagni.ru/fea/ait/2488-laboratornaya-rabota-chislennoe-reshenie-differencialnyh-uravneniy-metod-runge-kutta-po-discipline-optimizaciya-i-optimalnye-upravleniya-variant-4.html

http://topuch.ru/laboratornaya-rabota-reshenie-differencialenih-uravnenij-v-mat/index.html