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

MATLAB Discussion :

[eigs] Utilisation et compréhension de la fonction


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Par défaut [eigs] Utilisation et compréhension de la fonction
    Bonsoir à tous,

    étant donné que j'utilise Matlab et son algorithme de calcul de valeurs propres, je poste mon message ici.

    Le calcul de valeurs propres étant un problème très complexe, je vais essayer d'être aussi clair que possible.

    Pour commencer, j'ai besoin de calculer les valeurs propres et vecteurs propres d'une matrice de taille relativement moyenne. En effet, mon problème est un calcul de valeurs et vecteurs propres de la matrice de raideur (au sens de la résistance des matériaux) d'une structure faite de poutres. Cette structure contenant une petite dizaine de noeuds en moyenne et en considérant qu'à chaque noeud on associe 3 degrés de liberté, cela donne une taille de matrice aux alentours de la trentaine.

    Les vecteurs propres contiennent les déplacements de chacun des noeuds et donc un mode de déformation de la structure. Les valeurs propres représentent l'énergie de déformation (à un facteur près) du mode correspondant. Le calcul donnera donc logiquement 3 valeurs propres nulles correspondant à des modes rigides de la structure. Les autres valeurs propres auront une valeur croissante et positive.

    Au départ, j'utilisais la fonction eig mais cette dernière contient peu de possibilités de paramétrage. La fonction eigs me permet notamment d'éliminer les vecteurs propres à "hautes" valeurs propres et donc éliminer des modes de déformation peu intéressant puisqu'à énergie de déformation élevée (fixer K).

    En fixant SIGMA à une valeur proche de zéro, j'obtiens les valeurs et vecteurs propres qui m'intéressent.

    Les options OPTS me permettent de régler les paramètres de convergence (la tolérance, le nombre maximum d'itérations,...) car je soupçonne un problème de convergence...

    Lorsque je lance le calcul des valeurs propres, il apparait un message de ce type dans la console :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Iteration 1: a few Ritz values of the 20-by-20 matrix:
         0
         0
         0
         0
         0
    Cela voudrait donc dire qu'il a suffit au calcul d'une seule itération ?
    Si je modifie OPTS.tol ou OPTS.maxint, cela ne chage rien au calcul...

    J'ai fait le test de lancer un exemple de l'help de Matlab :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    A = delsq(numgrid('C',15));  
    d1 = eigs(A,5,'sm');
    Et voilà ce qu'il me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Iteration 1: a few Ritz values of the 20-by-20 matrix:
         0
         0
         0
         0
         0
     
    Iteration 2: a few Ritz values of the 20-by-20 matrix:
        1.8117
        2.0889
        2.8827
        3.7374
        7.4954
     
    Iteration 3: a few Ritz values of the 20-by-20 matrix:
        1.8117
        2.0889
        2.8827
        3.7374
        7.4954
    Alors pourquoi plusieurs itérations pour l'exemple et une seule pour moi pour mon calcul ? A quoi correspond les valeurs de Ritz ? En gros, pouvez-vous m'expliquer le principe de la fonction EIGS ?

    Et pour terminer (je sais que c'est peut être pas l'endroit pour poser cette question), pensez-vous que l'algorithme de Matlab est suffisant pour un calcul de valeurs propres dont certaines sont proches les unes des autres ?

    Merci pour votre aide.

    Michael.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Je ne vois pas vraiment l'intérêt d'utiliser EIGS ici à la place de EIG si la taille de la matrice est seulement de 20x20 ou 30x30...

    Pourquoi ne pas simplement trier les valeurs de sorties de EIG ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10
    Par défaut
    Salut,

    Oui je suis d'accord avec vous mais comme je l'ai dit, j'ai soupçonné (peut-être à tort) un problème de convergence et c'est pour cela que j'ai tenté d'utiliser la fonction EIGS qui permet de jouer sur la tolérance mais c'est vrai que cela ne change rien...

    Merci quand même pour votre aide.

Discussions similaires

  1. [SQL SERVER 2005] Utilisation de Exec dans une fonction ?
    Par Dadou74 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 22/09/2006, 22h09
  2. Utilisation de fstream dans une fonction
    Par Silverstone dans le forum SL & STL
    Réponses: 7
    Dernier message: 22/07/2006, 09h55
  3. Utilisation d'un retour de fonction dans un decode
    Par CFVince dans le forum Oracle
    Réponses: 4
    Dernier message: 20/10/2005, 17h22
  4. utilisation de getdate() dans une fonction ?
    Par devdev dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/03/2005, 17h40
  5. Utilisation de Getdate dans une fonction
    Par BaronSamdi dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/11/2004, 10h12

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