I wonder what the difference is between
function lorenz!(du, u, p, t)
du = [10.0 * (u[2] - u[1]), u[1] * (28.0 - u[3]) - u[2], u[1] * u[2] - (8 / 3) * u[3]]
end
and
function lorenz!(du, u, p, t)
du[1] = 10.0 * (u[2] - u[1])
du[2] = u[1] * (28.0 - u[3]) - u[2]
du[3] = u[1] * u[2] - (8 / 3) * u[3]
end
The first one doesn’t work when I do:
using DifferentialEquations
u0 = [1.0; 0.0; 0.0]
tspan = (0.0, 100.0)
prob = ODEProblem(lorenz!, u0, tspan)
sol = solve(prob)
and just assigns u0
:
I have a massive rhs and whereas I know I can assign elements to du
in a loop, I am just curious why the first approach fails. I thought that was because du
is a matrix, but it isn’t.