bloc-diagonalisation, vecteurs propres généralisés
[Ab, X, bs] = bdiag(A) [Ab, X, bs] = bdiag(A, rmax)
matrice carrée réelle ou complexe
nombre réel
matrice carrée réelle ou complexe
matrice régulière, réelle ou complexe
vecteur d'entiers
[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.
// 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 a = rand(5,5); [ab, x, bs] = bdiag(a+%i*0); ab | ![]() | ![]() |