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