Dada uma matriz grande com valores próprios , quero determinar apenas um subconjunto desses valores, digamos e . Existe um algoritmo que pode fazer isso ou encontrar os 19 autovalores superiores é o melhor que pode ser feito?
eigenvalues
svd
dexter04
fonte
fonte
Respostas:
Não, não há nada, até onde eu saiba, a menos que você saiba aproximadamente a localização desses autovalores. Quanto aos métodos que podem calcular um subconjunto do espectro de uma matriz, conheço apenas os métodos que podem produzir:
Pelo que entendi, com os métodos do tipo FEAST, você também pode obter uma contagem do número de autovalores em uma região especificada do plano complexo (por meio de uma integral de contorno); portanto, se você precisar de um autovalor especificado no meio do espectro , por exemplo, o 300, você pode executar uma espécie de pesquisa de bissecção: suponha (deslocamento e escala) que o espectro da sua matriz esteja em[−1,1] (e isso é real, por simplicidade). Calcule os autovalores μ mais próximos de 12 . Calcule o número de valores próprios em[12,1] . Se for maior que 300, procure o valor próprio mais próximo do ponto médio de[μ,1] , caso contrário, o valor próprio mais próximo ao ponto médio de[−1,μ] . Repetir.
Acho que nada disso seria competitivo com a baunilha
LA
Arnoldi se você substituir 300 por 19, como no seu exemplo. E talvez nem mesmo com 300.fonte