reduceRedundancies

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

Описание

пример

[newEqs,newVars] = reduceRedundancies(eqs,vars) исключает избыточные уравнения и переменные из системы дифференциальных алгебраических уравнений первого порядка (ДАУ) eqs. Входной параметр vars задает переменные состояния системы.

reduceRedundancies возвращает новую систему ДАУ как вектор-столбец newEqs и переменные уменьшенного состояния как вектор-столбец newVars. Каждый элемент newEqs представляет уравнение с правой стороной, равной нулю.

пример

[newEqs,newVars,R] = reduceRedundancies(eqs,vars) возвращает массив структур R содержащая информацию об исключённых уравнениях и переменных.

Примеры

свернуть все

Упростите систему из пяти дифференциальных алгебраических уравнений (ДАУ) в четырех переменных состояния к системе из двух уравнений в двух переменных состояния.

Создайте следующую систему из пяти ДАУ в четырех переменных состояния x1(t), x2(t), x3(t), и x4(t). Система также содержит символические параметры a1, a2, a3, a4, b, c, и функции f(t) которые не являются переменными состояния.

syms x1(t) x2(t) x3(t) x4(t) a1 a2 a3 a4 b c f(t)
eqs = [a1*diff(x1(t),t)+a2*diff(x2(t),t) == b*x4(t),
       a3*diff(x2(t),t)+a4*diff(x3(t),t) == c*x4(t),
       x1(t) == 2*x2(t),
       x4(t) == f(t),
       f(t) == sin(t)];
vars = [x1(t),x2(t),x3(t),x4(t)];

Использование reduceRedundancies для исключения избыточных уравнений и соответствующих переменных состояния.

[newEqs,newVars] = reduceRedundancies(eqs,vars)
newEqs = 

(a1t x1(t)+a2t x1(t)2-bf(t)a3t x1(t)2+a4t x3(t)-cf(t))[a1 * diff (x1 (t), t) + (a2 * diff (x1 (t), t) )/2 - b * f (t); (a3 * diff (x1 (t), t) )/2 + a4 * diff (x3 (t), t) - c * f (t)]

newVars = 

(x1(t)x3(t))[x1 (t); x3 (t)]

Задайте вход переменных состояния, чтобы выбрать, какие переменные возвращаются при исключении ДАУ.

Создайте систему из четырех ДАУ в четырех переменных состояния V_ac(t), V1(t), V2(t), и I(t). Система также содержит символические параметры L, R, и V0.

syms V_ac(t) V1(t) V2(t) I(t) L R V0
eqs = [V_ac(t) == V1(t) + V2(t),
       V1(t) == I(t)*R,
       V2(t) == L*diff(I(t),t),
       V_ac(t) == V0*cos(t)]
eqs = 

(Vac(t)=V1(t)+V2(t)V1(t)=RI(t)V2(t)=Lt I(t)Vac(t)=V0cos(t))

vars = [V_ac(t),I(t),V1(t),V2(t)]
vars = (Vac(t)I(t)V1(t)V2(t))

Использование reduceRedundancies для исключения избыточных уравнений и переменных. reduceRedundancies определяет приоритеты, чтобы сохранить переменные состояния в векторе vars начиная с первого элемента.

[newEqs,newVars] = reduceRedundancies(eqs,vars)
newEqs = 

-Lt I(t)-RI(t)+V0cos(t)

newVars = I(t)

Здесь, reduceRedundancies возвращает уменьшенное уравнение в термине переменной I(t).

Когда существует несколько способов сокращения ДАУ, задайте другой входной порядок переменных состояния, чтобы выбрать, какие переменные возвращаются. Задайте другой вектор, который содержит другой порядок переменных состояния. Снова удалите ДАУ.

vars2 = [V_ac(t),V1(t),V2(t),I(t)]
vars2 = (Vac(t)V1(t)V2(t)I(t))
[newEqs,newVars] = reduceRedundancies(eqs,vars2)
newEqs = 

-Lt V1(t)+RV1(t)-RV0cos(t)R- (L * diff (V1 (t), t) + R * V1 (t) - R * V0 * cos (t) )/R

newVars = V1(t)V1 (t)

Здесь, reduceRedundancies возвращает уменьшенное уравнение в терминах переменной состояния V1(t).

Объявить три выходных аргументов при вызове reduceRedundancies для упрощения системы уравнений и возврата информации об исключённых уравнениях.

