2015-04-02 2 views
0

J'utilise la bibliothèque Eigen avec Eclipse C++. Je me demande s'il existe une méthode ou une fonction que je peux utiliser pour réorganiser la factorisation de Schur X = U T U 'produit par la fonction RealSchur et renvoyer la matrice de Schur réordonnée TS et la transformation orthogonale cumulative US telle que X = US * TS * US »Réorganiser les valeurs propres dans la factorisation de Schur dans la bibliothèque Eigen

Ce que je veux quelque chose de similaire à la fonction Matlab "ordschur": http://de.mathworks.com/help/matlab/ref/ordschur.html

Un grand merci à l'avance.

+0

Je doute cette fonctionnalité existe en ce moment. Vous devez probablement le réordonner en utilisant std :: sort. – kevin

+0

Je développe une bibliothèque open source et je cherche la même fonctionnalité pour résoudre l'équation de Riccati. Avez-vous trouvé du code jusqu'à présent? – ar2015

Répondre

0

Cette fonctionnalité est disponible dans la bibliothèque LAPACK dans la fonction DGEES.

Voici également un extrait de l'aide de cette fonction:

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). 

Il existe également une version C de LAPACK disponible et il est appelé CLAPACK