Re: [R] Exponentiate a matrix

From: Dimitrios Rizopoulos <Dimitris.Rizopoulos_at_med.kuleuven.be>
Date: Thu 21 Sep 2006 - 15:26:25 GMT

Quoting Duncan Murdoch <murdoch@stats.uwo.ca>:

> On 9/21/2006 10:40 AM, Doran, Harold wrote:
>> Suppose I have a square matrix P
>>
>> P <- matrix(c(.3,.7, .7, .3), ncol=2)
>>
>> I know that
>>
>>> P * P
>>
>> Returns the element by element product, whereas
>>
>>> P%*%P
>>
>> Returns the matrix product.
>>
>> Now, P^2 also returns the element by element product. But, is there a
>> slick way to write
>>
>> P %*% P %*% P
>>
>> Obviously, P^3 does not return the result I expect.
>
>
> I don't think there's anything built in, but it's easy to write your own:

I think there was function mtx.exp() in the Malmig package, but it seems that this package has been withdrawn from CRAN. An old version appears to exist in:

http://r.meteo.uni.wroc.pl/src/contrib/Descriptions/Malmig.html

Best,
Dimitris

> "%^%" <- function(mat, pow) {
> stopifnot(length(pow) == 1, all.equal(pow, round(pow)), nrow(mat) ==
> ncol(mat))
> pow <- round(pow)
> if (pow < 0) {
> mat <- solve(mat)
> pow <- abs(pow)
> }
> result <- diag(nrow(mat))
> while (pow > 0) {
> result <- result %*% mat
> pow <- pow - 1
> }
> result
> }
>
> Now P %^% 3 will give you the matrix cube.
>
> Duncan Murdoch
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
>

Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. Received on Fri Sep 22 01:45:43 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Thu 21 Sep 2006 - 19:30:11 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.