IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mathématiques Discussion :

[Sparse Matrix] Valeurs et vecteurs propres


Sujet :

Mathématiques

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 48
    Points : 62
    Points
    62
    Par défaut [Sparse Matrix] Valeurs et vecteurs propres
    Bonjour

    (Je suis tout nouveau sur la section matlab donc désolé si c'est au mauvais endroit )

    Voilà j'ai une big (enfin 1000 x 1000 ou plus ou moins mais ca prend déjà un peu de temps à calculer) matrice dont je dois trouver les n (environs 4) premières valeurs propres et vecteurs propres associés (c'est en fait la résolution numérique de l'équation d'onde dans divers puits de potentiels).

    Il est noté dans mes énoncé qu'il est plus rapide en général d'utiliser les "sparse matrix" de matlab. J'ai donc exploré ce coté mais je me heurte à un bete problème : la fonction [V D] = eig(A) ne fonctionne plus. Je suis vite orienté vers la fonction "eigs" dans l'aide mais elle retourne soit les plus grandes valeurs et vecteurs propres (hors je veux les plus petites valeurs propres et leurs vecteurs associés), ou quand je dit explicitement de me prendre les plus petites elle me renvoit des truc absurdes comme des valeurs propres nulles (en soit c'est peut être correcte, mais en gros ce que je cherche c'est simplement l'équivalent de eig(...)

    Voilà, je ne sais pas si quelqu'un a une idée mais ca m'aiderait bien

    Merci d'avance pour votre aide !

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    tout d'abord pour les temps de calcul, as-tu tout de même essayé la syntaxe :
    ?

    Sinon pour eigs, peut-être peux-tu utiliser la syntaxe :
    en prenant k suffisamment grand?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2010
    Messages : 48
    Points : 62
    Points
    62
    Par défaut
    D'abord merci pour ton aide

    Alors en fait c'est une assez bonne idée de mettre k = n le problème c'est que matlab me sort un warning et me dit d'utiliser eig(full(A)) mais bon c'est ce que je faisait déjà ^^ (en soit c'est pas génant mais ca apporte pas grand chose)

    Sinon j'ai calculé le temps c'est exactement le même en fait ... (~2.5 secondes pour 1000 x 1000 et ~24 secondes sur une 2000 x 2000 ... j'essaye pas plus haut x) de toute façon ça sert pas vraiment à quelque chose plus précis)

    (Pour info j'ai une matrice NxN tridiagonale avec des 2 sur la diago principale et des -1 autour)

    J'pense que je vais rester sur mon simplement eig(A) pour l'instant finalement ^^

  4. #4
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    désolé si c'est au mauvais endroit
    Effectivement, c'est au mauvais endroit. Avant de chercher une fonction Matlab qui fait le boulot à ta place, tu dois commencer par choisir l'algorithme que tu veux utiliser. C'est pourquoi je déplace cette discussion dans le forum algo/maths.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  5. #5
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    je veux les plus petites valeurs propres et leurs vecteurs associés
    Une méthode consisterait à prendre les inverses des plus grandes valeurs propres de l'inverse de ta matrice, mais celui-ci n'est pas une matrice creuses.

    Une autre option serait d'appliquer la méthode de la puissance itérée.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    (Pour info j'ai une matrice NxN tridiagonale avec des 2 sur la diago principale et des -1 autour)
    Sur une matrice tridiagonale aussi "simple", je pense qu'il faut commencer par prendre un papier et un crayon.
    De mémoire (bien sûr je peux me tromper), on montre sur des cas comme celui-ci, en développant le calcul du déterminant, qu'il y a une relation de récurence simple entre les polynômes caractéristiques des cas N, N-1 et N-2.

    Bon courage.

  7. #7
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    J'essaie de décortiquer ton problème. Si j'ai bien compris, tu étudies les ondes dans un objet unidimensionnel (corde de violon, tuyau d'orgue, ligne à haute tension, etc.). On a, dans l'ordre:
    1. un phénomène physique, donc régi par les lois de la physique;
    2. les équations (aux dérivées partielles) qui régissent ce phénomène;
    3. la discrétisation, ici par la méthode des différences finies, qui donne un système d'équations différentielles ordinaires;
    4. une tentative de trouver une solution particulière de ce système.

    Alors, quand tu as lancé cette discussion, tu as commencé par la fin, sans penser que tu pouvais déjà avoir fait fausse route dans les étapes précédente. Je pense en particulier que le point 3 constituait une mauvaise idée. Alors, par souci d'efficacité, reformule ton problème en commençant par le commencement, à savoir le point 1.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  8. #8
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par Ehouarn Voir le message
    Sur une matrice tridiagonale aussi "simple", je pense qu'il faut commencer par prendre un papier et un crayon.
    De mémoire (bien sûr je peux me tromper), on montre sur des cas comme celui-ci, en développant le calcul du déterminant, qu'il y a une relation de récurence simple entre les polynômes caractéristiques des cas N, N-1 et N-2.
    +1

    C'est un résultat classique et à connaître :
    http://www.les-mathematiques.net/pho...d.php?2,161723

Discussions similaires

  1. les plus grand valeur et vecteur propre
    Par hanane78 dans le forum MATLAB
    Réponses: 4
    Dernier message: 22/02/2011, 11h50
  2. Réponses: 0
    Dernier message: 06/03/2009, 19h39
  3. Valeurs et vecteurs propres matrice réelle
    Par The Ultimate Gibbon dans le forum Fortran
    Réponses: 2
    Dernier message: 23/09/2008, 15h13
  4. [Maths] Valeurs et vecteurs propres
    Par Bella la vita dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 07/06/2007, 11h46
  5. valeurs et vecteurs propres
    Par Mchupakabra dans le forum Mathématiques
    Réponses: 13
    Dernier message: 28/03/2007, 15h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo