Differential Equations & Scientific Computing
Supports ODEs, SDEs, DDEs, DAEs, PDEs (via MethodOfLines.jl), jump processes, stiff solvers (Rodas5P, QNDF), events/callbacks, sensitivity analysis, parameter estimation, ensemble simulations, GPU acceleration.
33.1 DifferentialEquations.jl
Supports ODEs, SDEs, DDEs, DAEs, PDEs (via MethodOfLines.jl), jump processes, stiff solvers (Rodas5P, QNDF), events/callbacks, sensitivity analysis, parameter estimation, ensemble simulations, GPU acceleration.
using DifferentialEquations, Plots
# Lotka–Volterra predator–prey system
function lotka!(du, u, p, t)
α, β, δ, γ = p
du[1] = α * u[1] - β * u[1] * u[2]
du[2] = δ * u[1] * u[2] - γ * u[2]
end
u0 = [10.0, 5.0]; tspan = (0.0, 30.0); p = (1.5, 1.0, 1.0, 3.0)
prob = ODEProblem(lotka!, u0, tspan, p)
sol = solve(prob, Tsit5(); saveat=0.1)
plot(sol, labels=["prey" "predator"])
sol(12.3) # continuous interpolation33.2 The SciML ecosystem
acausal symbolic modeling (like Modelica) chemical reaction networks physics-informed neural networks DiffEqFlux.jl / SciMLSensitivity.jl neural ODEs, adjoint sensitivities equation discovery (SINDy) probabilistic programming / Bayesian inference pharmacometrics (commercial) ClimaCore / Oceananigans.jl climate & ocean simulation industrial modeling platform
33.3 Probabilistic programming with Turing.jl
using Turing
@model function coinflip(y)
p ~ Beta(1, 1)
for i in eachindex(y)
y[i] ~ Bernoulli(p)
end
end
chain = sample(coinflip([1, 0, 1, 1, 1, 0]), NUTS(), 1000)