[SciPy-User] raising a matrix to float power
Andrew Jaffe
a.h.jaffe at gmail.com
Sun Jul 11 11:26:32 EDT 2010
Hi,
On 11/07/2010 00:26, Alexey Brazhe wrote:
> Hi,
> I failed to find a way to raise a matrix to a non-integer power in
> numpy/scipy
>
> In Octave/Matlab, one would write M^0.5 to get the result
> whereas in numpy
> >>> maxtrix(M, 0.5)
> raises the "TypeError: exponent must be an integer"
>
> Is there a way to do matrix exponentiation to non-integer powers in
> numpy or scipy?
>
> Hope the answer is positive :)
Although most people already know this, since nobody's actually said it
yet in this thread, and there seems to be some confusion, the generic
meaning of matrix exponentiation is usually the following.
We can diagonalize a matrix
M = R^T E R
where R is the matrix of eigenvectors (^T is transpose or hermitian
conjugate) and
E = diag(lambda_1, lambda_2, ...) is the diagonal matrix of
eigenvalues.
Then, we can define
M^a = R^T E^a R
where E^a = diag(lambda_1^a, lambda_2^a, ...)
in particular, this gives the obvious answers for integer powers and
even negative integers, including -1 for the inverse. (+1/2 doesn't give
the Cholesky decomposition, but the Hermitian square root)
Andrew
More information about the SciPy-User
mailing list