首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能停止ODE求解器(使用DifferentialEquations.jl)?

是否有可能停止ODE求解器(使用DifferentialEquations.jl)?
EN

Stack Overflow用户
提问于 2022-12-01 07:21:29
回答 1查看 42关注 0票数 6

我正在尝试解决一个ODE问题(与Julia一起),这个问题可以在满足特定条件时尽早停止。

假设我有一个Lorenz系统,如下所示

代码语言:javascript
复制
using DifferentialEquations

function lorenz!(du,u)
    du[1] = 10.0*(u[2]-u[1]);
    du[2] = u[1]*(28.0-u[3]) - u[2];
    du[3] = u[1]*u[2] - (8/3)*u[3];
end

u0 = [1.0;0.0;0.0]
tspan = (0.0, 100.0)

prob = ODEProblem(lorenz!,u0, tspan);
sol = solve(prob);

例如,当u3大于10时,我想停止ODE求解器,如下所示。

代码语言:javascript
复制
sol = solve(prob, stopcondition = u[3]>10);

但我不确定是否有可能在给定条件下阻止ODE求解器。

任何相关意见均应感谢:)

EN

回答 1

Stack Overflow用户

发布于 2022-12-01 08:23:07

是的,在terminate!(integrator)中使用事件处理系统功能。在这里看起来是这样的:

代码语言:javascript
复制
condition(u,t,integrator) = u[3] - 10 # Is zero when u[3] = 10
affect!(integrator) = terminate!(integrator)
cb = ContinuousCallback(condition,affect!)
sol = solve(prob, callback = cb);
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74638213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档