Física Computacional 18 matrizes: inversão, valores próprios e sol. da eq. De Schrödinger 1. Trabalhar com matrizes, e aplicá-las a um problema físico a. Inversão da matriz, eliminação de Gauss b. Determinante da matriz c. Vetores e valores próprios com a rotação elementar de Jacobi d. Os maiores vetores próprios com a iteração de potências e. Método de Lanczos modificado f. Aplicação à solução da eq. de Schrödinger estacionária bicudo@tecnico.ulisboa.pt 1
Inversão da matriz, eliminação de Gauss Uma matriz quadrada M admite uma matriz inversa M -1 quando M. M -1 = M -1. M = I, sendo I a identidade. A técnica mais simples de inverter uma matriz é a eliminação de Gauss, conhecida desde a antiguidade na China. Esta técnica também permite calcular o determinante det (M) bem como resolver uma equação linear que se pode escrever na forma M. X = B, sendo B um vetor conhecido e sendo X o vetor incógnita. Consiste em escrevermos lado a lado as matrizes: M I, e realizando operações que envolvam as linhas troca de linhas, multiplicação de uma linha por um fator e soma de linhas - que equivalem à multiplicação à esquerda por uma matriz, de forma que, quando conseguimos transformar M em I obtermos as duas matrizes: I M -1 Inversão, eliminação de Gauss 2
Exemplo de eliminação de Gauss numa matriz 3x3, ( 1 2/3 1/3 0 4/3 8/3 0 4/3 2/3 ( 1 2 3 3 2 1 1 2 1 1 0 0, 0 1 0 1) ( 3 2 1 1 2 3 0 0 1 2 1 0 1/3 0, 1 1/3 0 1) ( 1 2/3 1/3 0 1 2 0 1/3 0 4/3 2/3 ( 1 0 1 1/2 1/2 0 0 1 2, 3/4 1/ 4 0 0 0 1 Como variante, podemos passar por uma matriz triangular. Como sub-produto desta técnica conseguimos também calcular o determinante da matriz (para o qual basta a matriz triangular). O determinante é o produto das fases +-1 que ocorre quando trocamos linhas afim de posicionar cada pivot, bem como dos fatores que usamos para normalizar cada pivot. Neste exemplo obtemos, 0 1 0, 1 0 0 1) ( 1 2/3 1/3 1 2 3 0 0 1 2 1 0 1/3 0, 3/4 1/4 0 Determinante da matriz 0 1/3 0 1), 1 0 0 0 0 1) ( 1 0 1 0 1 2 0 1/3 0 0 2 1/2 0 1/2) ( 1 0 0 0 1/2 1/2 0 1 0, 1/ 4 1/4 1 0 0 1 1/2 0 1/2) det (M )=( 1).(3).(1).(4/3).(1).( 2)=8 1/2 1/2 0 1), 3/ 4 1/4 0 1 0 3
Vetores e valores próprios Uma matriz M quadrada NxN tem um vetor próprio v i e um valor próprio i quando, M. v i = i v i. Matrizes hermíticas Um caso particular importante em física é o de M ser hermítica, por exemplo sendo real e simétrica. Uma matriz hermítica tem valores próprios reais e com os vetores próprios podemos sempre construir uma base ortonormada: v j +. M. v i = i v j +. v i = j + v j +. v i, logo temos ou i = j + ou v j +. v i = 0, ou seja v i perp. v j. o que implica que (caso i=j) os valores próprios são reais, e podemos também mostrar que com os vetores próprios conseguimos construir uma base ortonormada. De agora em diante iremos então considerar essa base {v } i indexada tal que, Vetores e valores próprios λ 0 λ 1... λ N 1 4
Algoritmo para a diagonalização de Jacobi, com rotações elementares de Consideremos uma matriz real e simétrica M quadrada NxN que pretendemos diagonalizar. O algoritmo de Jacobi consiste em aplicar iterativamente aos maiores pivots M ij exteriores à diagonal rotações bidimensionais que anulem esses pivots. Apesar deste algoritmo afectar os restantes elementos das linhas e colunas i e j o algoritmo converge para uma matriz diagonal. A matriz na forma diagonal D é composta pelos valores próprios e a matriz total da rotação é composta pelos vetores próprios: M= R. D. R -1, R -1. M. R = D Diagonalização de Jacobi com rotações elementares 5
Algoritmo para a diagonalização de Jacobi, com rotações elementares de A sub-matriz 2x2 que inclui o pivot é diagonalizada com, ( M ii M ij M ij M jj), R= ( cos θ sin θ M ii+m jj+ ((M ii M jj) D=( 2 +4 M 2 ij ) 2 0 sin θ cos θ ), θ= 1 2 arctan ( 2 M ij ) M ii M, jj ) 0 M ii +M jj ((M ii M jj ) 2 +4 M 2 ij ) 2 A técnica de Jacobi resolve a diagonalização iterativamente, anulando progressivamente os termos não diagonais a cada vez que varremos todos os elementos não diagonais. É muito mais rápida para matrizes cujos pivots sejam conhecidos, como normalmente é o caso em física. Diagonalização de Jacobi com rotações elementares 6
Maiores valores próprios com o método da iteração de potências Considerando de novo uma matriz hermítica, por exemplo real e simétrica N x N, com valores e vetores próprios ordenados. Começamos por escolher um vetor inicial V 0, que deve ter uma componente em V, N-1 V 0 = i c i V i ao iterarmos potências da matriz M, M a.v 0 = i c i M a.v i = i c i λ a.v i iremos amplificar a componente V muito mais que N-1 qualquer outra por esta ter o maior valor próprio N-1, Assim construímos uma sucessão de vetores que tende rapidamente para o vetor próprio de maior valor próprio. Maiores valores próprios com o método da iteração de potências 7
O algoritmo é o seguinte Começamos por escolher um vetor inicial V 0, que deve ter uma componente não nula em V N-1, por exemplo com um gerador de números aleatórios Em cada iteração Iteramos a equação, V a+1 = M V a, normalizamos o ~vetor próprio, V a+1 V a+1 / V a+1 V a+1. calculamos o ~valor próprio, λ a+1 = V a+1 M V a+1, Mostra-se que então com esta sucessão V a tende para o vetor próprio V N-1 e λ a tende para o valor próprio λ N-1. Para obtermos os vetores próprios seguintes podemos usar a diferença V a+1 - V a normalizada V etc, se bem que N-2 esta técnica mais direta é afetada pelo erro de truncatura, pelo que o seu uso, interessante para entendermos o erro numérico desta técnica, é subtil. Maiores valores próprios com o método da iteração de potências 8
Valores próprios seguintes com a ortogonalização de Gram-Schmidt Para evitarmos efeitos do o erro de truncatura, calculamos com melhor precisão os valores próprios seguintes se usarmos a ortogonalização de Gram-Schmidt. Assim conseguimos trabalhar em sub-espaços vetoriais que progressivamente excluem os vetores próprios que já calculámos. Para além do vetor inicial V 0, que normalizamos, consideremos outros vetores. Por exemplo consideremos W 0 = V 1 V 0 que normalizamos, X 0 = W 1 W 0 que normalizamos etc.. Aplicamos então a estes vetores uma iteração semelhante à que conduz ao maior vetor próprio, mas com mais um passo intermédio de G-S por vetor, mesmo antes da normalização, W a+1 W a+1 - (W a+1 V a+1 ) V a+1 X a+1 X a+1 - ( X a+1 V a+1 ) V a+1 - ( x a+1 W a+1 ) W a+1 etc para os vetores próprios seguintes Estes vetores irão tender para V N-2, V N-3, etc. Ortogonalização de Gram-Schmidt 9
Métodos de Arnoldi / Lanczoz Temos uma outra técnica, de Arnoldi / Lanczoz que permite chegar mais diretamente a um subconjunto de alguns vetores próprios, da nossa matriz real e simétrica M: consideremos, tal como na técnica anterior, uma escolha inicial V 0 e geramos L outros vetores, V 1 =M. V 0, V 2 =M. V 1,... V L-1 =M. V L-2, que devemos ainda ortogonalizar com Gram-Schmidt e normalizar, em seguida criamos uma sub-matriz L x L da matriz M neste subespaço, de elementos de matriz, M ij = V i.m.v j é esta matriz que então diagonalizamos, analiticamente se L=2, ou com a técnica de Jacobi para L>2, obtendo um conjunto de novos vetores que ordenamos a partir do respetivo valor próprio, V' 0, V' 1, V' 2... Iteramos em seguida este processo o número de vezes necessário, partindo de um V 0 igual a V' 0 (ou V' L-1 ), para calcular os valores próprios inferiores (superiores) de M. Métodos de Arnoldi e de Lanczos 10
Solução da Eq. De Schrödinger estacionária Vimos em aula anterior, por exemplo para um oscilador harmónico uni-dimensional V(x)= (½) K x 2, a ESE é, (h/2 π )2 2m d 2 dx 2 φ (x )+ k 2 x2 φ( x)=e φ( x) que para diferenças finitas toma uma forma matricial, onde o único termo não diagonal do Hamiltoniano é a 2 a derivada, d 2 dx 2 1 h 2 ( 2 1 0 0... 1 2 1 0 0 1 2 1 0 0 1 2...............) pelo que a ESE equivale a uma equação aos valores próprios, sendo o valor próprio a energia E. Os estados que nos interessam são os de menores valores próprios, mas podemos inverter a matriz e então procurar os maiores valores próprios (1/E) da inversa H -1. Aplicando à E. S. E. 11