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

Лабораторная работа №7.

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

Объект исследования:

Работа процедур ode для различных дифференциальных уравнений.

Изучение процедур ode для диф.уравнений первого порядка:

1) Возьмем функцию y=t.^2 и будем считать ее решением задачи Коши для дифференциального уравнения первого порядка.Получим это дифференциальное уравнение y'=2*t и начальное условие y(0)=0. Изучим порядок использования процедур ode.. (например, help ode45) и другие сопутствующие команды.

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

function yp=yp(t,y)

%

yp=2*t;

Код командной строки:

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

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

В итоге получаем гистограмму:

2) В примере пункта 1. правую часть диффернциального уравнения можно записать и другим способом: 2*sqrt(y).

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

function yp=yp2(t,y)

%

yp=2*sqrt(y);

Командная строка:

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

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

Получили гистограмму:

Ошибка получается из-за того, что неверны начальные условия- корня из 0 не существует. Попробуем изменить начальные условия.

Командная строка:

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

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

Получили гистограмму:

Изучение процедур ode для диф.уравнений второго порядка:

3) Попробуем теперь решить задачу Коши для дифференциального уравнения второго порядка.

Возьмем известную функцию, например, 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)

Получили гистограмму:

Командная строка:

plot(t,cos(t),'r+',t,YY(:,1))

Получили гистограмму:

Свои примеры:

1) Создадим m-файл yp4.m:

function yp=yp6(t,y)

%

yp=-y*t;

Командная строка:

[t,Y]=ode113('yp4',[1 10],exp(-1/2));

plot(t,exp(-(t.^2)/2),'r+',t,Y)

Получили гистограмму:

2) Создадим m-файл yp5.m:

function yp=yp7(t,y)

%

yp=[t.^2/2;y(1)];

Командная строка:

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

plot(t,(t.^3)/6,'r+',t,YY(:,1));

Получили гистограмму:

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