с помощью команды odeset. Если
Пример 1
[T.X.Y] - sim(@model....).
Параметры интегрирования (options) могут быть определены и в m-файле, и в командной строке с помощью команды odeset. Если параметр определен в обоих местах, определение в командной строке имеет приоритет.
Решатели используют в списке параметров различные параметры:
-
NormControl — управление ошибкой в зависимости от нормы вектора решения [on | {off}]. Установите 'on', чтобы norm(e) <= max(RelTol*norm(y), AbsTol). По умолчанию все решатели используют более жесткое управление по каждой из составляющих вектора решения;
-
RelTol — относительный порог отбора [положительный скаляр]. По умолчанию 1е-3 (0.1% точность) во всех решателях; оценка ошибки на каждом шаге интеграции e(i) <= max(RelTol*abs(y(i)), AbsTol(i));
-
AbsTol — абсолютная точность [положительный скаляр или вектор {1е-6}].Скаляр вводится для всех составляющих вектора решения, а вектор указывает на компоненты вектора решения. AbsTol по умолчанию 1е-6 во всех решателях;
-
Refine - фактор уточнения вывода [положительное целое число] — умножает число точек вывода на этот множитель. По умолчанию всегда равен 1, кроме ODE45, где он 4. Не применяется, если tspan > 2;
-
OutputFcn — дескриптор функция вывода [function] — имеет значение в том случае, если решатель вызывается без явного указания функции вывода, OutputFcn по умолчанию вызывает функцию odeplot. Эту установку можно поменять именно здесь;
-
OutputSel — индексы отбора [вектор целых чисел] Установите компоненты, которые поступают в OutputFcn. OutputSel по умолчанию выводит все компоненты;
-
Stats — установите статистику стоимости вычислений [on {off}];
-
Jacobian — функция матрицы Якоби [function constant matrix]. Установите это свойство на дескриптор функции FJac (если FJac(t, у) возвращает dF/dy) или
на имя постоянной матрицы dF/dy;
-
Jpattern — график разреженности матрицы Якоби [имя разреженной матрицы]. Матрица S с S(i,j) = 1, если составляющая i F(t, у) зависит от составляющей j величины у, и 0 в противоположном случае;
-
Vectorized — векторизованная ODE-функция [on | {off}]. Устанавливается на 'on', если ODE-функция F F(t,[yl y2...]) возвращает вектор [F(t, yl) F(t, y2) ...];
-
Events — [function] — введите дескрипторы функций событий, содержащих собственно функцию в векторе value, и векторы isterminal и direction (см выше);
-
Mass — матрица массы [constant matrix function]. Для задач М*у' = f(t, у) установите имя постоянной матрицы. Для задач с переменной М введите дескриптор функции, описывающей матрицу массы;
-
MstateDependence — зависимость матрицы массы от у [none | {weak} | strong] — установите 'nоnе' для уравнений M(t)*y' = F(t, у). И слабая ('weak'), и сильная ('strong') зависимости означают M(t, у), но 'weak' приводит к неявным алгоритмам решения, использующим аппроксимации при решении алгебраических уравнений;
-
MassSingular — матрица массы М сингулярная [yes no | {maybe}] (да/нет/может быть);
-
MvPattern — разреженность (dMv/dy), график разреженности (см функцию spy) — введите имя разреженной матрицы S с S(i,j) = 1 для любого k, где (i, k) элемент матрицы массы M(t, у) зависит от проекции] переменной у, и 0 в противном случае;
-
Initial Step — предлагаемый начальный размер шага, по умолчанию каждый решатель определяет его автоматически по своему алгоритму;
-
Initial SI ope — вектор начального уклона ур0 ур0 = F(t0,y0)/M(t0, y0);
-
MaxStep — максимальный шаг, по умолчанию во всех решателях равен одной десятой интервала tspan;
-
BDF (Backward Differentiation Formulas) [on | {off}] — указывает, нужно ли использовать формулы обратного дифференцирования (методы Gear) вместо формул численного дифференцирования, используемых в ode 15s по умолчанию;
-
MaxOrder - Максимальный порядок ODE15S [1 | 2 | 3 4 | {5}].
Решатели используют в списке различные параметры. В приведенной ниже таблице они даны для решателей обычных (в том числе жестких) дифференциальных уравнений.
|
Параметры
|
Ode45
|
Ode23
|
Ode11s
|
Ode15s
|
ode23s
|
|
|
RelTol,AbsTol
|
+
|
+
|
+
|
+
|
+
|
|
|
OutputFcaOutputSel, Refine, Stats
|
+
|
+
|
+
|
+
|
+
|
|
|
Events
|
+
|
+
|
+
|
+
|
+
|
|
|
MaxStep, InitlalStep
|
+
|
+
|
+
|
+
|
+
|
|
|
Jconstant, Jacobl an,
|
|
|
|
|
|
|
|
Jpattern, Vectorized
|
-
|
-
|
-
|
+
|
+
|
|
|
Mass
|
-
|
-
|
-
|
+
|
+
|
|
|
MassConstant
|
-
|
-
|
-
|
+
|
-
|
|
|
MaxOrder, BOF
|
-
|
|
-
|
+
|
-
|
|
Решатель bvp4c имеет очень небольшое число параметров, но можно вводить не только матрицу Якоби интегрируемой функции, но и матрицу Якоби, содержащую частные производные функции граничных условий по границам интервала и по неизвестным параметрам.
Покажем применение решателя ОДУ на ставшем классическом примере — решении уравнения Ван-дер-Поля, записанного в виде системы из двух дифференциальных уравнений:
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);
dydtC2) = 100*(1 -у(1^)2)*у(2) -y(1);
Сохраним m-файл-функцию. Тогда решение решателем ode15s и сопровождающий его график можно получить, используя следующие команды:
» [T,Y]=odel5s(@vdp100.[0 30].[2 0]);
» plot(T.Y)
» hold on:gtext('yl').gtext('y2')
Последние команды позволяют с помощью мыши нанести на графики решений y
1
= y(1) и у
2
= y(2) помечающие их надписи.
Содержание раздела