The solver is very rough though just noticed I need to get rid of
t = linspace(0,maximum(tsample),maximum(tsample))
Don't worry about silly mistakes like that but if you see anything wrong
with my style
On Thursday, May 22, 2014 4:06:04 PM UTC+1, sam cooper wrote:
>
> And here is the code for the solver:
> function odesolve(p::Vector{Float64},tsample::Vector{Int64},obsv::Vector{
> Int64},initp::Vector{Int64})
>
> t = linspace(0,maximum(tsample),maximum(tsample))
> const tnum = length(t)
> h = t[2]-t[1]
> error_flag = false
>
> # --- set initial values / free or defined---
>
> y = Array(Float64,length(initp),tnum)
> fun = Array(Float64,length(initp))
>
> y[:,1] = abs(p[initp])
>
> tnum = tnum-1
>
> for i = 1:tnum
> (fun,error_flag) = evaluate(y[:,i],p)
> y[:,i+1] = y[:,i] .+ (fun*h)
>
> if error_flag
> break;
> end
> end
> return (y[obsv,tsample],error_flag)
> end
>
>
>
>
>
> On Thursday, May 22, 2014 2:48:30 PM UTC+1, [email protected] wrote:
>>
>>
>>
>> Le jeudi 22 mai 2014 15:23:53 UTC+2, sam cooper a écrit :
>>>
>>> Hi,
>>>
>>> I have an inner loop function which uses a 'constant' tuple:
>>>
>>> fhandle = (expdat,obsv,expdev,t)
>>>
>>> with types
>>>
>>> fhandle::(Matrix{Float64},Vector{Int64},Float64,Vector{Int64})
>>>
>>> Currently I am passing fhandle to the function each time it's called and
>>> then reallocating a set of variables i.e.
>>>
>>> function sqrerror(fhandle::(Matrix{Float64},Vector{Int64},Float64,Vector
>>> {Int64}),p::Vector{Float64})
>>>
>>> (expdat,obsv,expdev,tsample) = fhandle
>>> (obs,error_flag) = odesolve(p,tsample,obsv)
>>>
>>> if error_flag
>>> return(1e16)
>>> end
>>> error_val = sum((expdat.-obs).^2,1)
>>> error_val = sum(error_val./(expdev.^2))
>>> return(error_val)
>>> end
>>>
>>>
>>> Only 'p' is changed each time the function is called but fhandle is
>>> constant but needs to be defined in another file really.
>>>
>>> Can I speed this up? I was thinking about using a module with const
>>> global variables but the documentation suggested global variables are
>>> slower.
>>>
>> Did you profile your code?
>>
>> From my experience (which you might not share), the most probable slow
>> par of the code would most certainly be "odesolve" in which case, fhandle
>> is not your problem. Please first profile your code and then let's see what
>> we can do for you.
>>
>>
>>>
>>> Thankyou in advance for any help and advice
>>>
>>> Best,
>>> Sam
>>>
>>>