[SciPy-User] raising a matrix to float power
Sun Jul 11 15:17:07 CDT 2010
On Sun, Jul 11, 2010 at 10:41 AM, Charles R Harris <
> On Sun, Jul 11, 2010 at 11:31 AM, Alexey Brazhe <firstname.lastname@example.org> 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.
So it isn't just an algorithmic issue: the general matrix exponentiation
only works for normal matrices (in theory as well as in computational
practice)? Or is it just the (M^a)^(1/a) = (M^(1/a))^a identity that fails
if M isn't normal?
> SciPy-User mailing list
Mathematician: noun, someone who disavows certainty when their uncertainty
set is non-empty, even if that set has measure zero.
Hope: noun, that delusive spirit which escaped Pandora's jar and, with her
lies, prevents mankind from committing a general suicide. (As interpreted
by Robert Graves)
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the SciPy-User