Решатели установившегося состояния
solve(prob::SteadyStateProblem,alg;kwargs)
Используется для решения установившихся состояний в задаче, определенной с помощью prob
, с использованием алгоритма alg
. Если алгоритм не указан, будет выбран алгоритм по умолчанию.
Более полную документацию по нелинейным решателям для задач установившегося состояния см. в NonlinearSolve.jl. |
Рекомендуемые методы
DynamicSS
хорошо подходит в случае, если вы считаете, что у вас может быть несколько установившихся состояний или неверное начальное предположение. При наличии хорошего начального предположения метод SSRootfind
может работать быстрее. Для DynamicSS
во многих случаях адаптивный жесткий решатель, например метод Розенброка или BDF (Rodas5
или QNDF
), является хорошим способом использования очень больших временных шагов по мере приближения установившегося состояния.
Обратите внимание, что при использовании CVODE_BDF
может потребоваться задать начальную точку dt
с помощью dt=....
.
Полный список методов
SteadyStateDiffEq.jl
-
SSRootfind
: использует алгоритм поиска корней для нахождения установившегося состояния. По умолчанию используется NLsolve.jl. Другой алгоритм можно указать с помощью именованного аргументаnlsolve
. (Этот метод устарел, используйте вместо него NonlinearSolve.jl.) -
DynamicSS
: использует решатель ODE для нахождения установившегося состояния. Автоматически завершается при приближении к установившемуся состоянию.DynamicSS(alg;abstol=1e-8,reltol=1e-6,tspan=Inf)
требует, чтобы в качестве первого аргумента был указан алгоритм ODE. Абсолютный и относительный допуски задают условия завершения при приближении производной к нулю. Здесь внутренним образом используется обратный вызовTerminateSteadyState
из библиотеки обратных вызовов. Модельное время , за которое решается данное уравнение ODE, может быть ограниченоtspan
. Еслиtspan
— число, это эквивалентно передаче(zero(tspan), tspan)
.
Пример использования:
sol = solve(prob, SSRootfind())
sol = solve(prob, DynamicSS(Tsit5()))
using Sundials
sol = solve(prob, DynamicSS(CVODE_BDF()), dt = 1.0)