Дифференциальные алгебраические уравнения - это тип дифференциального уравнения, где одна или несколько производных зависимых переменных не присутствуют в уравнениях. Переменные, появляющиеся в уравнениях без их производной, называются алгебраическими, а наличие алгебраических переменных означает, что нельзя записать уравнения в явной форме , y). Вместо этого можно решить дисковые полки с помощью следующих форм:
ode15s и ode23t решатели могут решать линейно неявные задачи индекса-1 с сингулярной массовой матрицей (t, y), включая полуявные дисковые полки вида
(t, y, z).
В таком виде наличие алгебраических переменных приводит к сингулярной матрице массы, так как на главной диагонали имеется один или несколько нулей.
).
По умолчанию решатели автоматически проверяют сингулярность матрицы масс для обнаружения систем дисковых полок. Если вы знаете о сингулярности раньше времени, то вы можете установить MassSingular вариант odeset кому 'yes'. С дисковыми полками можно также предоставить решателю предположение о начальных условиях для 0 с помощью InitialSlope имущество odeset. Это дополнение к заданию обычных начальных условий для в вызове решателя.
ode15i решатель может решать более общие дисковые полки в полностью неявной форме
= 0.
В полностью неявной форме наличие алгебраических переменных приводит к сингулярной якобовской матрице. Это происходит потому, что по крайней мере один из столбцов в матрице гарантированно содержит все нули, так как производная этой переменной не появляется в уравнениях.
)
ode15i Для решателя необходимо указать начальные условия для 0 и y0. Также, в отличие от других решателей ОДУ ,ode15i требует, чтобы функция, кодирующая уравнения, приняла дополнительный ввод: odefun(t,y,yp).
DAE возникают в широком разнообразии систем, потому что законы физической консервации часто имеют формы, такие как z = 0. Еслиx, x', y, и y' определены явно в уравнениях, то это уравнение сохранения достаточно для решения для z без выражения для z'.
При решении дисковой полки можно задать начальные условия для 0 и y0. ode15i решатель требует, чтобы в качестве входных аргументов были указаны оба начальных условия. Для ode15s и ode23t решатели, начальное условие для 0 является необязательным (но может быть указано с помощью InitialSlope вариант odeset). В обоих случаях возможно, что указанные начальные условия не согласуются с уравнениями, которые вы пытаетесь решить. Начальные условия, конфликтующие друг с другом, называются несогласованными. Обработка исходных условий зависит от решателя:
ode15s и ode23t - Если начальное условие для 0 не задано, то решатель автоматически вычисляет согласованные начальные условия на основе начального условия, заданного для y0. Если задано несогласованное начальное условие для '0, то решатель рассматривает значения как догадки, пытается вычислить согласованные значения, близкие к предположениям, и продолжает решать проблему.
ode15i - Исходные условия, которые вы предоставляете решателю, должны быть непротиворечивыми, и ode15i не проверяет непротиворечивость предоставленных значений. Вспомогательная функция decic вычисляет для этой цели согласованные начальные условия.
Для DAE характерен их дифференциальный индекс, который является мерой их сингулярности. Дифференцируя уравнения, можно исключить алгебраические переменные, и если сделать это достаточно раз, то уравнения принимают форму системы явных ОДУ. Дифференциальный индекс системы дисковых полок - это количество производных, необходимое для выражения системы как эквивалентной системы явных ОДУ. Таким образом, ОДУ имеют дифференциальный индекс, равный 0.
Примером дисковой полки index-1 является
t).
Для этого уравнения можно взять одну производную, чтобы получить явную форму ОДУ
).
Примером дисковой полки index-2 является
) − y1.
Эти уравнения требуют, чтобы две производные были переписаны в явной форме ОДУ
k "(t).
ode15s и ode23t решатели решают только дисковые полки с индексом 1. Если индекс ваших уравнений равен 2 или выше, то нужно переписать уравнения как эквивалентную систему дисковых полок index-1. Всегда можно взять производные и переписать систему дисковых полок как эквивалентную систему дисковых полок с индексом 1. Помните, что если заменить алгебраические уравнения их производными, то вы могли бы снять некоторые ограничения. Если уравнения больше не включают исходные ограничения, то числовое решение может дрейфовать.
Если имеются символьные математические Toolbox™, см. дополнительные сведения в разделе Решение дифференциальных алгебраических уравнений (дисковые полки) (панель инструментов символьной математики).
Большинство вариантов в odeset работать, как и ожидалось, с решателями дисковых полок ode15s, ode23t, и ode15i. Тем не менее, одним заметным исключением является использование NonNegative вариант. NonNegative не поддерживает неявные решатели (ode15s, ode23t, ode23tb) применяется к проблемам с массовой матрицей. Поэтому этот параметр нельзя использовать для наложения ограничений неотрицательности на проблему дисковой полки, которая обязательно имеет матрицу массы в единственном числе. Для получения дополнительной информации см. [1].
Этот пример переформулирует систему ОДУ как систему дифференциальных алгебраических уравнений (DAE). Проблема Робертсона, найденная в hb1ode.m, является классической тестовой задачей для программ, решающих жесткие ОДУ. Система уравнений

hb1ode решает эту систему ОДУ до установившегося состояния с начальными условиями,
,
и.
Но уравнения также удовлетворяют линейному закону сохранения,

С точки зрения решения и исходных условий закон о сохранении является

Система уравнений может быть переписана как система DAE, используя закон сохранения для определения состояния.
При этом проблема преобразуется в систему дисковой полки.

Дифференциальный индекс этой системы равен 1, так как
для того, чтобы сделать эту систему ОДУ, требуется только одна производная. Поэтому никаких дальнейших преобразований перед решением системы не требуется.
Функция robertsdae кодирует эту систему дисковых полок. Сохранить robertsdae.m в текущей папке для выполнения примера.
function out = robertsdae(t,y)
out = [-0.04*y(1) + 1e4*y(2).*y(3)
0.04*y(1) - 1e4*y(2).*y(3) - 3e7*y(2).^2
y(1) + y(2) + y(3) - 1 ];
Полный код примера для этой формулировки проблемы Робертсона доступен в hb1dae.m.
Решение системы дисковых полок с помощью ode15s. Согласованные начальные условия для y0 очевидны на основе закона о сохранении. Использовать odeset для установки параметров:
Используйте матрицу постоянной массы для представления левой части системы уравнений.

Установите относительный допуск ошибки равным 1e-4.
Использовать абсолютный допуск 1e-10 для второго компонента решения, поскольку масштаб резко отличается от других компонентов.
Оставить 'MassSingular' опция при ее значении по умолчанию 'maybe' для тестирования автоматического обнаружения дисковой полки.
y0 = [1; 0; 0]; tspan = [0 4*logspace(-6,6)]; M = [1 0 0; 0 1 0; 0 0 0]; options = odeset('Mass',M,'RelTol',1e-4,'AbsTol',[1e-6 1e-10 1e-6]); [t,y] = ode15s(@robertsdae,tspan,y0,options);
Постройте график решения.
y(:,2) = 1e4*y(:,2); semilogx(t,y); ylabel('1e4 * y(:,2)'); title('Robertson DAE problem with a Conservation Law, solved by ODE15S');

[1] Шампин, Л. Ф., С. Томпсон, Дж. А. Кирзенка и Г. Д. Бирн. «Неотрицательные решения ОДУ». Прикладная математика и вычисления. т. 170, 2005, стр. 556-569.
ode15i | ode15s | ode23t | odeset