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
Ae 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)'
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