bdiag bloc-diagonalisation, vecteurs propres généralisés

## Séquence d'appel

                [Ab, X, bs] = bdiag(A)
                [Ab, X, bs] = bdiag(A, rmax)

## Paramètres

A

  matrice carrée réelle ou complexe

rmax

  nombre réel

Ab

  matrice carrée réelle ou complexe

X

  matrice régulière, réelle ou complexe

bs

  vecteur d'entiers

## Description

[Ab, X, bs] = bdiag(A, rmax) calcule la forme bloc-diagonale de `A`. bs précise la structure des blocs (tailles respectives des blocs). `X` est la matrice de changement de base, c'est à dire que `Ab = inv(X)*A*X` est bloc-diagonale.

`rmax` contrôle le conditionnement de `X`. La valeur par défaut est la norme l1 de `A`.

Pour obtenir une forme diagonale (si celle-ci existe) choisissez une valeur élevée de `rmax` (`rmax=1/%eps` par exemple). Pour une matrice réelle quelconque, les blocs sont de taille (1x1) ou (2x2) et `X` est la matrice des vecteurs propres.

## Exemples

    // Cas réel: blocs 1x1 et 2x2
    a = rand(5,5);
    [ab, x, bs] = bdiag(a);ab

    --> [ab, x, bs] = bdiag(a);ab
     ab  =
       2.4777836   0.          0.          0.         0.
       0.          0.0757087   0.4869251   0.         0.
       0.         -0.5777956  -0.1248605   0.         0.
       0.          0.          0.          0.069654   0.
       0.          0.          0.          0.         0.5341598

    // Cas complexe : blocs complexes 1x1
    [ab, x, bs] = bdiag(a+%i*0); ab

## Voir aussi

- schur
- sylv
- spec
- blockdiag
- lcmdiag