daetools::reduceDAEIndex

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

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

[newEqs,newVars,R,oldIndex] := daetools::reduceDAEIndex(eqs,vars)

Описание

[newEqs,newVars,R,oldIndex] := daetools::reduceDAEIndex(eqs,vars) преобразует систему высокого индекса дифференциальных алгебраических уравнений первого порядка eqs к эквивалентной системе newEqs из дифференциального индекса 1. daetools::reduceDAEIndex функция сохраняет исходные уравнения и переменные и вводит новые переменные и уравнения. Это также возвращает матричный R это выражает новые переменные в newVars как производные исходных переменных vars и дифференциальный индекс oldIndex из исходной системы ДАУ, eqs.

После преобразования, daetools::reduceDAEIndex проверяет дифференциальный индекс новой системы путем вызова daetools::isLowIndexDAE. Если индекс newEqs 2 или выше, затем daetools::reduceDAEIndex выдает предупреждение.

Реализация daetools::reduceDAEIndex использует алгоритм Pantelides. Этот алгоритм уменьшает системы более высокого индекса до систем более низкого индекса путем выборочного добавления дифференцируемых форм исходных уравнений. Алгоритм Pantelides может недооценить дифференциальный индекс новой системы, и поэтому, может не уменьшать дифференциальный индекс до 1. В этом случае, daetools::reduceDAEIndex выдает предупреждение и возвращает значение oldIndex как UNKNOWN. daetools::reduceDAEToODE функционируйте использование более надежное, но более медленное Исключение Гаусса. Обратите внимание на то, что daetools::reduceDAEToODE требует, чтобы система ДАУ была полулинейна.

Примеры

Пример 1

Уменьшайте дифференциальный индекс системы, которая содержит два дифференциальных алгебраических уравнения второго порядка. Поскольку уравнения являются уравнениями второго порядка, сначала используйте reduceDifferentialOrder переписать систему к системе ДАУ первого порядка.

Создайте следующую систему двух ДАУ второго порядка. Здесь, x(t)yt , и F(t)переменные состояния системы.

eqs := [diff(x(t), t, t) = -F(t)*x(t),
        diff(y(t), t, t) = -F(t)*y(t) - g,
        x(t)^2 + y(t)^2 = r^2];
vars := [x(t), y(t), F(t)]

Перепишите эту систему так, чтобы все уравнения стали дифференциальными уравнениями первого порядка. daetools::reduceDifferentialOrder функционируйте заменяет ДАУ второго порядка по двум выражениям первого порядка путем представления новых переменных Dxt(t) и Dyt(t).

[eqs, vars, R] := daetools::reduceDifferentialOrder(eqs, vars):
newEquations = eqs;
newVariables = vars;
relations = R

Используйте daetools::reduceDAEIndex переписать систему так, чтобы дифференциальным индексом был 1.

[eqs,vars,R,originalIndex] := daetools::reduceDAEIndex(eqs,vars):
newEquations = eqs;
newVariables = vars;
relations = R;
originalDAEIndex = originalIndex

Используйте daetools::reduceRedundancies сокращать систему.

[eqs, vars, solvedEquations,
 constantVariables,    
 replacedVariables, 
 otherEquations] := daetools::reduceRedundancies(eqs, vars):
newEquations = eqs;
newVariables = vars;

Параметры

eqs

Список или вектор уравнений или выражений в переменных состояния vars и их производные. Выражения представляют уравнения с 0 правая сторона.

vars

Список или вектор идентификаторов или выражений, таких как [x1(t), x2(t)].

Возвращаемые значения

Вложенный список, содержащий следующие четыре выходных параметров: список новых уравнений, список новых переменных, список отношений между новыми и исходными переменными и дифференциальный индекс исходной системы ДАУ. Если daetools::reduceDAEIndex сбои, чтобы уменьшать дифференциальный индекс до 1, затем это выдает предупреждение и возвращает UNKNOWN вместо дифференциального индекса исходной системы ДАУ.

Введенный в R2014b