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 :

Intégration suivant une direction


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 34
    Points : 32
    Points
    32
    Par défaut Intégration suivant une direction
    Bonjour à tous,

    J'ai passé ces dernières semaines à réfléchir à la solution d'un problème sous matlab mais je n'ai toujours pas de réponses satisfaisantes. Voici donc mon problème :

    Je possède un fichier ASCII divisé en quatre colonnes :
    - une première colonne (X) représente 2066 coordonnées x dans l'espace;
    - une seconde colonne (Y) représente 2066 coordonnées y dans l'espace;
    - une troisième colonne (Z) représente 2066 coordonnées z dans l'espace;
    - une quatrième colonne (E) représente les 2066 valeurs du champs électrique E_z évaluées en (x,y,z);

    Les différents points où sont évalués ces champs électriques ne sont pas équidistants ni également répartis dans l'espace (avec d'ailleurs x,y,z compris entre -100 et +100). Ce tableau permet ainsi de représenter un champs électrique dans l'espace : Ez(x,y,z), c'est-à-dire une fonction des trois variables spatiales.

    Je souhaiterais déterminer numériquement l'intégrale de E_z(x,y,z) suivant x seulement entre x=-100 et x=+100, ce qui donnera après intégration une nouvelle fonction G(y,z).

    Comment réaliser cette intégration sous Matlab ? La plupart des tutoriels que j'ai consultés explique comment intégrer une fonction de trois variables dans tous l'espace (ou une fonction n variables sur toutes ses variables) mais jamais il n'est question d'intégrale sur une seule variable pour une fonction à plusieurs variables.

    La solution à ce problème n'a pas l'air très simple à faire sous Matlab. Si quelqu'un a une idée, surtout n'hésitez pas à me répondre.

    Merci !

    Casimirs

  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,

    quelle méthode numérique souhaites-tu utiliser pour calculer l'intégrale?

    Ce ne serait pas envisageable d'interpoler tes données sur une grille régulière? Puis d'utiliser trapz pour intégrer selon x?
    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
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 34
    Points : 32
    Points
    32
    Par défaut
    Bonjour Magelan,

    Plus précisément, ce fichier ASCII a été généré par COMSOL. Il s'agissait de déterminer le champs électrique induit par une distribution de charge autour de cette distribution en utilisant la méthode des éléments finis (avec un maillage qui n'est pas régulier étant donnée la forme complètement dissymétrique de la géométrie associée à cette distribution de charge). COMSOL ne permet malheureusement pas de déterminer l'intégrale de ce champ électrique suivant une seule direction.

    Sous Matlab, je ne sais pas du tout quelle méthode numérique utiliser. Peut-être la même que celle utilisée lorsqu'on utilise la commande int ?

    Pour être plus précis, il s'agit en fait de calculer la transformée de Fourier suivant x de Ez(x,y,z) où Ez est définit par un fichier ASCII (voir post précédent). L'outil fft proposé par matlab permet de faire une transformée de Fourier discrète d'une fonction d'une seule variable pa rapport à cette variable mais j'ignore comment adapter cet outil pour qu'il puisse déterminer la TF de Ez suivant x seulement.

    Casimirs

  4. #4
    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
    Voici ce que l'on peut lire dans la doc de la fonction fft :

    ...

    If X is a multidimensional array, fft operates on the first nonsingleton dimension.

    ...

    Y = fft(X,[],dim) and Y = fft(X,n,dim) applies the FFT operation across the dimension dim.
    Du coup, je pense toujours que tu aurais intérêt à interpoler tes valeurs sur une grille régulière.
    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.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 34
    Points : 32
    Points
    32
    Par défaut
    Salut Magelan,


    Très bonne année à tous !

    Merci Magelan pour ta réponse...Je n'avais encore jamais fait ce type d'interpolation mais le résultat est presque pas mal.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 28/11/2012, 11h42
  2. [VB ou C++] intégration d'une page web dans une application
    Par devmat dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/10/2005, 16h14
  3. Réponses: 8
    Dernier message: 20/06/2005, 16h10
  4. [VB.NET] Mise en forme d'une datagrid suivant une valeur
    Par Nesmontou dans le forum ASP.NET
    Réponses: 7
    Dernier message: 17/06/2005, 12h51
  5. Réponses: 5
    Dernier message: 29/09/2004, 12h05

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