本文为使用 DifferentialEquations.jl
求解微分方程的一个例子。
安装求解器
1
| ]add DifferentialEquations
|
为方便绘图,建议安装 Plots.jl
这个包
一个例子
在这个实例中,我们将求解方程
$$
\begin{cases}
\frac{\rm du}{\rm dt}=1.01u\\
u(0)=0.5
\end{cases}
$$
定义问题
1 2 3 4 5 6 7
| function eq!(du, u, p, t) du = p*u end u0 = 0.5 p = 1.01 tspan = (0.0,1.0) prob = ODEProblem(eq!,u0,tspan,p)
|
求解及求解器参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| sol = solve(prob)
sol = solve(prob,reltol=1e-6)
sol = solve(prob,saveat=0.1)
sol = solve(prob,save_everystep=false)
sol = solve(prob,tstops=[1.0, 1.5, 2.0])
sol = solve(prob,dense=false)
|
绘图
绘图需要使用 Plots.jl
这个包
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| plot(sol)
plot(sol,denseplot=false)
plot(sol, tspan=(0.0,1.0))
plot(sol,vars=[1])
savefig("myplot.png")
|
查看解
更多例子及用法
参考官方文档:https://diffeq.sciml.ai/stable/