[SciPy-User] raising a matrix to float power

Charles R Harris charlesr.harris at gmail.com
Sun Jul 11 13:41:39 EDT 2010


On Sun, Jul 11, 2010 at 11:31 AM, Alexey Brazhe <brazhe at gmail.com> wrote:

> Seems to be, but not for any matrix:
>
> #-----------------
>
> def mpower(M, p):
>     "Matrix exponentiation"
>     e,EV = linalg.eigh(M)
>     return dot(EV.T,
>                dot(diag((e)**p), EV))
>
> m = array([[1.0,2.0], [3.0,4.0]])
>
> then dot(m.T,m) does equal mpower(mpower(dot(m.T,m), 0.5), 2.0)
>
> But mpower(mpower(m,0.5),2) doesn't equal m!
>
>
For this algorithm the matrix needs to be Hermitean, which is the case for
W^T W. More generally, the matrix needs to be normal, i.e., commute with
it's transpose. A matrix can be diagonalized iff it is normal.

<snip>

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20100711/031b2c1a/attachment.html>


More information about the SciPy-User mailing list