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