spec valeurs propres, et vecteurs propres d'une matrice ou d'un faisceau de matrices

## Séquence d'appel

                evals          = spec(A)
                [R, diagevals] = spec(A)

                evals               = spec(A, B)
                [alpha, beta]       = spec(A, B)
                [alpha, beta, Z]    = spec(A, B)
                [alpha, beta, Q, Z] = spec(A, B)

## Paramètres

A, B
  Matrices carrées réelles ou complexes, de mêmes tailles.

evals
  Vecteur réel ou complexe

diagevals
  Matrice carrée diagonale réelle ou complexe : les éléments diagonaux sont les valeurs propres.

R
  Matrice carrée inversible réelle ou complexe des vecteurs propres à droite.

alpha, beta
  Vecteurs de mêmes tailles: valeurs propres généralisées du faisceau de matrices `A - s.B`. alpha./beta donne les valeurs propres. `alpha` est à valeurs réelles ou complexes. `beta` est à valeurs réelles.

Q
  Matrice carrée inversible réelle ou complexe des vecteurs propres généralisés à gauche.

Z
  Matrice carrée inversible réelle ou complexe des vecteurs propres généralisés à droite.

## Description

evals = spec(A) calcule les valeurs propres de `A` et les fournit dans le vecteur `evals`.

[R, diagevals] = spec(A) fournit les valeurs propres sur la diagonale de la matrice diagonale `diagevals`. La matrice `R` produite contient les vecteurs propres à droite (s'ils existent). Voir Aussi `bdiag(…)`.

Lorsque `spec(A)` est utilisée pour une seule matrice, le caractère réel ou complexe des résultats est le suivant :

matrice A | Réelle | Complexe
| Symétrique | Asymétrique | Hermitienne | Non hermitienne
Valeurs propres | réelles | complexes | réelles | complexes
Vecteurs propres | réels | complexes | complexes | complexes

Une matrice complexe hermitienne est égale à sa transposée conjuguée.

### Faisceau matriciel A - s.B

evals = spec(A, B) retourne le spectre du faisceau `A - s.B`, c'est à dire les racines du déterminant de la matrice de polynômes `A - s.B`.

[alpha, beta] = spec(A, B) retourne les valeurs propres généralisées `alpha` et `beta` du faisceau, telles que `alpha./beta` sont les valeurs propres usuelles, c'est à dire les racines du déterminant de la matrice de polynômes `s E - A`. La matrice `A - alpha./beta × B` est alors singulière. Si `beta(i) = 0`, la ième valeur propre est infinie.

Pour `B = eye(A)`, `alpha./beta` est égal à `spec(A)`.

[alpha, beta, Z] = spec(A, B) produit en outre la matrice `Z` des vecteurs propres généralisés à droite.

[alpha, beta, Q, Z] = spec(A, B) permet finalement d'obtenir la matrice `Q` des vecteurs propres généralisés à gauche.

Pour les matrices denses ou creuses de grande taille, la fonction eigs peut être utilisée.

## Fonctions utilisées

Le calcul des valeurs propres des matrices est basé sur les programmes Lapack

- DGEEV and ZGEEV, lorsque la matrice A n'est ni symétrique ni hermitienne.

- DSYEV and ZHEEV, lorsque la matrice A est symétrique ou hermitienne.

Le calcul des valeurs propres des faisceaux est basé sur les programmes Lapack routines DGGEV et ZGGEV.

## Exemples

    // Valeurs propres d'une matrice
    A = diag([1,2,3]);
    X = rand(3,3);
    A = inv(X)*A*X;
    spec(A)

    x = poly(0,'x');
    pol = det(x*eye(3,3)-A)
    roots(pol)

    [S,X] = bdiag(A);
    clean(inv(X)*A*X)

    // Valeurs et vecteurs propres d'un faisceau de matrices
    A = rand(3,3);
    [al, be, Z] = spec(A,eye(A));al./be
    clean(inv(Z)*A*Z)    // affiche les valeurs propres (matrice générique)
    A = A+%i*rand(A);
    E = rand(A);
    roots(det(%s*E-A))   // cas à valeurs propres complexes

## Voir aussi

- eigs
- bdiag
- schur
- colcomp
- det
- poly