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

лабораторная работа №7

изучение процедур ode.. в matlab.

1.1. Изучение функции ode на примере функции .

Возьмем функцию y=t.^2 и будем считать ее решением задачи Коши для дифференциального уравнения первого порядка.

Получим это дифференциальное уравнение y'=2*t и начальное условие y(0)=0. Изучим порядок использования процедур ode.. и другие сопутствующие команды. Создадим m-файл функцию yp.m, описывающую правую часть нашего дифференциального уравнения:

function yp=yp(t,y)

%

yp=2*t;

Запустим процедуру решения этой задачи Коши, например

[t,Y]=ode45('yp',[0 3],0);

и выполним построение графиков известной функции y=t.^2 и результата численного решения задачи Коши Y(t) (Y в верхнем регистре)

plot(t,t^2,'g+',t,Y,'r')

Рис.1 График решения дифференциального уравнения (с ode45)

Посмотрим как с заданием справится функция ode23:

[t,Y]=ode23('yp',[0 3],0);

plot(t,t.^2,'g+',t,Y,'r')

Рис.2. График решения дифф. урав. (с ode23)

1.2. Изучение функции ode на примере функции .

Создадим другой m-файл функцию yp2.m, описывающую правую часть нашего дифференциального уравнения:

function yp=yp2(t,y)

%

yp=2*sqrt(y);

и снова решим задачу Коши с нулевым начальным условием. Построим соответствующие графики:

Рис.3 График «неправильного» решения

изменим начальное условие, возьмем t=1, y(1)=1, получим следующий график:

[t,Y]=ode45('yp2',[1 3],1);

>> plot(t,(t.^2)','g+',t,Y,'r')

Рис.4. График верного решения

    1. Исследование функций ode.. на решение задачи Коши для дифференциального уравнения второго порядка.

Попробуем теперь решить задачу Коши для дифференциального уравнения второго порядка. Возьмем известную функцию, например, y=cos(t)

y''=-cos(t) или y''=-y

y(0)=1

y'(0)=0

Чтобы можно было воспользоваться MATLABом сначала сведем эту задачу к системе из двух дифференциальных уравнений первого порядка. Будем считать саму функцию y первой координатой двумерной функции Y (т.е. Y(1) или на языке MATLAB Y(:,1)), а ее первую производную y' второй (т.е. Y(2) или на языке MATLAB 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-файл функцию yp3.m, описывающую правую часть нашей системы дифференциальных уравнений:

function yp=yp3(t,y)

%

yp=[-sin(t);-y(1)];

Исследуем решения:

[t,YY]=ode45('yp3',[0 2*pi],[1 0]);

plot(t,cos(t),'r+',t,YY) %(Рис. 5)

plot(t,cos(t),'r+',t,YY(:,1)) %(Рис. 6)

Рис. 5. График решения дифф. уравнения (Задача Коши 2го порядка)

Рис. 6.График решения дифф. уравнения (Задача Коши 2го порядка)

На рис.5 представлена представлены производная функции и сама функция, а на рис. 6 только функция.

    1. Исследуем функцию ode на примере .

Создадим м-файл ln.m

function ypppy=ypppy(t,y)

%

yp=exp(t);

Решим задачу Коши:

[t,Y]=ode45('ypppy',[0 3],1);

plot(t,exp(t),'r+',t,Y)

Рис.7. График решения

    1. Выводы:

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

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