Matrix Derivative

Given that is a matrix that varies with time , define its Moore-Penrose pseudoinverse, . How can I find a simplified expression for in terms of ?

Mathematica does not know how to differentiate an arbitrary matrix object.

Noting that

one approach is to define a rule that formally computes the derivative of the Inverse of an arbitrary invertible matrix, dividing through by the "additional" generated by the chain rule.

We also see that Mathematica does not know how to differentiate the transpose of a matrix object.

So we define a rule to correctly differentiate Transpose, again dividing through by .

Introducing the Moore-Penrose pseudoinverse, , as follows, we can now compute its derivative.

To expand this result we add some rules to Dot.

This expression simplifies somewhat, noting that and appear in the result.

We have used HoldForm so that we can recover the explicit expression if required.

For example, with

becomes

and the Moore-Penrose pseudoinverse is

The expression for in terms of and reads as follows.

It is straightforward to check that this result agrees with direct differentiation of .