This forum has been archived. All content is frozen. Please use KDE Discuss instead.

Schur decomposition, functions of matrices

Tags: None
(comma "," separated)
penguian
Registered Member
Posts
9
Karma
0
OS
Hi,
I'm exploring ways to improve the ability of my GluCat library [ http://glucat.sf.net ] to evaluate functions in Clifford algebras. Since Clifford algebras have Real (and Complex) matrix representations, GluCat can use functions of matrices to do this.

I've been reading Nick Higham's book, Functions of Matrices: Theory and Computation [ http://www.maths.manchester.ac.uk/~higham/fm/ ], and see that for GluCat to evaluate matrix functions, it would need to first perform a Schur decomposition. LAPACK does this in two steps, by first reducing to upper Hessenberg form and then performing the Schur factorization [ http://www.netlib.org/lapack/lug/node50.html ] but LAPACK also provides simple driver routines [ http://www.netlib.org/lapack/lug/node31.html ].

GluCat currently uses uBLAS [ http://www.boost.org/doc/libs/1_39_0/libs/numeric/ublas/doc/index.htm ] but to perform the Schur decomposition, it would also need to use Boost Numeric Bindings [ http://mathema.tician.de/node/391 ], which is not yet released into Boost.

So, finally, questions. What is the status of Schur decomposition within eigen? Is it usable now? Is it comparable in speed to LAPACK?
User avatar
bjacob
Registered Member
Posts
658
Karma
3
We don't have a general schur decomposition yet. However we have a general eigensolver (for real matrices only, afaicr) and a selfadjoint eigensolver (does handle complex, afaicr). Since you're talking about functional calculus on matrices, what you need is an eigensolver, not a Schur decomposition. Although in the normal case, that amounts to the same. Are your elements normal (do they commute with their own adjoint)?


Join us on Eigen's IRC channel: #eigen on irc.freenode.net
Have a serious interest in Eigen? Then join the mailing list!
penguian
Registered Member
Posts
9
Karma
0
OS
I'm updating a quite general library, and the matrices are real, square, but not necessarily normal.

An algorithm for matrix functions which uses an eigensolver which does not do Schur decomposition will suffer from numerical instability. Besides Higham's book, see Philip I. Davies, Nicholas J. Higham, "A Schur-Parlett Algorithm for Computing Matrix Functions" http://www.maths.manchester.ac.uk/~nareports/narep404.pdf.
User avatar
bjacob
Registered Member
Posts
658
Karma
3
ah ok i didn't know about the numerical stability issue!

well, all I can say is that we're adding Schur decomposition to our TODO.


Join us on Eigen's IRC channel: #eigen on irc.freenode.net
Have a serious interest in Eigen? Then join the mailing list!
User avatar
bjacob
Registered Member
Posts
658
Karma
3
FYI, Gael just merged a new general complex eigensolver and Schur decomposition. (In the devel branch).

See class ComplexSchur.(currently in QR module)

This is very recently merged code so zero guarantees....


Join us on Eigen's IRC channel: #eigen on irc.freenode.net
Have a serious interest in Eigen? Then join the mailing list!


Bookmarks



Who is online

Registered users: Bing [Bot], daret, Google [Bot], sandyvee, Sogou [Bot]