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, a4BC, и функциональный 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))

newVars = 

(x1(t)x3(t))

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

Создайте систему четырех ДАУ в четырех переменных состояния V_ac(t), V1(t), V2(t), и I(t). Система также содержит символьные параметры LR, и 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)=V0потому что(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)+V0потому что(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)-RV0потому что(t)R

newVars = V1(t)

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

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

Создайте следующую систему пяти дифференциальных алгебраических уравнений (ДАУ) в четырех переменных состояния x1(t), x2(t), x3(t), и x4(t). Система также содержит символьные параметры a1, a2, a3, a4BC, и функциональный 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))

newVars = 

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

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

R2 = R.constantVariables
R2 = (x4(t)f(t))

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

R3 = R.replacedVariables
R3 = 

(x2(t)x1(t)2)

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

R4 = R.otherEquations
R4 = 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