[SciPy-Dev] matrix_sqrt for singular symmetric square matrices

Ilhan Polat ilhanpolat at gmail.com
Sun Oct 28 09:11:03 EDT 2018


This is covered by LDLt decomposition with an extra step of taking the
square root of each block in D. The economy mode of this would be removing
rows/cols 0 blocks from D and L. For the second case I think a polar
decomposition would be a better approach.

Calling these factors a square root might take you out of the common
terminology though

On Sun, Oct 28, 2018 at 9:00 AM Gael Varoquaux <
gael.varoquaux at normalesup.org> wrote:

> On Sun, Oct 28, 2018 at 08:56:37AM +0100, Gael Varoquaux wrote:
> > using '@' to denote the matrix product, and S = np.diag(s) is the
> > diagonal matrix of eigenvalues. The matrix square root is then given by:
>
> >    sqrt(M) = U' @ np.diag(np.sqrt(s)) @ U
>
> I forgot to say: this is the definition used by Joseph, in his original
> post (so basically, I am backing his choice), with the only difference
> that I would not use an SVD, but and "eigh", which should be faster and
> more stable for SPD matrices (and non SPD matrices do not have a square
> root).
>
> G
> _______________________________________________
> SciPy-Dev mailing list
> SciPy-Dev at python.org
> https://mail.python.org/mailman/listinfo/scipy-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scipy-dev/attachments/20181028/2771b857/attachment.html>


More information about the SciPy-Dev mailing list