Создайте следующую систему из пяти дифференциальных алгебраических уравнений (ДАУ) в четырех переменных состояния x1(t), x2(t), x3(t), и x4(t). Система также содержит символические параметры a1, a2, a3, a4, b, c, и функции f(t) которые не являются переменными состояния.

syms x1(t) x2(t) x3(t) x4(t) a1 a2 a3 a4 b c f(t)
eqs = [a1*diff(x1(t),t)+a2*diff(x2(t),t) == b*x4(t),
       a3*diff(x2(t),t)+a4*diff(x3(t),t) == c*x4(t),
       x1(t) == 2*x2(t),
       x4(t) == f(t),
       f(t) == sin(t)];
vars = [x1(t),x2(t),x3(t),x4(t)];

Функции reduceRedundancies с тремя выходными аргументами.

[newEqs,newVars,R] = reduceRedundancies(eqs,vars)
newEqs = 

(a1t x1(t)+a2t x1(t)2-bf(t)a3t x1(t)2+a4t x3(t)-cf(t))[a1 * diff (x1 (t), t) + (a2 * diff (x1 (t), t) )/2 - b * f (t); (a3 * diff (x1 (t), t) )/2 + a4 * diff (x3 (t), t) - c * f (t)]

newVars = 

(x1(t)x3(t))[x1 (t); x3 (t)]

R = struct with fields:
      solvedEquations: [2x1 sym]
    constantVariables: [1x2 sym]
    replacedVariables: [1x2 sym]
       otherEquations: [1x1 sym]

Функция reduceRedundancies возвращает информацию об устраненных уравнениях в R. Здесь, R - массив структур с четырьмя полями.

The solvedEquations поле содержит уравнения, которые устраняются reduceRedundancies. Исключенные уравнения содержат эти переменные состояния из vars которые не появляются в newEqs. Правая сторона каждого исключенного уравнения равна нулю.

R1 = R.solvedEquations
R1 = 

(x1(t)-2x2(t)x4(t)-f(t))[x1 (t) - 2 * x2 (t); x4 (t) - f (t)]

The constantVariables поле содержит матрицу с двумя столбцами. Первый столбец содержит переменные состояния от vars что reduceRedundancies заменяется постоянными значениями. Второй столбец содержит соответствующие постоянные значения.

R2 = R.constantVariables
R2 = (x4(t)f(t))[x4 (t), f (t)]

The replacedVariables поле содержит матрицу с двумя столбцами. Первый столбец содержит переменные состояния от vars что reduceRedundancies заменяется выражениями в терминах других переменных. Второй столбец содержит соответствующие значения исключенных переменных.

R3 = R.replacedVariables
R3 = 

(x2(t)x1(t)2)[x2 (t), x1 (t )/2]

The otherEquations поле содержит эти уравнения из eqs которые не содержат ни одних переменных состояния vars.

R4 = R.otherEquations
R4 = f(t)-sin(t)f(t) - sin(t)

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

свернуть все

Система ДАУ первого порядка, заданная как вектор символьных уравнений или выражений.

Оператор отношения == задает символьные уравнения. Если вы задаете элемент eqs в качестве символьного выражения без правой стороны, тогда принимается символьное уравнение с правой стороной, равной нулю.

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

Порядок входных параметров переменных состояния определяет, какие уменьшенные переменные возвращаются. Если существует несколько способов уменьшения ДАУ, то reduceRedundancies определяет приоритеты, чтобы сохранить переменные состояния в vars начиная с первого элемента.

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

Выходные аргументы

свернуть все

Система ДАУ первого порядка, возвращенная как вектор-столбец символьных выражений. Каждый элемент newEqs представляет уравнение с правой стороной, равной нулю.

Уменьшенный набор переменных, возвращаемый как вектор-столбец символьных вызовов функций.

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

  • R.solvedEquations чтобы вернуть символический вектор-столбец всех уравнений, которые reduceRedundancies используется для замены переменных состояния, которые не появляются в newEqs.

  • R.constantVariables для возврата матрицы со следующими двумя столбцами. Первый столбец содержит те исходные переменные состояния вектора vars которые были исключены и заменены постоянными значениями. Второй столбец содержит соответствующие постоянные значения.

  • R.replacedVariables для возврата матрицы со следующими двумя столбцами. Первый столбец содержит те исходные переменные состояния вектора vars которые были исключены и заменены с точки зрения других переменных. Второй столбец содержит соответствующие значения исключенных переменных.

  • R.otherEquations чтобы вернуть вектор-столбец, содержащую все исходные уравнения eqs которые не содержат ни одной из переменных входов vars.

Введенный в R2014b