Решатели установившегося состояния

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)