Проверяйте, ниже ли дифференциальный индекс системы уравнений 2
isLowIndexDAE(
проверяет, является ли система eqs
,vars
)eqs
первого порядка полинейные дифференциальные алгебраические уравнения (ДАУ) имеют низкий дифференциальный индекс. Если дифференциальный индекс системы 0
или 1
, затем isLowIndexDAE
возвращает логический 1
Правда. Если дифференциальный индекс eqs
выше 1
, затем isLowIndexDAE
возвращает логический 0
(false).
Количество уравнений 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