Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
48
Добавлен:
23.01.2015
Размер:
286.72 Кб
Скачать

Лабораторная работа №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) кривые будут совпадать.

Соседние файлы в папке МП-30