This is the mail archive of the
gsl-discuss@sourceware.org
mailing list for the GSL project.
Re: gsl_linalg_exponential_ss()
- From: Gerard Jungman <jungman at lanl dot gov>
- To: Tino Kluge <t dot kluge at statslab dot cam dot ac dot uk>
- Cc: gsl-discuss <gsl-discuss at sources dot redhat dot com>
- Date: Thu, 30 Mar 2006 15:18:04 -0700
- Subject: Re: gsl_linalg_exponential_ss()
- References: <20060327121954.GA28592@localhost> <1143666291.2934.92.camel@bellerophon.lanl.gov> <20060330134228.GA7195@localhost>
On Thu, 2006-03-30 at 14:42 +0100, Tino Kluge wrote:
> Thanks for your answer. My understanding of matrix exponentiation is
> only limited but I was thinking of algorithms which (block)
> diagonalise the matrix first, exponentiate the diagonal and then
> transfer back. In that setting a speeding up could be achieved by
> storing the diagonal and the basis transformation.
If you have a matrix that can be factored or blocked in
some useful way, then that can help. But we left it up to
end users to figure that out for themselves and exponentiate
accordingly. The GSL function handles any type of matrix.
> After a quick look into your code it seems that the algorithm does
> something more sophisticated.
Yes, general matrix exponentiation is not an easy problem. The
paper quoted in the code, Moler + Van Loan, SIAM Rev. 20, 801 (1978),
is a good place to look if you are interested in this problem. There
are a bunch of other papers out there, including a famous review paper
(something like "Nineteen Ways to Calculate the Matrix Exponential"),
for which I don't have a reference handy.
--
Gerard Jungman <jungman@lanl.gov>
Los Alamos National Laboratory