Salut à tous
Je cherche une routine Fortran (ou une méthode que je pourrais coder moi-même…) pour diagonaliser de grosses matrices en ne retenant que certaines valeurs propres.
Mes matrices sont gentilles : réelles et symétriques (c'est de la chimie quantique ). Ce serait pour des dimensions d'environ 50'000. Pour cette raison, un programme nécessitant explicitement un tableau de dimension N(N+1)/2 est déjà hors de question…
Alors, pourquoi ne puis-je pas utiliser les codes de chimie quantique me demanderez-vous En effet, pour ce genre de truc, on utilise généralement la méthode Davidson qui ne fait jamais appel à la matrice entière. C'est une méthode itérative qui permet de récupérer les quelques valeurs propres les plus basses. Et c'est là que le bât blesse…
En effet, j'ai pour ma part besoin de quelques valeurs propres mais pas les plus basses. Elles sont « au milieu » du spectre. Jusqu'ici, j'utilise des routines LAPACK qui me permet de spécifier une valeur minimale et maximale pour les valeurs propres à trouver. Mais ces routines requièrent explicitement toute la matrice (le triangle en tout cas) et le code est ainsi effectivement limité…
Voilà. Peut-être y a-t-il sur ce forum des personnes qui s'y connaisent dans ce domaine…
Merci d'avance pour vos réponses.
-----