diagonalização em blocos, autovetores generalizados
[Ab, X, bs] = bdiag(A) [Ab, X, bs] = bdiag(A, rmax)
matriz quadrada de reais ou complexos
número real
matriz quadrada de reais ou complexos
matriz de reais ou complexos não-singular
vetor de inteiros
[Ab, X, bs] = bdiag(A, rmax)
realiza a diagonalização em blocos da matriz A
.
bs
fornece a estrutura dos blocos (respectivos tamanhos dos blocos).
X
é a matriz mudança de base i.e Ab = inv(X)*A*X
édiagonal em blocos.
rmax
controla o condicionamento de X
.
O valor padrão é a norma L1 de A
.
Para encontrar a forma diagonal (se existir) escolha um valor
suficientemente grande para rmax
(rmax=1/%eps
, por exemplo). Genericamente, (para uma
matriz A de reais aleatória) os blocos são (1x1) e (2x2) e
X
é a matriz de autovetores.
// No caso de reais: blocos 1x1 e 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
// No caso de complexos: blocos 1x1 complexos a = rand(5,5); [ab, x, bs] = bdiag(a+%i*0); ab | ![]() | ![]() |