isLowIndexDAE

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

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

свернуть все

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

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

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

Введенный в R2014b