Проверяйте, ниже ли дифференциальный индекс системы уравнений, чем 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