Computing matrix exponentials



Richard Fateman <fateman at eecs.berkeley.edu> writes:
> suggested Matrix exponential ala Maxima:  ..
>
> matexp(m,lim):=block([ans:ident(length(m)),  pow],
>     pow:ans,
>       for j from 1 thru lim do
>          (pow:pow.m/j, ans:ans+pow),
>    ans)
>
> This allows you to compute, approximately, the matrix exponential of
> any square
> matrix including ones with symbolic entries.
>
> This is essentially substituting the matrix into the taylor series to
> order "lim"  for exp.
>
> Now there is an issue of how far to run the series (that is, setting lim.)
>
> If there are symbolic expressions in the matrix m there may be an advantage
> to using  rat(m)  rather than m as an argument.
>
> If there are only numbers, you probably want to do the calculation in
> floating point.
>  You need a more sophisticated way of terminating the iteration :)

You clearly haven't actually read my email. What you described is the
Taylor series. It does not converge fast enough to be useful with
approximate numbers.

Rupert
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 315 bytes
Desc: not available
URL: <http://www.math.utexas.edu/pipermail/maxima/attachments/20121214/b7dea90e/attachment.pgp>;