I have an expression:
expr = Transpose[x]+Transpose[f[x]]+Transpose[x+f[x]]
I want to differentiate this expression and desired result looks like this:
D[expr, x]
res = Transpose[1] + Transpose[f'[x]] + Transpose[1 + f'[x]]
But I get the following:
Task: How to replace all patterns D[Transpose[___],___]
with patterns Transpose[D[___,___]]
I used a set of rules, but I want to test alternatives:
Unprotect[D, Transpose, Dot];
(*Derivative rules*)
D[Transpose[A_], X_] := D[A, X]\[Transpose]
D[A_.B_, X_] := D[A, X].B + A.D[B, X]
(*Dot rules*)
Dot[_, 0] := 0
Dot[0, _] := 0
Protect[D, Transpose, Dot];