SciML / DiffEqDocs.jl

Documentation for the DiffEq differential equations and scientific machine learning (SciML) ecosystem
https://docs.sciml.ai/DiffEqDocs/stable/
Other
273 stars 242 forks source link

Small bug in uncertainty quantification #96

Closed finmod closed 6 years ago

finmod commented 6 years ago

The last call to use solver Vern7 instead of Tsit5 with Lorenz:

tspan = (0.0,40.0) prob = ODEProblem(g,u0,tspan) cb = AdaptiveProbIntsUncertainty(7) monte_prob = MonteCarloProblem(prob) sim = solve(monte_prob,Vern7(),num_monte=100,callback=cb,reltol=1e-6) using Plots; plotly(); plot(sim,vars=(0,1),linealpha=0.4)

gives:

MethodError: no method matching getindex(::Void, ::Int64)

Stacktrace: [1] #573 at .\asyncmap.jl:178 [inlined] [2] foreach(::Base.##573#575, ::Array{Any,1}) at .\abstractarray.jl:1733 [3] maptwice(::Function, ::Channel{Any}, ::Array{Any,1}, ::UnitRange{Int64}, ::Vararg{UnitRange{Int64},N} where N) at .\asyncmap.jl:178 [4] wrap_n_exec_twice(::Channel{Any}, ::Array{Any,1}, ::Base.Distributed.##204#207{CachingPool}, ::Function, ::UnitRange{Int64}, ::Vararg{UnitRange{Int64},N} where N) at .\asyncmap.jl:154 [5] #async_usemap#558(::Function, ::Void, ::Function, ::DiffEqMonteCarlo.##4#7{DiffEqBase.MonteCarloProblem{DiffEqBase.ODEProblem{Array{Float64,1},Float64,true,Void,LorenzExample,Void,Void,UniformScaling{Int64},DiffEqBase.StandardODEProblem},DiffEqBase.##238#251,DiffEqBase.##237#250,DiffEqBase.##239#252,Array{Any,1}},OrdinaryDiffEq.Vern7,Tuple{Tuple{Symbol,DiffEqBase.DiscreteCallback{DiffEqUncertainty.##3#4,DiffEqUncertainty.AdaptiveProbIntsCache,DiffEqBase.#INITIALIZE_DEFAULT}},Tuple{Symbol,Float64}}}, ::UnitRange{Int64}, ::Vararg{UnitRange{Int64},N} where N) at .\asyncmap.jl:103 [6] (::Base.#kw##async_usemap)(::Array{Any,1}, ::Base.#async_usemap, ::Function, ::UnitRange{Int64}, ::Vararg{UnitRange{Int64},N} where N) at .\:0 [7] (::Base.#kw##asyncmap)(::Array{Any,1}, ::Base.#asyncmap, ::Function, ::UnitRange{Int64}) at .\:0 [8] #pmap#203(::Bool, ::Int64, ::Void, ::Array{Any,1}, ::Void, ::Function, ::CachingPool, ::Function, ::UnitRange{Int64}) at .\distributed\pmap.jl:126 [9] (::Base.Distributed.#kw##pmap)(::Array{Any,1}, ::Base.Distributed.#pmap, ::CachingPool, ::Function, ::UnitRange{Int64}) at .\:0 [10] solve_batch(::DiffEqBase.MonteCarloProblem{DiffEqBase.ODEProblem{Array{Float64,1},Float64,true,Void,LorenzExample,Void,Void,UniformScaling{Int64},DiffEqBase.StandardODEProblem},DiffEqBase.##238#251,DiffEqBase.##237#250,DiffEqBase.##239#252,Array{Any,1}}, ::OrdinaryDiffEq.Vern7, ::Symbol, ::UnitRange{Int64}, ::Int64, ::Tuple{Symbol,DiffEqBase.DiscreteCallback{DiffEqUncertainty.##3#4,DiffEqUncertainty.AdaptiveProbIntsCache,DiffEqBase.#INITIALIZE_DEFAULT}}, ::Vararg{Any,N} where N) at C:\Users\Denis.julia\v0.6\DiffEqMonteCarlo\src\solve.jl:44 [11] macro expansion at C:\Users\Denis.julia\v0.6\DiffEqMonteCarlo\src\solve.jl:28 [inlined] [12] macro expansion at .\util.jl:293 [inlined] [13] #solve#1(::Int64, ::Int64, ::Int64, ::Symbol, ::Array{Any,1}, ::Function, ::DiffEqBase.MonteCarloProblem{DiffEqBase.ODEProblem{Array{Float64,1},Float64,true,Void,LorenzExample,Void,Void,UniformScaling{Int64},DiffEqBase.StandardODEProblem},DiffEqBase.##238#251,DiffEqBase.##237#250,DiffEqBase.##239#252,Array{Any,1}}, ::OrdinaryDiffEq.Vern7, ::Type{Val{true}}) at C:\Users\Denis.julia\v0.6\DiffEqMonteCarlo\src\solve.jl:22 [14] (::DiffEqBase.#kw##solve)(::Array{Any,1}, ::DiffEqBase.#solve, ::DiffEqBase.MonteCarloProblem{DiffEqBase.ODEProblem{Array{Float64,1},Float64,true,Void,LorenzExample,Void,Void,UniformScaling{Int64},DiffEqBase.StandardODEProblem},DiffEqBase.##238#251,DiffEqBase.##237#250,DiffEqBase.##239#252,Array{Any,1}}, ::OrdinaryDiffEq.Vern7, ::Type{Val{true}}) at .\:0 (repeats 2 times) [15] include_string(::String, ::String) at .\loading.jl:522

ChrisRackauckas commented 6 years ago

You didn't pass the parameters to the ODEProblem.

prob = ODEProblem(g,u0,tspan,p)
ChrisRackauckas commented 6 years ago

Ooh, docs issue. Fixed.