isLowIndexDAE

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

Входные параметры

свернуть все

Система семинейных дифференциальных алгебраических уравнений первого порядка, заданная как вектор символьных уравнений или выражений.

Переменные состояния, заданные как вектор символьных функций или вызовов функций, таких как x(t).

Пример: [x(t),y(t)]

Введенный в R2014b