jishnub
February 14, 2022, 5:53pm
#1
Suppose I have the following operation

```
julia> @variables t x(t)
2-element Vector{Num}:
t
x(t)
julia> Dt = Differential(t)
(::Differential) (generic function with 2 methods)
julia> ex = expand_derivatives(Dt(t^2*x))
(t^2)*Differential(t)(x(t)) + 2t*x(t)
```

I would like to somehow extract the operator `t^2*Dt + 2t`

from `ex`

and represent this as a matrix (assuming that `x(t)`

is an arbitrary vector, and I have the matrices `t`

and `Dt`

). Is there a way to achieve this? Thanks in advance!

goerch
February 14, 2022, 7:11pm
#2
The documented examples do not work for you?

I’m afraid not, and I’m not experienced enough with the ecosystem to get this to work by myself

goerch
April 7, 2022, 8:13am
#4
OK, i tried starting with this

```
using Symbolics
@variables t x1(t) x2(t)
@show x = [x1 x2]
@show Dt = Differential(t)
@show ex = expand_derivatives(Dt(t^2*x))
```

and got

```
ERROR: Differentiation of expressions involving arrays and array variables is not yet supported.
```

So it seems we are out of luck here.

Thanks for your time! I’ll leave this open in case someone manages to find a solution

Did you mean:

```
julia> ex = expand_derivatives(Dt.(t^2 * x))
1×2 Matrix{Num}:
Differential(t)((t^2)*x1(t)) Differential(t)((t^2)*x2(t))
```

?

1 Like

goerch
April 7, 2022, 12:04pm
#7
Thanks! Very nice, we get something like

```
using Symbolics
@variables t x1(t) x2(t)
@show Dt = Differential(t)
@show ex = expand_derivatives(Dt(t^2*sin(t)))
@show Dt = Differential(t)
@show ex = expand_derivatives(Dt(t^2*cos(t)))
@show x = [sin(t) cos(t)]
@show Dt = Differential(t)
@show ex = expand_derivatives.(Dt.(t^2*[sin(t) cos(t)]))
@show x = [x1 x2]
@show Dt = Differential(t)
@show ex = expand_derivatives.(Dt.(t^2*x))
```

yielding

```
Dt = Differential(t) = Differential(t)
ex = expand_derivatives(Dt(t ^ 2 * sin(t))) = (t^2)*cos(t) + 2t*sin(t)
Dt = Differential(t) = Differential(t)
ex = expand_derivatives(Dt(t ^ 2 * cos(t))) = 2t*cos(t) - (t^2)*sin(t)
x = [sin(t) cos(t)] = Num[sin(t) cos(t)]
Dt = Differential(t) = Differential(t)
ex = expand_derivatives.(Dt.(t ^ 2 * [sin(t) cos(t)])) = Num[(t^2)*cos(t) + 2t*sin(t) 2t*cos(t) - (t^2)*sin(t)]
x = [x1 x2] = Num[x1(t) x2(t)]
Dt = Differential(t) = Differential(t)
ex = expand_derivatives.(Dt.(t ^ 2 * x)) = Num[(t^2)*Differential(t)(x1(t)) + 2t*x1(t) (t^2)*Differential(t)(x2(t)) + 2t*x2(t)]
```

That should be pretty near to what OP wants…