# ODEs using Element-wise vector multiplication

**URL:** <https://discourse.julialang.org/t/odes-using-element-wise-vector-multiplication/51332>\
**Category:** General Usage\
**Tags:** question, diffeq\
**Created:** [December 6, 2020, 3:05am UTC](https://discourse.julialang.org/t/odes-using-element-wise-vector-multiplication/51332 "2020-12-06T03:05:04Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jonlym](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jonlym/32/20007_2.png) [@jonlym](https://discourse.julialang.org/u/jonlym)\
**Post date:** [December 6, 2020, 3:05am UTC](https://discourse.julialang.org/t/odes-using-element-wise-vector-multiplication/51332/1 "2020-12-06T03:05:04Z")

</div>

Hi All,

I’m new to Julia. I would like to solve a series of ODEs but noticed the solution does not update when I use element-wise vector multiplication (see the code snippet and plot below). Why does `f1!` solve correctly whereas `f2!` doesn’t?

**Code Snippet**

```julia
using DifferentialEquations
using Plots

w = [0.1 0.2];

# Scalar multiplication
function f1!(du, u, p, t)
    du[1] = u[1]*w[1];
    du[2] = u[2]*w[2];
end

# Element-wise vector multiplication
function f2!(du, u, p, t)
    du = u.*w;
end

u0 = [1.0, 2.0];
tspan = (0.0, 1.0);

prob1 = ODEProblem(f1!, u0, tspan);
sol1 = solve(prob1);

prob2 = ODEProblem(f2!, u0, tspan);
sol2 = solve(prob2);

plot(sol1,
     labels=["f1! S1" "f1! S2"],
     color=[:red :blue],
     linestyle=:solid);

plot!(sol2,
      labels=["f2! S1" "f2! S2"],
      color=[:red :blue],
      linestyle=:dash);

savefig("C:\\Users\\jonat\\Desktop\\result.png");

```

**Result**  
 ![result1](https://global.discourse-cdn.com/julialang/original/3X/9/5/95f66f4ff8fc1f13769fd2818f430b5483c629dd.png)

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [December 6, 2020, 3:13am UTC](https://discourse.julialang.org/t/odes-using-element-wise-vector-multiplication/51332/2 "2020-12-06T03:13:13Z")

</div>

```julia
function f2!(du, u, p, t)
    du .= u.*w;
end

```

Mutate, don’t make a new vector if you’re using the mutating syntax.

---

<div class="post-metadata">

**Author:** ![jonlym](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jonlym/32/20007_2.png) [@jonlym](https://discourse.julialang.org/u/jonlym)\
**Post date:** [December 6, 2020, 3:36am UTC](https://discourse.julialang.org/t/odes-using-element-wise-vector-multiplication/51332/3 "2020-12-06T03:36:35Z")

</div>

Ah, I see. Thank you for the help!
