Out of curiosity and possibly for later use: is there an R-function that does matrix logarithms? Best, Ingmar
On 9/21/06 8:58 PM, "Dimitrios Rizopoulos" <[EMAIL PROTECTED]> wrote: > Quoting Douglas Bates <[EMAIL PROTECTED]>: > >> On 9/21/06, Dimitrios Rizopoulos <[EMAIL PROTECTED]> wrote: >>> >>> Quoting Duncan Murdoch <[EMAIL PROTECTED]>: >>> >>>> 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 >> >> Is that function for matrix powers or for the exponential of a matrix >> (which is what I initally thought that Harold wanted)? There is a >> function expm in the Matrix package, patterned on the octave function >> of the same name, the calculates the matrix exponential for a square >> matrix. > > this function calculates the n-th power of a matrix, and this is what > I thought Harold wanted, i.e., > > P %*% P %*% P %*% P > > should be equal to > > mtx.exp(P, 4) > > >>> >>> >>>> "%^%" <- 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 >>>> >>>> ______________________________________________ >>>> [email protected] 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 >>> >>> ______________________________________________ >>> [email protected] 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. >>> >> >> ______________________________________________ >> [email protected] 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 > > ______________________________________________ > [email protected] 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. -- Ingmar Visser Department of Psychology, University of Amsterdam Roetersstraat 15, 1018 WB Amsterdam The Netherlands http://users.fmg.uva.nl/ivisser/ tel: +31-20-5256735 ______________________________________________ [email protected] 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.
