Проверяйте, ниже ли дифференциальный индекс системы уравнений, чем 2
isLowIndexDAE(eqs,vars)
isLowIndexDAE(
проверки, если система eqs
,vars
)eqs
полулинейных дифференциальных алгебраических уравнений первого порядка (ДАУ) имеет низкий дифференциальный индекс. Если дифференциальным индексом системы является 0
или 1
, то isLowIndexDAE
возвращает логический (TRUE) 1
. Если дифференциальный индекс eqs
выше, чем 1
, то isLowIndexDAE
возвращает логический (FALSE) 0
.
Количество уравнений eqs
должно совпадать с количеством переменных vars
.
Проверяйте, имеет ли система полулинейных ДАУ первого порядка низкий дифференциальный индекс (0
или 1
).
Создайте следующую систему двух дифференциальных алгебраических уравнений. Здесь, x(t)
и y(t)
являются переменными состояния системы. Задайте уравнения и переменные как два символьных вектора: уравнения как вектор символьных уравнений и переменные как вектор символьных вызовов функции.
syms x(t) y(t) eqs = [diff(x(t),t) == x(t) + y(t), x(t)^2 + y(t)^2 == 1]; vars = [x(t), y(t)];
Используйте isLowIndexDAE
, чтобы проверять дифференциальный порядок системы. Дифференциальным порядком этой системы является 1
. Для систем индекса 0
и 1
, isLowIndexDAE
возвращает 1
(true
).
isLowIndexDAE(eqs, vars)
ans = logical 1
Проверяйте, имеет ли следующая система ДАУ низкий или высокий дифференциальный индекс. Если индекс выше, чем 1
, то используйте reduceDAEIndex
, чтобы уменьшать его.
Создайте следующую систему двух дифференциальных алгебраических уравнений. Здесь, x(t)
, y(t)
и z(t)
являются переменными состояния системы. Задайте уравнения и переменные как два символьных вектора: уравнения как вектор символьных уравнений и переменные как вектор символьных вызовов функции.
syms x(t) y(t) z(t) f(t) eqs = [diff(x(t),t) == x(t) + z(t),... diff(y(t),t) == f(t), x(t) == y(t)]; vars = [x(t), y(t), z(t)];
Используйте isLowIndexDAE
, чтобы проверять дифференциальный индекс системы. Для этой системы isLowIndexDAE
возвращает 0
(false
). Это означает, что дифференциальным индексом системы является 2
или выше.
isLowIndexDAE(eqs, vars)
ans = logical 0
Используйте reduceDAEIndex
, чтобы переписать систему так, чтобы дифференциальным индексом был 1
. Вызывание этой функции с четырьмя выходными аргументами также показывает дифференциальный индекс исходной системы. Новая система имеет одну дополнительную переменную состояния, Dyt(t)
.
[newEqs, newVars, ~, oldIndex] = reduceDAEIndex(eqs, vars)
newEqs = diff(x(t), t) - z(t) - x(t) Dyt(t) - f(t) x(t) - y(t) diff(x(t), t) - Dyt(t) newVars = x(t) y(t) z(t) Dyt(t) oldIndex = 2
Проверяйте, ниже ли дифференциальный порядок новой системы, чем 2
.
isLowIndexDAE(newEqs, newVars)
ans = logical 1
daeFunction
| decic
| findDecoupledBlocks
| incidenceMatrix
| massMatrixForm
| odeFunction
| reduceDAEIndex
| reduceDAEToODE
| reduceDifferentialOrder
| reduceRedundancies