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