This is yet another question related to the obviously popular basic problem of solving an ODE (or a system of ODEs) with **inputs** in Julia (using `DifferentialEquations`

package).

Let’s consider a single (scalar) ODE of the form

```
dx/dt = f(x,u),
```

where `x(0)`

and `u(t)`

for `t`

in `[0,tmax]`

are specified. A simplest possible example is

```
dx/dt = -x(t) + u(t),
```

where `x(0)=1`

and `u(t) = 0`

for `t`

below (before) `t=1`

and it equals 1 afterwards, that is, for `t>=1`

(shifted/delayed Heavyside step function).

A MWE in Julia is (after changing the notation to the one favoured by the `DifferentialEquations`

, namely, `x`

is relabelled to `u`

and the old `u`

turns into a *parameter* `p`

):

```
using DifferentialEquations
using Plots
pyplot()
f(u,p,t) = -1.0*u + 1.0*p(t)
u0 = 1.0
p(t) = (1-t) <= 0 ? 1 : 0
tspan = (0.0,10.0)
prob = ODEProblem(f,u0,tspan,p)
sol = solve(prob)
plot(sol)
```

The example seems perfectly functional. However, looking at the definition of `f`

above, that is, `f(u,p,t) = -1.0*u + 1.0*p(t)`

, it cannot be unnoticed that `u`

is called without the argument `t`

whereas `p`

needs to have it, that is, it appears as `p(t)`

. Not a problem, it is just that while still learning basics of Julia, I was wondering if the code could be modified so that `p`

is handled in the same way as the variable `u`

, that is, without appending the `(t)`

.

Perhaps this might be more related to the basics of Julia rather than DifferentialEquations (I still find myself rather clumsy with anonymous functions and stuff).