While solving differential equation encountered this error:
MethodError: objects of type Float64 are not callable
This error is returned while using the solve() function of “Differential equations” package. What can be a reason of this error? A wrong data format given to solve()?
The reason for the error is that a float is tried to be called:
julia> a = 1.2
1.2
julia> a()
ERROR: MethodError: objects of type Float64 are not callable
Presumably you provide a float somewhere where you should give a function. However, without an example it is hard to tell. (And please do make it a MWE, a minimal working example).
And to add a little heuristic to @mauro3’s answer, I find that this happens to me when I do something like 2(a + b * c)
. Notice that the literal 2(
does not get expanded to 2*(
, i.e. there’s no implicit multiplication and instead it does a call. I would search for that happening in your derivative f
somewhere.
julia> a,b,c = 1,1,1
(1, 1, 1)
julia> 2(a + b * c)
4
Oh I thought it was literals that did it too. Must just be non-literals.
julia> a,b,c = 2.0,2.0,2.0
(2.0, 2.0, 2.0)
julia> a(b-c)
ERROR: MethodError: objects of type Float64 are not callable
Stacktrace:
[1] top-level scope at none:0
Yes, a(b)
is indeed a function call
Did you have a literal parameter in one code, and then refactor that later to use the passed in parameter p[i]
, but it had the implicit multiplication?
Without seeing the code this is as much help as we can give, but I would guess we’re pretty close .
It was a mistake of kind 2(a + b * c)
. Forgot a multiplication sign. Thanks everybody for help!