
Лабораторные работы - Выполненые / Студенты всех групп / LAB_07 / МП-30 / 09_Виноградова_07
.docЛабораторная работа №7.
Изучение процедур ode в MATLAB.
Решение задачи Коши для дифференциального уравнения первого порядка.
1 способ:
Возьмем функцию y=t.^2 и будем считать ее решением задачи Коши для дифференциального уравнения первого порядка. Получим это дифференциальное уравнение и начальное условие. Создадим m-файл функцию, описывающую правую часть нашего дифференциального уравнения.
Текст m-файла:
function yp=yp(t,y)
%
yp=2*t;
Запустим процедуру решения этой задачи Коши:
[t,Y]=ode45('yp',[0 3],0);
Выполним построение графиков известной нам функции и результата численного решения задачи Коши:
plot(t,t^2,'g+',t,Y,'r')
Зеленым – график функции y=t^2.
Красным - результат численного решения задачи Коши Y(t).
2 способ:
Правую часть дифференциального уравнения можно записать и другим способом: 2*sqrt(y).
Текст m-файла функции:
function yp=yp2(t,y)
%
yp=2*sqrt(y);
Получим графики нашей функции и численного решения задачи Коши:
График численного решения задачи Коши Y(t) имеет такой вид потому, что в точке t=0 производная заданной функции не существует.
Возьмем t=1, получим графики:
Мой тестовый пример:
Возьмем показательную функцию y=2^t.
Текст m-файла функции:
function yp=yp3(t,y)
%
yp=(2^t)*log(2);
Запустим процедуру решения этой задачи Коши:
[t,Y]=ode45('yp3', [0 3],0);
Выполним построение графиков функции и результата численного решения задачи Коши:
plot(t, 2.^t,'g+',t,Y,'r')
Зеленым – график функции y=2^t.
Красным - результат численного решения задачи Коши Y(t).
Решим задачу Коши для дифференциального уравнения второго порядка.
Решение для функции косинуса.
Возьмем функцию : y=cos(t)
Попробуем теперь решить задачу Коши для дифференциального уравнения второго порядка. Возьмем известную функцию, например, y=cos(t):
y''=-cos(t) или y''=-y
y(0)=1
y'(0)=0
Чтобы можно было воспользоваться MATLAB сначала сведем эту задачу к системе из двух дифференциальных уравнений первого порядка. Будем считать саму функцию y первой координатой двумерной функции Y (т.е. Y(1)), а ее первую производную y' второй (т.е. Y(2)). Тогда с учетом того, что y мы придумали сами имеем первое уравнение системы:
Y'(1)=-sin(t)
второе
Y'(2)=-cos(t) или Y'(2)=-Y(1)
Если эту систему записать в матричной форме, то слева получим вектор-столбец из производных компонент вектор-функции Y, а справа вектор-столбец из функций
[-sin(t); -cos(t)] или чтобы выглядело пострашнее [-sin(t); -Y(1)].
Создадим m-файл функцию, описывающую правую часть нашей системы дифференциальных уравнений:
function yp=yp4(t,y)
%
yp=[-sin(t);-y(1)];
Запустим процедуру решения этой задачи Коши:
[t,YY]=ode45('yp4',[0 2*pi],[1 0]);
Построим графики:
plot(t,cos(t),'r+',t,YY)
Синим – график нашей функции.
Зеленым – график ее производной.
plot(t,cos(t),'r+',t,YY(:,1))
На этом графике мы видим рассматриваемую функцию y=cos(t).
Мой тестовый пример:
Возьмем функцию гиперболического синуса:
y=sinh(t)
Создадим m-файл функцию, описывающую правую часть нашей системы дифференциальных уравнений:
function yp=yp5(t,y)
%
yp=[cosh(t);sinh(t)];
Запустим процедуру решения этой задачи Коши:
[t,YY]=ode45('yp5',[0 2*pi],[1 0]);
Построим график:
plot(t,sinh(t),'r+',t,YY(:,1))
Так как вторая производная от функции гиперболического синуса равна этой функции, то на графике plot(t,sinh(t),'r+',t,YY) кривые будут совпадать.