вия в зависимости от значения трех векторов: value, isterminal, di
rection (их величины можно установить в m-файлах функций
событий). Для i-й функции событий value(i) – значение функ-
ции, isterminal (i) – прекратить интеграцию при достижении
функцией нулевого значения, direction^) = 0, если все нули
функции событий нужно вычислять (по умолчанию), +1 – толь-
ко те нули, где функция событий увеличивается, -1 – только
те нули, где функция событий уменьшается. Выходной аргу-
мент ТЕ – вектор-столбец времен, в которые происходят со-
бытия (events), строки YE являются соответствующими реше-
ниями, а индексы в векторе IE определяют, какая из i функ-
ций событий (event) равна нулю в момент времени, опреде-
ленный ТЕ. Когда происходит вызов функции без выходных
аргументов, по умолчанию вызывается выходная функция
odeplot для построения вычисленного решения. В качестве
альтернативы можно, например, установить свойство OutputFcn
в значение ' odephas2' или 'odephas3' для построения двумер-
ных или трехмерных фазовых плоскостей.
Пример 1. Покажем применение решателя ОДУ на ставшем клас-
сическом примере – решении уравнения Ван-дер-Поля, записанного в
виде системы из двух дифференциальных уравнений:
y'
1=
y
2 ;
y'
2=
100*(1-y
1
)^2
*
y
2
-y
1
при начальных условиях
y
1
,(0) = 0; y
2
(0) = 1.
Перед решением нужно записать систему дифференциальных уравне-
ний в виде ode-функции. Для этого в главном меню выберем File >
New > M-File и введем
function dydt = vdp100(t.y)
dydt = zeros(2.1); % a column vector
dydt(l) = y(2);
dydt(2) = 100*(1 -у(1^)2)*у(2) -y(1);
Сохраним m-файл-функцию.
Тогда решение решателем ode15s и сопровождающий его график мож-
но получить, используя следующие команды, которые набираются в
строке Matlab
31