Dear Alasdair, There is all sorts of oddness with the ODE API, which appears to be in a bit of flux at the moment, so I haven't filed any issues. For example, ode23 really should only accept a span, but will accept a vector of any length. It would make sense to use types to enforce this; perhaps using
(F::Function, tfinal::{T}, y0::AbstractVector{T}) for a final time (F::Function, tspan::(T,T), y0::AbstractVector{T}) for a span (F::Function, tvec::AbstractVector{T}, y0::AbstractVector{T}) for pre-specified times, and so on. Also, ode23 will accept an Array{Float64,1} for initial values, but ode4, which I'm currently using as it allows a fixed set of times to be specified out of the box (needed as I'm fitting an ODE model to data) accepts a column vector Array{Float64,2}. Best Simon On Tuesday, January 7, 2014 11:04:18 AM UTC, Alasdair McAndrew wrote: > > Actually, I've looked at > https://github.com/JuliaLang/ODE.jl/blob/master/test/test_ode.jl and > attempted: > > t,x = > ode.ode45((t,x)->[-beta*x[1]*x[2],beta*x[1]*x[2]-gamma*x[2],gamma*x[2]],[0,14],[760.,3.,0.]); > > where x[1], x[2] and x[3] are S, I, R respectively, and the parameters > beta and gamma were defined earlier. This seems to work well. I suppose > there's a way of using S, I, R instead of x[1], x[2], x[3] here... > > Sundials may well be the perfect solution, but I couldn't get it to work, > and the documentation is daunting, to say the least! > > On Tuesday, January 7, 2014 9:58:54 PM UTC+11, Ivar Nesje wrote: >> >> This seems likely to be caused by changes in Julia. The fix will probably >> involve a bug report to https://github.com/JuliaLang/ODE.jl and some >> code reading and testing. If you see that the commit count on that >> repository is 11 it is quite possible that it does not receive the care ODE >> solvers deserve in a language like Julia. >> >> I am not sure, but Sundials.jl <https://github.com/JuliaLang/Sundials.jl> >> might >> be an option, but when I tried it last time it was no automatic script for >> compiling and installing the dependencies. >> >> >> >> kl. 11:23:33 UTC+1 tirsdag 7. januar 2014 skrev Alasdair McAndrew >> følgende: >>> >>> I have copied the SIR model here: >>> http://phylodynamics.blogspot.co.uk/2013/07/differential-equation-modeling-with.htmlwhich >>> works fine with ode23. But ode45, which would seem to have the same >>> syntax, throws an error: >>> >>> julia> sol = ode.ode45((t,x)->SIR(t,x,p),t,inits); >>> ERROR: InexactError() >>> in setindex! at array.jl:471 >>> in oderkf at /opt/julia/usr/share/julia/site/v0.3/ODE/src/ODE.jl:217 >>> in ode45_dp at /opt/julia/usr/share/julia/site/v0.3/ODE/src/ODE.jl:277 >>> >>> Does anybody know what's going on here, and how I can overcome it? In >>> other words, how do I use ode45? Thanks! >>> >>> >>>