求解最简单的微分方程,几个代码有微小改动,希望各位给予改进建议,谢谢!
求解最简单的微分方程,几个代码有微小改动,希望各位给予改进建议,谢谢!
请直接发代码, 用截图很难让别人帮你.
可以多试几个solvers. 这种只有一个变量的微分方程用 f(u, p, t)
的定义就好, 不要用 f(du, u, p, t)
的定义.
julia> using OrdinaryDiffEq, BenchmarkTools
julia> f(u, p, t) = 2t; prob = ODEProblem(f, 0., (0., 5.))
ODEProblem with uType Float64 and tType Float64. In-place: false
timespan: (0.0, 5.0)
u0: 0.0
julia> @btime sol = solve($prob, $(Tsit5()), reltol=1e-3, abstol=1e-6);
8.092 μs (85 allocations: 30.64 KiB)
julia> @btime sol = solve($prob, $(Vern6()), reltol=1e-3, abstol=1e-6);
8.410 μs (87 allocations: 32.91 KiB)
julia> @btime sol = solve($prob, $(DP5()), reltol=1e-3, abstol=1e-6);
8.463 μs (84 allocations: 29.70 KiB)
julia> @btime sol = solve($prob, $(BS3()), reltol=1e-3, abstol=1e-6);
7.573 μs (85 allocations: 28.72 KiB)
julia> @btime sol = solve($prob, $(RK4()), reltol=1e-3, abstol=1e-6);
7.840 μs (83 allocations: 28.30 KiB)
当然, 最快的就是 sol(t) = t^2
…
你的方法不错,非常感谢