微分方程.jl
這是一套用 Julia 編寫的數值求解微分方程的套件,可在 Julia、Python 和 R 中使用。此軟體包範圍內的方程式包括:
- 離散方程式(函數映射、離散隨機(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 的比較
請參閱相應的博文
範例影像