exponenta event banner

decic

Поиск согласованных начальных условий для неявной системы ОДУ первого порядка с алгебраическими ограничениями

Описание

пример

[y0,yp0] = decic(eqs,vars,constraintEqs,t0,y0_est,fixedVars,yp0_est,options) находит непротиворечивые начальные условия для системы неявных обыкновенных дифференциальных уравнений первого порядка с алгебраическими ограничениями, возвращаемыми reduceDAEToODE функция.

Требование [eqs,constraintEqs] = reduceDAEToODE(DA_eqs,vars) уменьшает систему дифференциальных алгебраических уравнений DA_eqs в систему неявных ОДУ eqs. Он также возвращает уравнения ограничений, обнаруженные во время сокращения системы. Для переменных этой системы ОДУ и их производных, decic находит непротиворечивые начальные условия y0, yp0 в то время t0.

Замена числовых значений y0, yp0 в дифференциальные уравнения subs(eqs, [t; vars(t); diff(vars(t))], [t0; y0; yp0]) и уравнения ограничений subs(constr, [t; vars(t); diff(vars(t))], [t0; y0; yp0]) создает нулевые векторы. Здесь, vars должен быть вектором столбца.

y0_est определяет числовые оценки для значений переменных vars в то время t0, и fixedVars указывает значения в y0_est это не должно изменяться во время численного поиска. Необязательный аргумент yp0_est позволяет задать числовые оценки для значений производных переменных vars в то время t0.

Примеры

Поиск непротиворечивых начальных условий для системы ОДУ

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

Создайте следующую дифференциальную алгебраическую систему.

syms x(t) y(t)
DA_eqs = [diff(x(t),t) == cos(t) + y(t),...
          x(t)^2 + y(t)^2 == 1];
vars = [x(t); y(t)];

Использовать reduceDAEToODE преобразование этой системы в систему неявных ОДУ.

[eqs, constraintEqs] = reduceDAEToODE(DA_eqs, vars)
eqs =
                 diff(x(t), t) - y(t) - cos(t)
 - 2*x(t)*diff(x(t), t) - 2*y(t)*diff(y(t), t)
 
constraintEqs =
1 - y(t)^2 - x(t)^2

Создайте набор опций, задающий числовые допуски для числового поиска.

options = odeset('RelTol', 10.0^(-7), 'AbsTol', 10.0^(-7));

Фиксация значений t0 = 0 для временных и численных оценок для согласованных значений переменных и их производных.

t0 = 0;
y0_est = [0.1, 0.9];
yp0_est = [0.0, 0.0];

Ограничение можно рассматривать как алгебраическое уравнение для переменной. x с фиксированным параметром y. Для этого установите fixedVars = [0 1]. Кроме того, его можно рассматривать как алгебраическое уравнение для переменной y с фиксированным параметром x. Для этого установите fixedVars = [1 0].

Сначала задайте начальное значение x(t0) = y0_est(1) = 0.1.

fixedVars = [1 0];
[y0,yp0] = decic(eqs,vars,constraintEqs,t0,y0_est,fixedVars,yp0_est,options)
y0 =
    0.1000
    0.9950

yp0 =
    1.9950
   -0.2005

Теперь, изменить fixedVars кому [0 1]. Это исправляет y(t0) = y0_est(2) = 0.9.

fixedVars = [0 1];
[y0,yp0] = decic(eqs,vars,constraintEqs,t0,y0_est,fixedVars,yp0_est,options)
y0 =
   -0.4359
    0.9000

yp0 =
    1.9000
    0.9202

Убедитесь, что эти начальные значения являются совместимыми начальными значениями, удовлетворяющими уравнениям и ограничениям.

subs(eqs, [t; vars; diff(vars,t)], [t0; y0; yp0])
ans =
 0
 0
subs(constraintEqs, [t; vars; diff(vars,t)], [t0; y0; yp0])
ans =
0

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

свернуть все

Система неявных обыкновенных дифференциальных уравнений, заданная как вектор символических уравнений или выражений. Здесь выражения представляют уравнения с нулевой правой стороной.

Как правило, используются выражения, возвращаемые reduceDAEToODE.

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

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

Уравнения ограничений, встречающиеся во время сокращения системы, заданные как вектор символьных уравнений или выражений. Эти выражения или уравнения зависят от переменных vars, но не на их производных.

Как правило, используются уравнения ограничений, возвращаемые reduceDAEToODE.

Начальное время, указанное как число.

Оценки для значений переменных vars в начальный момент времени t0, задается как числовой вектор.

Входной вектор, указывающий, какие элементы y0_est являются фиксированными значениями, заданными как вектор с 0s или 1с. Фиксированные значения y0_est соответствуют значениям 1 в fixedVars. Эти значения не изменяются во время числового поиска. Нулевые значения в fixedVars соответствуют этим переменным в y0_est для которых decic решает уравнения ограничений. Количество 0s должны совпадать с числом уравнений ограничений. Матрица якобиана ограничений относительно переменных vars(fixedVars == 0) должен быть обратимым.

Оценки для значений первых производных переменных vars в начальный момент времени t0, задается как числовой вектор.

Опции числового поиска, указанные как структура опций, возвращаемые odeset. Например, здесь можно указать допуски для числового поиска.

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

свернуть все

Согласованные начальные значения для переменных, возвращаемые в виде числового вектора столбца.

Согласованные начальные значения для первых производных переменных, возвращаемые в виде числового вектора-столбца.

Представлен в R2014b