Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Diagonalisation de grosses matrices



  1. #1
    invite34596000666

    Diagonalisation de grosses matrices


    ------

    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.

    -----

  2. Publicité
  3. #2
    FonKy-

    Re : Diagonalisation de grosses matrices

    Citation Envoyé par guerom00 Voir le message
    Ce serait pour des dimensions d'environ 50'000.

  4. #3
    invite34596000666

    Re : Diagonalisation de grosses matrices

    Citation Envoyé par FonKy- Voir le message
    C'est très petit, hein

  5. #4
    ventricule

    Re : Diagonalisation de grosses matrices

    Pour les grosses matrices, je crois qu'on a souvent tendance à les tridiagonaliser plutot qu'à les diagonaliser puisque c'est bien plus simple, notamment par la méthode de HouseHolder (http://leleu.ujf-grenoble.fr/~pariss...e/node309.html), mais s'il faut vraiment diagonaliser je peux pas en dire plus...

  6. #5
    space-kro

    Re : Diagonalisation de grosses matrices

    bah apparement ça servirait à rien de diagonaliser vu que tu t'interesse qu'aux valeurs propres du 'milieu' du spectre.

  7. A voir en vidéo sur Futura
  8. #6
    invite34596000666

    Re : Diagonalisation de grosses matrices

    En effet (comme je l'ai dit, c'est de la chimie quantique et ce sont des états excités qui m'intéressent)

    Mais pourquoi dis-tu que cela ne sert à rien de diagonaliser ? Faut bien que je diagonalise pour les avoir, ces valeurs propres

  9. Publicité
  10. #7
    Ksilver

    Re : Diagonalisation de grosses matrices

    Salut !

    je ne sais pas exactement en quoi consiste la methode de Davidson, mais si elle permet de récupérer les plus petites valeurs propres de ta matrices (en valeur absolue ? ) , pourquoi ne pas l'appliquer a la matrice M-k*Id, ainsi tu trouverai les valeurs propres les plus proche de k... non ?

  11. #8
    erik

    Re : Diagonalisation de grosses matrices

    Salut,

    Je vais peut être dire des bétises vu que je n'ai pas encore eu de cours sur l'analyse matricielle (c'est pour cette année). J'ai déja rassemblé un peu de doc, et j'ai l'impression qu'il y'a une méthode qui pourrait peut être t'aider à trouver tes valeurs propres sans diagonaliser ton monstre :
    La méthode de la puissance inverse, regarde l'exercice 26 page 49 sur ce poly : http://www.cmi.univ-mrs.fr/~herbin/PUBLI/polyanamat.ps

    D'après ce que je comprend on construit une suite de vecteurs tel que (avec assez proche de la valeur propre recherchée) pour ça pas besoin d'avoir A entièrement chargé en mémoire (juste un ligne à la fois)

    On a alors qui tend vers

    Il faut que A soit symétrique, ça tombe bien c'est ton cas.

    A voir si ça t'aide.

  12. #9
    invite34596000666

    Re : Diagonalisation de grosses matrices

    Merci de ta réponse

    La méthode de Davidson trouve les quelques valeurs propres les plus basses mais pas en valeur absolue. Vraiment, les plus basses À vrai dire, je ne sais pas pourquoi… Je devrais me pencher sur les rouages de cette méthode pour essayer de comprendre pourquoi ça converge vers les valeurs propres les plus basses… (un article détaillant cette méthode --> http://aros.ca.sandia.gov/~mlleinin/...I_matrices.pdf)

    Les valeurs propres de M-k*Id vont être décalées en bloc de -k. Ça ne m'avance pas malheureusement…

    @erik : je vais jeter un œil. Merci

  13. #10
    invite34596000666

    Re : Diagonalisation de grosses matrices

    Alors… J'ai regardé cette méthode de la puissance inverse et c'est pas trop mal… Il y a quand même 2 problèmes :

    – J'ai besoin d'évaluer (y a une petite erreur dans ton message erik : t'as inversé et ). Faut que je réfléchisse si ça pose un problème…
    – Ça détermine ; il y a donc une petite indétermination sur

    Faut que j'y réfléchisse encore mais en tout cas merci de m'avoir dirigé vers cette méthode que je ne connaissais pas C'est typiquement ce genre de méthode que je recherche : itérative et ne demandant que des multiplications matrice x vecteurs à chaque pas…

Sur le même thème :

Discussions similaires

  1. Grosses difficultés en premiere S
    Par remo0o0 dans le forum Orientation avant le BAC
    Réponses: 39
    Dernier message: 18/04/2013, 21h55
  2. Matrîces semblables / diagonalisation / S.O.S
    Par Esperanza_CH dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 11/12/2007, 21h20
  3. matrices de passage et diagonalisation
    Par christophe_de_Berlin dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 18/05/2006, 10h13
  4. grosses difficultés!!!
    Par biba dans le forum Orientation avant le BAC
    Réponses: 12
    Dernier message: 23/03/2005, 16h19