bdiag

Scilab Function
Last update : 16/06/2004

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

### Calling Sequence

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

### Parameters

- `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])

`[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.

### Examples

    // Cas réel: blocs 1x1 et 2x2
    a=rand(5,5);[ab,x,bs]=bdiag(a);ab
    // Cas complexe : blocs complexes 1x1
    [ab,x,bs]=bdiag(a+%i*0);ab

### See Also

`schur`, `sylv`, `spec`,