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 :

Appliquer une méthode d'Euler en 3D sur une EDP?


Sujet :

Mathématiques

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 51
    Points : 34
    Points
    34
    Par défaut Appliquer une méthode d'Euler en 3D sur une EDP?
    Bonjour!


    J'ai besoin de modéliser une onde de pression (onde sonore) en 3 dimensions. Pour 1 seule dimension, j'y arrive parfaitement : je découpe une longueur en n pas, et après application de la méthode d'Euler, je calcule à chaque nouveau temps le profil de pression grace à l'équation :
    P(x,t+k) = (2- r^2)*P(x,t) + r^2*(P(x+h,t) + P(x-h,t) ) - P(x,t-k)

    avec k : pas de temps
    h : pas d'espace
    r= ck/h (qui doit être égal à 1 si on veut une simulation "sans bruit")

    Ca marche parfaitement, j'ai une belle propagation avec une reflexion itou itou ... Maintenant pour la modélisation 3D c'est un peu plus dur. J'essaie déjà de commencer par un truc 2D, je me dis qu'une fois que j'aurais le 2D (qui en plus est plus simple à représenter!), j'aurais facilement le 3D.

    Mon problème est lors de l'écriture du début de la méthode d'Euler. En effet, en 1D, c'est simple, on a :

    P(x+h,t)= P(x,t) + h*dP/dx(x,t) + h²*d²P/dx²(x,t)

    Apres on fait pareil avec P(x-h,t), on somme et apres quelques manips (on utilise l'équation de d'Alembert), on obtient la formule ci dessus.

    Mais maintenant, x et h ne sont plus des scalaires mais des vecteurs. J'ai tenté d'appliquer la même technique en remplaçant la dérivée par un gardient, mais j'obtiens un résultat qui me surprend : j'ai exactement la même formule que précédemment ! En réflechissant un petit peu, je me suis rendu que cela revenait à dire que je pouvais prendre h=(1,0) comme vecteur 'pas' pour calculer ma solution. Mais physiquement, je me rend compte que ca ne peut pas marcher!

    Qui pourrait m'aiguiller?

  2. #2
    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 : 84
    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 !

    Malgré toute l'admiration qu'on peut avoir pour mon compatriote Léonard Euler, il convient de se remémorer ce qu'on a dit de sa méthode d'intégration des équations différentielles ordinaires:
    Admirez, mais n'appliquez pas!
    Alors, que faire? Avant de commencer, il convient de répondre à quelques questions:
    1. Quelle est la forme, c'est-à-dire la géométrie du "machin" que tu étudies?
    2. De quelle matière est-il rempli: solide, liquide ou gazeux?
    3. Les caractéristiques de cette matière sont-elles linéaires?
    4. Si la matière est un fluide, son déplacement est-il laminaire ou turbulent?
    5. Etudies-tu un régime permanent ou un régime transitoire?


    C'est seulement quand tu auras répondu à ces questions qu'il sera possible de choisir l'algorithme le mieux adapté.

    A bientôt.
    Jean-Marc Blanc

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 51
    Points : 34
    Points
    34
    Par défaut
    En fait c'est un sujet donné par l'école et on ne nous laisse pas trop le choix de la méthode ... je suis bien consciens que Euler est complètement pourrie niveau précision mais j'ai pas trop le choix...

    Mais pour répondre à tes question :
    1. Une cuve rectangulaire
    2. Liquide : de l'eau
    3. Pour la pression je pense que l'eau est bien linéaire
    4. ... Joker
    5. Régime permanent

    Si je n'étais pas brimé dans mon expressivité, j'utiliserais un RK4, mais je ne connais pas trop les domaines d'applications des algos donc dis ça car c'est une méthode que je sais coder et qui est bien meilleur que Euler.

  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 : 84
    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 ne crois pas que ça soit ta faute, mais ton problème est plein d'incohérence: Si on cherche le régime permanent d'un dispositif linéaire, il est absurde d'utiliser une méthode d'intégration pas par pas.

    D'autre part, il est essentiel de savoir si ton liquide présente une surface libre sur laquelle on a des vagues ou s'il est confiné dans un parallélipipède dont les 6 faces sont rigides.

    Pour gagner du temps, je te suggère de poster une copie exacte et complète de l'énoncé de ton problème.

    Jean-Marc Blanc

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 51
    Points : 34
    Points
    34
    Par défaut
    Le problème n'est pas plus précis que cela. On doit modéliser une onde émise par un emetteur dans une cuve parapéllipédique (on suppose donc que le haut est libre).
    Pour nous aider un peu, on nous donne la formule 1D avec la démo (comme je l'avais indiqué dans mon permier post) :
    P(x,t+k) = (2- r^2)*P(x,t) + r^2*(P(x+h,t) + P(x-h,t) ) - P(x,t-k), mais c'est tout.

    Pour l'instant, je ne m'occupe pas trop des reflections, effets de bords et tout ca, ca viendra après (dixit ma prof, c'est plu facile en 3D ... à moitié convaincu je suis menfin...).

    Sinon, de mon côté, j'ai tenté autre chose, en partant de :
    P(M + (h,0),t) = P(M,t) + h * dP/dx(M,t) + ...
    de même avec P(M -(h,0),t)
    et avec P(M+(0,h),t) = P(M,t) + h * dP/dy(M,t)+ ...

    Pour arriver à :
    P(M,t+k) = (2-4*r²)P(M,t) + r²(P_autours) - P(M,t-k)

    avec r = ck/(2h²)
    et P_autours la somme des 4 cases (en haut, en bas a gauche a droite) adjacente à celle considérée.

    J'ai implémenté ça, mais j'ai des résultats numériques bizares (soit une divergence énorme, soit des artefacts forts désagréables ... ) .Faut il que je tiennes également compte des cases 'en diagonale'?

    Sinon, quelle méthode utilise-t-on pour chercher le régime permanent d'un système linéaire??

    Merci,
    Seb

    PS : il manque une balise [TEX] dans ce forum!

  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,

    Tu es sûr de ta formule pour le cas 1D?
    P(x,t+k) = (2- r^2)*P(x,t) + r^2*(P(x+h,t) + P(x-h,t) ) - P(x,t-k)
    Je n'ai pas bien saisi la méthodologie dont tu parles, mais j'arrive de mon coté, lorsque je discrétise une équation d'Alembert ( c.-à-d.: dérivée seconde par rapport au temps de la pression = c^2 fois laplacien de la pression ; c'est vrai qu'une balise [TEX] serait appréciable...) par différences finies centrées d'ordre 2 en espace:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Laplacien P(x_i,t) = (P(x_{i+1},t)-2P(x_i,t)+P(x_{i-1},t))/(\Delta x)^2
    et un schéma temporel explicite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    P"(x,t_k) = (P(x,t_{k+1})-2P(x,t_k)+P(x,t_{k-1}))/(\Delta t)^2
    j'arrive à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    P(x_i,t_{k+1})=2(1-r^2)P(x_i,t_k) -P(x_i,t_{k-1}) + r^2 (P(x_{i+1},t_k)+P(x_{i-1},t_k))
    avec r^2=c^2(\Delta t)^2/(\Delta x)^2 où (\Delta t) et (\Delta x) sont les pas de temps et d'espace.

    Dans le cas 2D, voir 3D, il faudrait prendre en compte les nouvelles directions dans l'expression du laplacien. Par exemple en 2D, si le pas en espace suivant la direction y est (\Delta y):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Laplacien P(x_i,y_j,t) = (P(x_{i+1},y_j,t)-2P(x_i,y_j,t)+P(x_{i-1},y_j,t))/(\Delta x)^2
    +(P(x_i,y_{j+1},t)-2P(x_i,y_j,t)+P(x_i,y_{j-1},t))/(\Delta y)^2
    Il ne te restes alors plus qu'à implémenter la prise en compte de tes conditions aux limites (de la même façon comme tu l'as déjà fait pour le 1D) et cela devrait faire l'affaire.

    Ehouarn

  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 : 84
    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 !

    On peut raisonnablement supposer que ton émetteur produit une onde sinusoïdale. Alors pourquoi pas utiliser la notation complexe dans un schéma aux différences finies? Parce qu'utiliser la méthode d'Euler pour calculer un régime permanent est une aberration!

    Jean-Marc Blanc

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/06/2014, 12h50
  2. Réponses: 3
    Dernier message: 20/04/2009, 10h13
  3. [ActiveX] Retour de BSTR sur une méthode externe
    Par mr.saucisse dans le forum MFC
    Réponses: 28
    Dernier message: 11/01/2006, 16h47
  4. Requete sur une table qui pointe 2 fois sur une autre
    Par Satch dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/01/2006, 09h48
  5. Réponses: 3
    Dernier message: 16/04/2004, 17h51

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