[R] A function for raising a matrix to a power?

Ron E. VanNimwegen vanron at ksu.edu
Sun May 6 16:48:09 CEST 2007

>  Hi,
> Is there a function for raising a matrix to a power? For example if 
> you like to compute A%*%A%*%A, is there an abbreviation similar to A3?
> Atte Tenkanen 
Hi Atte,

I was looking for a similar operator, because R uses scalar products 
when raising a matrix to a power with "^".  There might be something 
more elegant, but this little loop function will do what you need for a 
matrix "mat" raised to a power "pow":

mp <- function(mat,pow){
ans <- mat
for ( i in 1:(pow-1)){
ans <- mat%*%ans

Then, for your example:
> > A=rbind(c(1,1),c(-1,-2))
> > mp(A,3)
>      [,1] [,2]
> [1,]    1    2
> [2,]   -2   -5

Ron E. VanNimwegen
Ph.D. Candidate, Division of Biology (EEB)
Kansas Cooperative Fish & Wildlife Research Unit
205 Leasure Hall
Kansas State University
Manhattan, KS 66506-3501
vanron at ksu.edu

More information about the R-help mailing list