ITADN
SciML/BoundaryValueDiffEq.jl
SciML/BoundaryValueDiffEq.jl · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

BoundaryValueDiffEq

Join the chat at https://julialang.zulipchat.com #sciml-bridged Global Docs

Build Status codecov Package Downloads Aqua QA

ColPrac: Contributor's Guide on Collaborative Practices for Community Packages SciML Code Style

BoundaryValueDiffEq.jl 是 DifferentialEquations 生态系统中的一个组件包。它包含边界值问题求解器和实用工具。尽管它完全独立且可单独使用,但希望使用此功能的用户应查阅 DifferentialEquations.jl

API

BoundaryValueDiffEq.jl 是 SciML 通用接口的一部分,但可以独立于 DifferentialEquations.jl 使用。唯一的要求是用户向 solve 传递一个 BoundaryValueDiffEq.jl 算法。例如,我们可以使用 MIRK4() 算法求解 文档中的 BVP 教程

using BoundaryValueDiffEq
tspan = (0.0, pi / 2)
function simplependulum!(du, u, p, t)
    θ = u[1]
    dθ = u[2]
    du[1] = dθ
    du[2] = -9.81 * sin(θ)
end
function bc!(residual, u, p, t)
    residual[1] = u(pi / 4)[1] + pi / 2
    residual[2] = u(pi / 2)[1] - pi / 2
end
prob = BVProblem(simplependulum!, bc!, [pi / 2, pi / 2], tspan)
sol = solve(prob, MIRK4(), dt = 0.05)

可用求解器

有关可用求解器的列表,请参阅 DifferentialEquations.jl BVP 求解器页面。关于 solve 命令的选项,请参阅 通用求解器选项页面

控制预编译

可以通过 Preferences.jl 控制预编译

  • PrecompileMIRK -- 预编译 MIRK2 - MIRK6 算法(默认:true)。
  • PrecompileShooting -- 预编译单射击算法(默认:true)。
  • PrecompileMultipleShooting -- 预编译多重射击算法(默认:true)。
  • PrecompileMIRKNLLS -- 为欠定和超定 BVP 预编译 MIRK2 - MIRK6 算法(默认:false)。
  • PrecompileShootingNLLS -- 为欠定和超定 BVP 预编译单射击算法(默认:true)。
  • PrecompileMultipleShootingNLLS -- 为欠定和超定 BVP 预编译多重射击算法(默认:true )。

要在加载包之前设置这些偏好,请执行以下操作(将 PrecompileShooting 替换为您想要设置的偏好,或传入多个对以同时设置它们):

using Preferences, UUIDs
Preferences.set_preferences!(UUID("764a87c0-6b3e-53db-9096-fe964310641d"), "PrecompileShooting" => false)

在本地运行基准测试

我们在 benchmarks 文件夹中包含了一组小型基准测试。这些测试并不全面,主要用于在开发过程中跟踪回归。如需更全面的基准测试,请参阅 SciMLBenchmarks 仓库。

要在本地运行基准测试,请安装 AirspeedVelocity.jl 并在包目录中运行以下命令:

benchpkg BoundaryValueDiffEq --rev="master,<git sha for your commit>" --bench-on="master"