exponenta event banner

reduceRedundancies

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

Описание

пример

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

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

пример

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

Примеры

свернуть все

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

Создание следующей системы из пяти дисковых полок в четырех переменных состояния 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 упростить систему уравнений и вернуть информацию об устраненных уравнениях.

Создайте следующую систему из пяти дифференциальных алгебраических уравнений (DAE) в четырех переменных состояния 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 - структурный массив с четырьмя полями.

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)]

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

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

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

R3 = R.replacedVariables
R3 = 

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

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