For my application, I need factors $\tilde C$ so that
$$ \tilde C{}^T \tilde C = C^TMC $$ where $C$ is a long matrix, i.e. $C$ has much more columns than rows, and $M$ is a small symmetric positive definite (mass) matrix. Since my code assembles $MC$, I will also have to use some inverses of $M$.
I have found that with the Cholesky factorization $M=L^TL$ and $\tilde C = LC$ the relative difference in the Frobenius norm $$ \|LM^{-1}MC - L^{-T}MC\|~/~\|MC\| $$ is of order $10^{-4}$.
Question: Is there a better factorization for this purpose?
I basically use the scipy.inv
and scipy.cholesky
routines of Python's scipy module.