-
Notifications
You must be signed in to change notification settings - Fork 0
/
LAB_4_Изучение_процедур_ode_в_MATLAB_Модель_Мальтуса.txt
69 lines (40 loc) · 2.52 KB
/
LAB_4_Изучение_процедур_ode_в_MATLAB_Модель_Мальтуса.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
Лабораторная работа № 4
Изучение процедур ode.. в MATLAB
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);
и выполните построение графиков известной функции y=t.^2 и результата численного решения задачи Коши Y(t) (Y в верхнем регистре)
plot(t,t^2,'g+',t,Y,'r')
Спланируйте и проведите исследование процедур ode.., используя то, что ответ Вам известен.
2. В примере пункта 1. правую часть диффернциального уравнения можно записать и другим способом: 2*sqrt(y).
Создадим другой m-файл функцию yp2.m, описывающую правую часть нашего дифференциального уравнения:
function yp=yp2(t,y)
%
yp=2*sqrt(y);
и снова решим задачу Коши с нулевым начальным условием. Построим соответствующие графики. Что, шокированы? Попытайтесь найти причину такого результата.
Подсказка: измените начальное условие, возьмите, например, t=1, y(1)=? Теперь все в порядке?
Сделайте практический вывод для себя.
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))
В чем разница между последними графиками?
4. Придумать свом собственные тестовые примеры и показать преподавателю.