Eu tenho matrizes dimensionais dependendo do parâmetro do vetor .H ( → k ) → k
Agora, as rotinas de autovalores retornam autovalores em nenhuma ordem específica (geralmente são classificadas), mas quero rastrear os autovalores como funções suaves de . Como os valores próprios não são retornados em nenhuma ordem específica, apenas rastrear para algum índice específico retornará um conjunto de linhas que não são suaves, conforme mostrado na figura abaixo→ k E i i ∈ { 1 , . . , n }
Minha ideia para rastrear linhas contínuas foi usar vetores próprios. Ou seja, para dois pontos de fechamento e autovetores devem ser aproximadamente ortonormais, de modo que que e é uma permutação. Então eu usaria a permutação fornecida para reordenar os autovalores e, assim, traçar linhas suaves.
Em outras palavras, eu traçaria a continuidade dos vetores próprios.
No entanto, encontro alguns problemas com rotinas numéricas. Em um dado pequeno subconjunto de pontos que uso, poucos autovetores em pontos próximos não são quase ortonormais. Minha primeira suspeita foi que esses autovetores correspondem a um autovalor degenerado, mas isso nem sempre é verdade.
Isso também se aplica se eu reduzir para ser realmente pequeno.
É permitido que isso aconteça. Ou é possível garantir que as rotinas numéricas retornem autovetores contínuos? A rotina que eu uso é numpy.linalg.eigh, que é uma interface para o zheevd do LAPACK.
(Os físicos entre vocês reconhecerão que estou falando sobre a estrutura da banda)
fonte
numpy.linalg.svd
para gerar seus vetores próprios. Pelo menos no Matlab, a rotina subjacentesvd
sempre retorna os valores próprios e os vetores próprios em ordem decrescente.Respostas:
Nos pontos em que duas linhas se fundem, você tem dois valores próprios iguais e, consequentemente, o espaço próprio que corresponde a esses dois vetores próprios é bidimensional. O que isso significa é que, nesse ponto, os dois vetores próprios não são mais únicos (não apenas até um sinal), mas podem ser um dos infinitos vetores ortogonais possíveis que abrangem esse espaço bidimensional.
fonte
Eu trabalho em eletromagnetismo, então tenho que calcular estruturas de bandas fotônicas. Eu costumava tentar suavizar as bandas tentando detectar pontos de cruzamento, mas depois de muitas tentativas e discussões com colegas de trabalho, finalmente concluímos que não há realmente nenhuma maneira ou razão para fazê-lo.
Mas, se você ainda insistir em fazer o que deseja, analise as derivadas de autovalores em relação a k. Há bastante literatura sobre isso, principalmente sobre a teoria da perturbação de problemas de autovalor (livro clássico de Kato), e também trabalha na análise de perturbação na presença de degeracias de autovalor (um problema muito mais difícil, literatura de Roger CE Tan). Eu tentaria fazer isso para o caso não-regenerado primeiro, pois isso ainda é relativamente fácil.
fonte