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

Calcul scientifique Python Discussion :

les + petites et plus grandes valeurs propres généralisées sur des matrices creuses de grande taille


Sujet :

Calcul scientifique Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Points : 6
    Points
    6
    Par défaut les + petites et plus grandes valeurs propres généralisées sur des matrices creuses de grande taille
    bonjour!
    j'effectue mon PFE dans une entreprise et je reprend le code déjà écrite par un autre étudiant.le code est écrit en matlab et on utilise comsol pour générer les matrice.
    mais j'utilise octave pour compiler car y a un soucis entre matlab/comsol.
    le problème est que le code ne donne pas les bonnes valeurs et des erreurs d'ordre 1%.
    il me retourne ceci: "warning: axis: omitting nonpositive data in log plot"

    je souhaite trouver un moyen de calculer les + petites et plus grandes valeurs propres généralisées sur des matrices creuses de grande taille (ce que fait eigs en théorie !).
    un professeur m'a suggéré d'utiliser la librairie SLEPc . Comme c'est du C++ la solution la plus simple, si ça marche est d'utiliser un "binder" python appelé slepc4py.
    j'ai déjà télécharger la librairie reste à tester et à écrire le code qui fait la glue entre notre code octave / comsol ... et slepc ....
    mon problème est que je ne sais pas trop comment écrire le code.
    voici le code que j'utilise et la fonction eigs ne marchera pas:
    je pourrai vous envoyé le reste des codes.


    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    function [y, cte_c] = y_etoile(mu,A0,A)
     
    % Ks  matrice de rigidité totale calcule en rassemblant la décomposition affine
    % ASCALH1, matrice produit scalaire
     global ASCALH1;
    global s;
    t5=clock;
     
    fprintf('y_etoile : Calcul v.p et vecteurs propres ....');
    H1=full(ASCALH1);
      Nbr=size(A0,1);
      Q=size(A,2)/size(A,1) ;
      Ks=A0;
      for q=1:Q
        Ks = Ks + Theta_A(q,mu).*A(:,(q-1)*Nbr+1:q*Nbr);
      end;
      Kss=0.5.*(Ks+Ks');
     
     %[vectp lambda]= eigs(Kss,ASCALH1,1,'sm',s);
     
      [w, lambda]= eig(full(Kss),H1);
      [cte_c, indice]= min(diag(lambda)) ;
      vectp=w(:,indice); %  vecteur associée à la plus petite valeur propre calculé.  
     
       y(1)= (vectp'*A0*vectp)./ (norme_H1(vectp))^2;
     for q=1:Q
          Aq=A(:,(q-1)*Nbr+1:q*Nbr);
          y(q+1)= (vectp'*Aq*vectp)./(norme_H1(vectp))^2;
      end;
     
    end
    je vous remercie

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Pas compris. En tout cas, si à la fin ça doit finir en Matlab, autant ne faire que du Matlab.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    En fait mon gros problème est d' utiliser la librairie pour calculer la plus petite et la plus grande valeur propre en utilisant la fonction matlab eigs.
    On me demande d'ecrire un code qui me permettra d'utliser le code python sous matlab

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    OK, tu vas pouvoir installer toute la panoplie de Python pour les scientifiques tout en utilisant Matlab. Bon courage, il n'y a pas de pont direct à ma connaissance (aucun intérêt pour Matlab de faire ça pour son concurrent principal !).
    Et il y a du eigs sous Python aussi, je crois même que c'est la même bibliothèque qui est utilisée.

Discussions similaires

  1. Réponses: 7
    Dernier message: 02/08/2013, 13h32
  2. Calculs des plus grandes valeurs propres
    Par Swaraj dans le forum Calcul scientifique
    Réponses: 9
    Dernier message: 27/06/2011, 10h04
  3. probleme aux valeurs propres généralisées
    Par anthonystaltaro dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 01/04/2009, 10h13
  4. Réponses: 1
    Dernier message: 13/06/2007, 22h36

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