balance

Balanceia uma matriz por uma transformação de similaridade diagonal para melhorar a precisão dos autovalores.

Categoria: Mathematics > Linear Algebra

Sintaxe

B = balance(A)

Retorna a matriz balanceada.

[T, B] = balance(A)

Retorna também a transformação T, com B = T\A*T.

[S, P, B] = balance(A)

Retorna separadamente o vetor de escala S e o vetor de permutação P.

B = balance(A, 'noperm')

Apenas escala; não permuta linhas e colunas.

Descrição

Quando as entradas de uma matriz variam por muitas ordens de grandeza, erros de arredondamento podem estragar os autovalores calculados. O balanceamento reescala linhas e colunas, por potências de dois para não introduzir arredondamento, até que as normas das linhas e colunas correspondentes fiquem comparáveis.

Como B é semelhante a A, eig(B) é igual a eig(A) em aritmética exata, mas costuma ser calculado com mais precisão. A função eig já balanceia internamente por padrão.

Argumentos de entrada

A
Matriz quadrada.

Argumentos de saída

B
Matriz balanceada, semelhante a A e portanto com os mesmos autovalores.
T
Transformação de similaridade (escala diagonal combinada com uma permutação).

Exemplo

Uma matriz mal escalada

A = [1 100 10000; 0.01 1 100; 0.0001 0.01 1];
[T, B] = balance(A);
B
diag(T)'
Saída
B = 3×3

    1.0000    1.5625    1.2207
    0.6400    1.0000    0.7812
    0.8192    1.2800    1.0000
ans = 1×3

  512.0000    8.0000    0.0625

Veja também

eig schur cond hess