<br><br><div class="gmail_quote">On Sun, Jul 11, 2010 at 11:31 AM, Alexey Brazhe <span dir="ltr">&lt;<a href="mailto:brazhe@gmail.com">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><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>