微分方程.jl
这是一套用 Julia 编写的数值求解微分方程的套件,可在 Julia、Python 和 R 中使用。该包的目的是为各种微分方程提供高效的 Julia 求解器实现。该软件包范围内的方程包括:
- 离散方程(函数映射、离散随机(Gillespie/Markov)模拟)
- 常微分方程 (ODE)
- 分割和分区 ODE(辛积分器、IMEX 方法)
- 随机常微分方程(SODE 或 SDE)
- 随机微分代数方程 (SDAE)
- 随机微分方程(RODE 或 RDE)
- 微分代数方程 (DAE)
- 时滞微分方程 (DDE)
- 中性、延迟和代数延迟微分方程(NDDE、RDDE 和 DDAE)
- 随机时滞微分方程 (SDDE)
- 对随机中性、延迟和代数延迟微分方程(SNDDE、SRDDE 和 SDDAE)的实验支持
- 混合离散和连续方程(混合方程、跳跃扩散)
- (随机)偏微分方程 ((S)PDE)(采用有限差分法和有限元法)
经过良好优化的微分方程求解器被评为经典算法的最快实现之一。它还包括最近研究的算法,这些算法通常优于“标准”C/Fortran 方法,以及针对高精度和 HPC 应用程序优化的算法。同时,它封装了经典的 C/Fortran 方法,可以在需要时轻松切换到它们。使用不同语言和包的不同方法求解微分方程可以通过更改一行代码来完成,从而可以轻松进行基准测试,以确保您使用尽可能最快的方法。
DifferentialEquations.jl 与 Julia 包 sphere 集成:
- 通过 CUDA.jl 和 DiffEqGPU.jl 进行 GPU 加速
- 使用 Symbolics.jl 自动稀疏检测
- 使用 SparseDiffTools.jl 自动雅可比着色,可以快速解决稀疏或结构化(三对角、带状、块带等)雅可比行列式的问题
- 允许使用 LinearSolve.jl 指定线性求解器以获得最大效率
- 进度表与 Visual Studio Code IDE 集成,以估计解决问题的时间
- 自动绘制时间序列和相位图
- 内置插值
- 常见 C/Fortran 方法的包装,例如 Sundials 和 Hairer's radau
- BigFloats 和 Arbfloats 的任意精度
- 任意数组类型,允许定义矩阵和分布式数组上的微分方程
- 使用 Unitful 进行单元检查算术
此外,DifferentialEquations.jl 还具有内置分析功能,包括:
- 用于快速梯度计算的前向和伴随灵敏度分析(自动微分)
- 参数估计和贝叶斯分析
- 使用 DiffEqFlux.jl 的神经微分方程可实现高效的科学机器学习(科学 ML)和科学 AI。
- 自动分布式、多线程和 GPU 并行集成模拟
- 全局敏感性分析
- 不确定性量化
这提供了速度和生产力功能的强大组合,可帮助您更快地求解和分析微分方程。
有关使用该包的信息,请参阅稳定文档。使用包含未发布功能的文档版本的开发中文档。
所有算法都经过彻底测试,以通过收敛测试确保准确性。这些算法经过不断的测试以证明其正确性。 IJulia 教程笔记本可以在 DiffEqTutorials.jl 中找到。基准可以在 DiffEqBenchmarks.jl 中找到。如果您发现任何方程式似乎有错误,请提出问题。
如果您有任何疑问,或者只是想讨论求解器/使用包,请随时在 Gitter 频道中聊天。对于错误报告、功能请求等,请提交问题。如果您有兴趣做出贡献,请参阅开发人员文档。
支持和引用
该生态系统中的软件是作为学术研究的一部分而开发的。如果您想帮助支持它,请为存储库加注星标,因为此类指标可能会帮助我们在未来获得资金。如果您使用 SciML 软件作为研究、教学或其他活动的一部分,如果您能引用我们的工作,我们将不胜感激。请参阅我们的引文页面以获取指南。
视频教程

视频介绍

与 MATLAB、R、Julia、Python、C、Mathematica、Maple 和 Fortran 的比较
请参阅相应的博文
示例图像