In [12]: var('x y z')
Out[12]: (x, y, z)
In [13]: m = Matrix([[x, y], [x*y, x*z]])
In [14]: m.diff(x)
Out[14]:
Matrix([
[1, 0],
[y, z]])
In [15]: diff(m, x)
Out[15]:
Derivative(Matrix([
[ x, y],
[x*y, x*z]]), x)
I don't think there is a specific reason _eval_diff
is missing. It probably was never implemented.