daetools::reduceDAEToODE

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

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

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

Синтаксис

[newEqs,constraintEqs,oldIndex] = daetools::reduceDAEToODE(eqs,vars)

Описание

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

Дифференциальным индексом новой системы является 0, то есть, якобиан newEqs относительно производных переменных в vars является обратимым.

Реализация daetools::reduceDAEToODE основан на Исключении Гаусса. Этот алгоритм более надежен, чем алгоритм Pantelides, используемый daetools::reduceDAEIndex, но это может быть намного медленнее.

Количество уравнений eqs должен совпасть с количеством переменных vars.

Примеры

Пример 1

Проверяйте, имеет ли система ДАУ минимум (0 или 1) или высоко (>1Дифференциальный индекс. Если индекс выше, чем 1, затем первая попытка уменьшать индекс при помощи daetools::reduceDAEIndex и затем при помощи daetools::reduceDAEToODE.

Создайте следующую систему дифференциальных алгебраических уравнений. Здесь, x1(t), x2(t), и x3(t) представляйте переменные состояния системы. Система также содержит выражения q1(t), q2(t), и q3(t) это не представляет переменные состояния.

eqs := [diff(x2(t),t) = q1(t) - x1(t),
        diff(x3(t),t) = q2(t) - 2*x2(t) - t*(q1(t)-x1(t)),
        q3(t) - t*x2(t) - x3(t) = 0];
vars := [x1(t), x2(t), x3(t)]

Используйте daetools::isLowIndexDAE проверять дифференциальный индекс системы. Для этой системы, daetools::isLowIndexDAE возвращает FALSE. Это означает, что дифференциальным индексом системы является 2 или выше.

daetools::isLowIndexDAE(eqs, vars)

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

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

newEquations = newEqs;
newVariables = newVars;
relations = R;
originalIndex = oldIndex
Warning: Index of reduced DAEs is larger than 1. [daetools::reduceDAEIndex]

Если daetools::reduceDAEIndex не может уменьшать полулинейную систему так, чтобы индексом был 0 или 1, попытайтесь использовать daetools::reduceDAEToODE. Эта функция может быть намного медленнее, поэтому она не рекомендуется как предпочтительный вариант.

[newEqs, constraintEqs, oldIndex] :=
    daetools::reduceDAEToODE(eqs, vars):

ODEs = eqs;
constraintEquations = constraintEqs;
originalIndex = oldIndex

Параметры

eqs

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

vars

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

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

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

Введенный в R2014b

Для просмотра документации необходимо авторизоваться на сайте