Hello!

I’m having trouble with the following code. As of now it’s working fine, but if I change y0 (Float64) to y0[1] (Vector{Float64}) and dy to dy[1], it returns a wrong result.

Since it’s a simple problem I must be missing something important. Thanks in advance!

```
using DifferentialEquations
function teste_step!(dy, y, t)
b = 50
dy = (650.0 - 628.0) * (exp((300.0 - t)/b) / (b * (exp((300.0 - t)/b)+1.0)^2.0 ))
return dy
end
# y0 = zeros(1)
y0 = 628
t_span = (0, 600.0)
prob = ODEProblem(teste_step!, y0, t_span)
sol = solve(prob)
```

I think it has something to do with the argument placement in `teste_step!`

?

This seems to give the desired result:

```
function teste_step!(dy, y, p, t)
y0, b, c, d = p
dy[1] = (c - y0) * (exp((d - t)/b) / (b * (exp((d - t)/b)+1.0)^2.0 ))
return dy
end
y0 = [628.0]
p = [y0[1], 50.0, 650.0, 300.0]
t_span = (0, 600.0)
prob = ODEProblem(teste_step!, y0, t_span, p)
sol = solve(prob)
```

I put all the important looking constants into a parameters vector (just gave them arbitrary names) and that seems to solve the problem. Maybe someone else can comment on the subtleties of including/excluding a parameters argument. It’s weird that it effects the `Vector{Float64}`

case and not the `Float64`

case.

1 Like

Yes, either the in-place form or out of place:

```
function teste_step(y, p, t)
b = 50
(650.0 - 628.0) * (exp((300.0 - t)/b) / (b * (exp((300.0 - t)/b)+1.0)^2.0 ))
end
y0 = 628
t_span = (0, 600.0)
prob = ODEProblem(teste_step!, y0, t_span)
sol = solve(prob)
```

It has to be one of the two. See Ordinary Differential Equations · DifferentialEquations.jl