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 находит сопоставимые начальные условия y0yp0 в то время t0.

Замена численными значениями y0yp0 в дифференциальные уравнения 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 или 1s. Фиксированные значения y0_est соответствуйте значениям 1 в fixedVars. Эти значения не изменяются во время числового поиска. Нулевые записи в fixedVars соответствуйте тем переменным в y0_est для которого decic решает уравнения ограничений. Количество 0s должен совпасть с количеством уравнений ограничений. Якобиевская матрица ограничений относительно переменных vars(fixedVars == 0) должно быть обратимым.

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

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

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

свернуть все

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

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

Введенный в R2014b