Scilab Function
Last update : 17/6/2004

spec - valeurs propres d'une matrice

### Calling Sequence

  `evals=spec(A)`
  `[X,diagevals]=spec(A)`
  ``
  `evals=spec(A,E)`
  `[al,be]=spec(A,E)`
  `[al,be,Z]=spec(A,E)`
  `[al,be]=spec(A,E)`
  `[al,be,Q,Z]=spec(A,E)`

### Parameters

- `A` : matrice carrée réelle ou complexe
- `E` : matrice carrée réelle ou complexe de même dimensions que `A`
- `evals` : vecteur réel ou complexe
- `diagevals` : matrice carrée diagonale réelle ou complexe (les éléments diagonaux sont les valeurs propres)
- `al` : vecteur réel ou complexe, al./be donnes les valeurs propres
- `be` : vecteur réel ou complexe, al./be donnes les valeurs propres
- `X` : matrice carrée inversible réelle ou complexe, matrices des vecteurs propres.
- `Q` : matrice carrée inversible réelle ou complexe, matrices des vecteurs propres à gauche.
- `Z` : atrice carrée inversible réelle ou complexe, matrices des vecteurs propres à droite.

### Description

  spec(A) : `evals=spec(A)` retourne dans le vecteur `evals` les valeurs propres de `A`.

  `[evals,X] =spec(A)` retourne de plus les vecteurs propres (s'ils existent). Voir aussi `bdiag`

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

  `[al,be] = spec(A,E)` retourne le spectre du faisceau `s E - A`, c'est à dire les racines du déterminant de la matrice de polynômes `s E - A`. Les valeurs propres sont données par `al./be`. Si `be(i) = 0` la `i`ième valeur propres est à l'infini. (Pour `E = eye(A), al./be` est `spec(A)`).

  `[al,be,Z] = spec(A,E)` retourne de plus la matrice `Z` des vecteurs propres généralisés à droite.

  `[al,be,Q,Z] = spec(A,E)` retourne de plus les matrices `Q` et `Z` des vecteurs propres généralisés à droite et à gauche.

### Examples

        // MATRIX EIGENVALUES
        A=diag([1,2,3]);X=rand(3,3);A=inv(X)*A*X;
        spec(A)
        //
        x=poly(0,'x');
        pol=det(x*eye()-A)
        roots(pol)
        //
        [S,X]=bdiag(A);
        clean(inv(X)*A*X)

        // PENCIL EIGENVALUES
        A=rand(3,3);
        [al,be,Z] = spec(A,eye(A));al./be
        clean(inv(Z)*A*Z)  //displaying the eigenvalues (generic matrix)
        A=A+%i*rand(A);E=rand(A);
        roots(det(%s*E-A))   //complex case

### See Also

`poly`, `det`, `gspec`, `schur`, `bdiag`, `colcomp`,

### Used Function

Le calcul des valeurs propres des matrices est basé sur les routines Lapack DGEEV and ZGEEV.

Le calcul des valeurs propres des matrices est basé sur les routines Lapack DGEEV and ZGEEV.