Thank you for explanation. I must admit, I know very little linear algebra :(<br><br><div class="gmail_quote">On Sun, Jul 11, 2010 at 9:41 PM, Charles R Harris <span dir="ltr">&lt;<a href="mailto:charlesr.harris@gmail.com">charlesr.harris@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><br><br><div class="gmail_quote"><div class="im">On Sun, Jul 11, 2010 at 11:31 AM, Alexey Brazhe <span dir="ltr">&lt;<a href="mailto:brazhe@gmail.com" target="_blank">brazhe@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Seems to be, but not for any matrix:<br><br>#-----------------<br><br>def mpower(M, p):<br>    &quot;Matrix exponentiation&quot;<br>    e,EV = linalg.eigh(M)<br>    return dot(EV.T,<br>               dot(diag((e)**p), EV))<br>


<br>m = array([[1.0,2.0], [3.0,4.0]])<br><br>then dot(m.T,m) does equal mpower(mpower(dot(m.T,m), 0.5), 2.0)<br><br>But mpower(mpower(m,0.5),2) doesn&#39;t equal m! <br><br></blockquote></div><div><br>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&#39;s transpose. A matrix can be diagonalized iff it is normal.<br>

<br>&lt;snip&gt;<br><br>Chuck <br></div><br></div>
<br>_______________________________________________<br>
SciPy-User mailing list<br>
<a href="mailto:SciPy-User@scipy.org">SciPy-User@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/scipy-user" target="_blank">http://mail.scipy.org/mailman/listinfo/scipy-user</a><br>
<br></blockquote></div><br>