Решатели дифференциально-алгебраических уравнений

Рекомендуемые методы

Для небольшого количества дифференциально-алгебраических уравнений (DAE) со средней и низкой точностью в форме постоянной матрицы массы хорошим выбором являются методы Rosenbrock23 и Rodas4, которые получат хорошую эффективность, если матрица массы является постоянной. Rosenbrock23 лучше использовать при низкой точности (погрешность ошибок <1e-4), а Rodas4 — при высокой точности. Другие варианты при высокой точности — это Rodas5P и RadauIIA5.

Непостоянные матрицы массы не поддерживаются напрямую: пользователям рекомендуется преобразовать свои задачи путем подстановки в дифференциально-алгебраическое уравнение с постоянными матрицами массы.

Если задачу не удается определить в форме матрицы массы, рекомендуемым методом достижения высокой производительности является IDA из пакета Sundials.jl, если вы решаете задачи с Float64. Если требуются типы Julia, в настоящее время наилучшим методом является DFBDF, но ему еще требуются оптимизации.

Полный список методов

Схемы инициализации

Для всех методов OrdinaryDiffEq.jl можно настроить схему инициализации с общим именованным аргументом initializealg. Вот возможные варианты.

  • BrownFullBasicInit: для DAE Index-1 неявные DAE и полуявные DAE в форме матрицы массы. Сохраняет дифференциальные переменные постоянными. Требует du0 при использовании на DAEProblem.

  • ShampineCollocationInit: для DAE Index-1 неявные DAE и полуявные DAE в форме матрицы массы. Изменяет как дифференциальные, так и алгебраические переменные.

  • NoInit: явно отказывается от инициализации дифференциально-алгебраических уравнений.

OrdinaryDiffEq.jl (неявное уравнение ODE)

Эти методы из OrdinaryDiffEq предназначены для спецификаций DAEProblem.

  • DImplicitEuler — A-, L- и жестко стабильный адаптивный неявный метод Эйлера первого порядка

 — DABDF2 — A-, L-устойчивый адаптивный метод BDF второго порядка.

  • DFBDF — метод BDF адаптивного порядка с фиксированным ведущим коэффициентом и адаптивным временем, аналогичный ode15i или IDA в форме разделенных разностей.

OrdinaryDiffEq.jl (матрица масс)

Эти методы требуют, чтобы дифференциально-алгебраическое уравнение было ODEProblem в форме матрицы массы. Сведения о дополнительных параметрах решателей см. на странице решателей обыкновенных дифференциальных уравнений.

Стандартная эрмитова интерполяция, используемая для методов решения обыкновенных дифференциальных уравнений (ODE) в OrdinaryDiffEq.jl , неприменима к алгебраическим переменным. Таким образом, для следующих методов матриц массы используйте интерполяции (отсюда saveat) с осторожностью, если используется эрмитова интерполяция по умолчанию. Все методы, в которых упоминается специализированная интерполяция (и неявные методы решения обыкновенных дифференциальных уравнений), являются безопасными.

Методы Розенброка

  • ROS3P — A- и жестко устойчивый метод Розенброка третьего порядка. Сохраняет высокую точность при дискретизации нелинейных параболических дифференциальных уравнений в частных производных (PDE).

  • Rodas3 — A- и жестко устойчивый метод Розенброка третьего порядка.

  • RosShamp4 — A-устойчивый метод Розенброка четвертого порядка.

  • Veldd4 — D-устойчивый метод Розенброка четвертого порядка.

  • Velds4 — A-устойчивый метод Розенброка четвертого порядка.

  • GRK4T — эффективный метод Розенброка четвертого порядка.

  • GRK4A — A-устойчивый метод Розенброка четвертого порядка. В целом «анти-L-устойчивый», но эффективный.

  • Ros4LStab — L-устойчивый метод Розенброка четвертого порядка.

  • Rodas4 — A- и жестко устойчивый метод Розенброка четвертого порядка с жестко совместимым интерполянтом третьего порядка

  • Rodas42 — A- и жестко устойчивый метод Розенброка четвертого порядка с жестко совместимым интерполянтом третьего порядка

  • Rodas4P — A- и жестко устойчивый метод Розенброка четвертого порядка с жестко совместимым интерполянтом третьего порядка. Четвертого порядка для линейно-параболических задач и третьего порядка точности для нелинейно-параболических задач (в противопоставление более низкому порядку, если не исправлено).

  • Rodas4P2 — L- и жестко устойчивый метод Розенброка четвертого порядка с жестко совместимым интерполянтом третьего порядка. Четвертого порядка для линейно-параболических задач и третьего порядка точности для нелинейно-параболических задач. Это улучшение Roadas4P и в случае неточных якобианов метод W второго порядка.

  • Rodas5 — A- и жестко устойчивый метод Розенброка пятого порядка с жестко совместимым интерполянтом четвертого порядка.

  • Rodas5P — A- и жестко устойчивый метод Розенброка пятого порядка с жестко совместимым интерполянтом четвертого порядка. Имеет улучшенную стабильность в реализации адаптивной дискретизации по времени.

