[Expm-developers] Matrix exponential exp(B * t) (for many t)

Martin Maechler maechler at stat.math.ethz.ch
Mon Aug 22 09:49:06 CEST 2011


>>>>> Martin Maechler <maechler at stat.math.ethz.ch>
>>>>>     on Sun, 21 Aug 2011 21:33:23 +0200 writes:

    > Dear Ravi, On Sat, Aug 20, 2011 at 16:56, Ravi Varadhan
    > <rvaradhan at jhmi.edu> wrote:
    >> Dear Martin,
    >> 
    >> Thanks for pointing me to "expm" package.  I noted that
    >> it has a rich array of algorithms for exponentiating a
    >> matrix. However, it does not seem to have a way to
    >> efficiently compute exp(A) %*% x0, where x0 is a vector.

    > Yes, you are perfectly right and we (the expm-package
    > authors) have been aware that "we need this" but none of
    > us has come around to add it to expm yet.

    >>  This is the solution of a linear system of ODE:  dx/dt =
    >> B, x(0) = x0 (note:  A = B * t).  Computing exp(B*t) and
    >> then doing the matrix-vector product is inefficient
    >> especially for large matrices.

    > yes, and in particular if it should happen --- as
    > typically --- for a whole set of t values.

    >> I have gotten interested in this in response to a query
    >> that John Nash had recently posted in r-devel.  I have
    >> translated the matlab function by Sidjek to do this. Let
    >> me know if you want this feature in expm().

    > Yes, that's really something we should add to the expm
    > package..  but may be not to the expm() function per se.
    > I think a main use case should be to pass a whole vector t
    > values (and a fixed x0 vector), right?  I'd definitely
    > look at what you sent us - at the beginning of this
    > thread, to see how it fits into this framework.  Thank you
    > very much, Ravi, for "insisting" ;-b Martin

Hmm.  Today I had a careful look at the Ravi-pexp.R  that you
had sent me, and I really don't see how your pexp() would solve the
above problem....

but maybe I misunderstood and you meant something else?

Martin


    >> ________________________________________ From: Ravi
    >> Varadhan Sent: Friday, August 19, 2011 5:31 PM To:
    >> 'Martin Maechler' Cc: 'Doug and Martin Subject: RE:
    >> Euclidean (2-) norm and Matrix exponential
    >> 
    >> Dear Martin,
    >> 
    >> Thanks for the clarifications and the new pointers.  I
    >> concur on all the points that you have made.  I will take
    >> a look at the documentation of these functions that you
    >> mentioned.
    >> 
    >> It is interesting, the point that that you make about the
    >> lack of usefulness of 2-norm. Is it really the case this
    >> only serves theoretical purposes and that there is no
    >> *practical* need for this norm?
    >> 
    >> In any case, I have a neat little function that uses the
    >> power method + sequence acceleration to estimate 2-norm
    >> in a somewhat efficient manner.
    >> 
    >> Best regards, Ravi.
    >> 
    >> -------------------------------------------------------
    >> Ravi Varadhan, Ph.D.  Assistant Professor, Division of
    >> Geriatric Medicine and Gerontology School of Medicine
    >> Johns Hopkins University
    >> 
    >> Ph. (410) 502-2619 email: rvaradhan at jhmi.edu
    >> 
    >> -----Original Message----- From: Martin Maechler
    >> [mailto:maechler at stat.math.ethz.ch] Sent: Friday, August
    >> 19, 2011 5:23 PM To: Ravi Varadhan Cc: 'Doug and Martin
    >> Subject: Re: Euclidean (2-) norm and Matrix exponential
    >> 
    >>>>>>> Ravi Varadhan <rvaradhan at jhmi.edu>     on Fri, 19
    >>>>>>> Aug 2011 17:52:24 +0000 writes:
    >> 
    >>    > Dear Martin & Doug, I have a simple R function for  
    >>  > computing matrix exponential that is based on a    >
    >> Pade-Polynomial approximation of Sidjek.  I translated it
    >>    > to R from his matlab code.  It appears to be simpler
    >> than    > your code in "Matrix", but my limited testing
    >> shows that    > it produces identical results, and is a
    >> bit faster.
    >> 
    >> Dear Ravi, you must have overlooked the fact that Doug
    >> and I (and two others) have been authoring a package
    >>  'expm'  (on R-forge and CRAN) which contains newer and
    >> partly considerably better algorithms for expm() {and
    >> also some for  logm() and sqrtm()}.
    >> 
    >> and the topic appeared on R-devel / R-help several times
    >> in the last couple of years...  but you are "well
    >> excused": You don't see anything at all about that when
    >> you read  help(expm) from Matrix ==> I have added a note
    >> (and \seealso{..} \link's) to the Matrix    help page. So
    >> the next Matrix version will point to these ....  thanks
    >> to you!
    >> 
    >>    > I also noted that there is no function in base R and
    >> in    > Matrix for computing the Euclidean norm or 2-norm
    >> of a    > matrix.  This is trivially easy, but
    >> surprisingly there is    > nothing available in R (at
    >> least as far as I know).  I    > have also written a
    >> simple function for this as well as    > computing the
    >> condition number of a matrix that is simpler    > than
    >> condest() in Matrix.
    >> 
    >> Well, but did you see kappa() and rcond()  in addition to
    >> condest() ?
    >> 
    >> So kappa() --- the oldest of *all* the functions
    >> mentioned --- has been in S I think even before S-plus!
    >> --- already does the 2-norm condition number.  You are
    >> right that the 2-norm itself is not available,
    >> explicitly, but then it is AFAIR considerably slower than
    >> the other norms, and "everybody should now" how to
    >> trivially compute it, if they really want.  But as said,
    >> I think it is +- clear to numerical analysis experts that
    >> you work with the 1- and possibly Inf-norm instead, as
    >> both are considerably simpler.
    >> 
    >> OTOH, you make a good point that this should be better
    >> documented..  ... though I wonder why you didn't follow
    >> the "seealso" links on the condest or (Matrix) rcond help
    >> page, pointing to the base rcond + kappa help page...
    >> 
    >> We'd be grateful if you can propose documentation
    >> improvements here.
    >> 
    >> Best regards, Martin
    >> 
    >>    > Perhaps, you might want to consider these for "base"
    >> or    > even "Matrix".  In any case, I would be
    >> interested in your    > thoughts.
    >> 
    >>    > Best regards, Ravi.
    >> 
    >>    >
    >> -------------------------------------------------------  
    >>  > Ravi Varadhan, Ph.D.  Assistant Professor, Division of
    >>    > Geriatric Medicine and Gerontology School of
    >> Medicine    > Johns Hopkins University
    >> 
    >>    > Ph. (410) 502-2619 email:    >
    >> rvaradhan at jhmi.edu<mailto:rvaradhan at jhmi.edu>
    >> 
    >>    > xpexpm.R, pexpm.R [Click mouse-2 to save to a file]
    >> 
    >> 


More information about the Expm-developers mailing list