0

I am using Eigen library with Eclipse C++. I wonder if there is a method or a function that I can use to reorder the Schur factorization X = UTU' produced by the RealSchur function and return the reordered Schur matrix TS and the cumulative orthogonal transformation US such that X = US * TS * US'

What I want is something similar to the MATLAB function "ordschur": http://de.mathworks.com/help/matlab/ref/ordschur.html

Many thanks in advance.

M.A.
  • 169
  • 1
  • 1
  • 18
  • I doubt this functionality exists at this moment. You probably need to reorder it by yourself using std::sort. – kevin Nov 12 '15 at 00:34
  • I am developing an open source library and I am looking for the same functionality to solve Riccati equation. Have you found any code so far? – ar2015 Jan 29 '16 at 22:03

1 Answers1

0

This functionality is available in the LAPACK library in the function DGEES.

Here is also an excerpt from the help of this function :

DGEES computes for an N-by-N real nonsymmetric matrix A, the
eigenvalues, the real Schur form T, and, optionally, the matrix of
Schur vectors Z.  This gives the Schur factorization A = Z*T*(Z**T).

Optionally, it also orders the eigenvalues on the diagonal of the 
real Schur form so that selected eigenvalues are at the top left.
The leading columns of Z then form an orthonormal basis for the
invariant subspace corresponding to the selected eigenvalues.

A matrix is in real Schur form if it is upper quasi-triangular with
1-by-1 and 2-by-2 blocks. 2-by-2 blocks will be standardized in the
form
         [  a  b  ]
         [  c  a  ]

where b*c < 0. The eigenvalues of such a block are a +- sqrt(bc).

There is also a C version of LAPACK available and it is called CLAPACK

gone
  • 81
  • 1
  • 2