Методы Розенброка — Ваннера

  • Rosenbrock23 — L-устойчивый метод Розенброка W второго и третьего порядков, хорошо подходящий для очень жестких уравнений с осцилляциями при низких погрешностях. Жестко совместимая интерполяция второго порядка.

  • Rosenbrock32 — A-устойчивый метод Розенброка W третьего и второго порядков, хорошо подходящий для умеренно жестких уравнений без осцилляций при низких погрешностях. Обратите внимание, что этот метод имеет тенденцию к неустойчивости в присутствии осцилляций, поэтому используйте его с осторожностью. Жестко совместимая интерполяция второго порядка.

  • RosenbrockW6S4OS — L-устойчивый метод Розенброка W четвертого порядка (только фиксированный шаг).

  • ROS34PW1a — L-устойчивый метод Розенброка W четвертого порядка.

  • ROS34PW1b — L-устойчивый метод Розенброка W четвертого порядка.

  • ROS34PW2 — жестко точный метод Розенброка W четвертого порядка для алгебраических уравнений в частных производных (PDAE).

  • ROS34PW3 — строго A-устойчивый (Rinf~0,63) метод Розенброка W четвертого порядка.

!!! note

Rosenbrock23 и Rosenbrock32 имеют жестко совместимую интерполяцию, но эта интерполяция небезопасна для алгебраических переменных. Таким образом, используйте интерполяции (отсюда saveat) с осторожностью, если используется эрмитова интерполяция по умолчанию.

Методы SDIRK

  • RadauIIA5 - An A-B-L stable fully implicit Runge-Kutta method with internal tableau complex basis transform for efficiency.

SDIRK Methods

  • ImplicitEuler — порядок этапов 1. A-, B- и L-устойчивый. Адаптивная дискретизация по времени благодаря оценке разделенных разностей с помощью памяти. Сохранение сильной устойчивости (SSP).

  • ImplicitMidpoint — порядок этапов 1. Симплектический. Полезен, когда требуется симплектическая интеграция.

  • Trapezoid — A-устойчивый симметричный метод ESDIRK второго порядка. «Почти симплектический» без численного затухания. Также известен как метод Кранка — Николсон, когда применяется к дифференциальным уравнениям в частных производных (PDE). Адаптивная дискретизация по времени с помощью разделенных разностей в памяти. Подходит для крайне жестких уравнений, не являющихся осцилляционными.

Многошаговые методы

Квазипостоянное пошаговое выполнение — это стратегия дискретизации по времени, соответствующая классическим интеграторам GEAR, LSODE и ode15s. Методы переменных множителей соответствуют идеям классического интегратора EPISODE и ранних выпусков VODE. Методы фиксированного ведущего коэффициента (FLC) соответствуют поведению классического интегратора VODE и Sundials CVODE.

  • QNDF1 — адаптивный L-устойчивый метод функции численного дифференцирования (NDF) первого порядка с квазипостоянными временными шагами. Необязательный параметр kappa по умолчанию имеет оптимальное по точности значение Шампина -0.1850.

  • QBDF1 — адаптивный L-устойчивый метод BDF первого порядка. Эквивалентен неявному методу Эйлера, но использует средство оценки погрешности BDF.

  • ABDF2 — адаптивный L-устойчивый многошаговый метод BDF второго порядка c фиксированным ведущим коэффициентом.

  • QNDF2 — адаптивный L-устойчивый метод функции численного дифференцирования (NDF) второго порядка с квазипостоянными временными шагами.

  • QBDF2 — адаптивный L-устойчивый метод BDF второго порядка, использующий квазипостоянные временные шаги.

  • QNDF — метод NDF с адаптивным порядком и квазипостоянными временными шагами. Использует оптимальные по точности значения Шампина kappa в качестве значений по умолчанию (имеет именованный аргумент для кортежа коэффициентов kappa).

  • QBDF — метод BDF с адаптивным порядком и квазипостоянными временными шагами.

  • FBDF — метод BDF адаптивного порядка с фиксированным ведущим коэффициентом и адаптивным временем, аналогичный ode15i или CVODE_BDF в форме разделенных разностей.

Sundials.jl

Обратите внимание, что эта настройка автоматически не включена в DifferentialEquations.jl. Для использования следующих алгоритмов необходимо установить и использовать Sundials.jl:

using Pkg
Pkg.add("Sundials")
using Sundials
  • IDA: полностью неявный метод BDF фиксированного ведущего коэффициента. Эффективен для больших систем.

Дополнительные сведения об управлении решателями Sundials.jl см. на странице Sundials с подробностями об API решателей

DASKR.jl

DASKR.jl не включен автоматически в DifferentialEquations.jl. Для использования этого алгоритма необходимо установить и использовать пакет:

using Pkg
Pkg.add("DASKR")
using DASKR
  • daskr — это оболочка для известного алгоритма DASKR.

Дополнительные сведения об управлении решателями DASKR.jl см. на странице DASKR с подробностями об API решателя

DASSL.jl

  • dassl — собственная реализация Julia алгоритма DASSL.

ODEInterfaceDiffEq.jl

Эти методы требуют, чтобы дифференциально-алгебраическое уравнение было ODEProblem в форме матрицы массы. Сведения о дополнительных параметрах решателей см. на странице решателей обыкновенных дифференциальных уравнений.

  • seulex — алгоритм экстраполяции, основанный на линейном неявном методе Эйлера.

  • radau — неявный метод Рунге — Кутты (Radau IIA) с переменным порядком от 5 до 13.

  • radau5 — неявный метод Рунге — Кутты (Radau IIA) пятого порядка.

  • rodas — метод Розенброка порядка 4(3).