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

Algorithmes et structures de données Discussion :

méthode d'euler, équation différentielle


Sujet :

Algorithmes et structures de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut méthode d'euler, équation différentielle
    Bonjour, je suis nouveau sur ce forum et je tiens à dire qu'il est très intéressant.

    Alors voici mon problème : je suis en train de créer un logiciel de simulation du botafumeiro (pendule dont la longueur varie). Il m'a donc fallu résoudre une équation différentielle du 2° ordre non linéaire à coefficients variables (ça fait mal )
    Jai donc utilisé la methode d' Euler :
    Pour simplifier, voici l'équation : f''(t) + a(t)*f'(t) +b(t)*sin(f(t)) = 0
    j'ai des conditions initiales, puis je fais la récurrence :
    f(t+h) = f(t)+h*f'(t)
    f'(t+h) = f'(t)+h*f''(t)
    f''(t+h) = -a(t+h)*f'(t) - b(t+h)*sin(f(t+h))

    Mon programme me donne des résultats totalement délirant, j'ai donc tester simplement avec un tableur. meme resultat, par contre si je fixe les coefficients en constante, la méthode fonctionne, j'obtiens une courbe pseudo périodique(c'est le pendule simple)
    Du coup j'aimerais bien savoir si la méthode d'Euler fonctionne aussi avec des coefficients variables, et si oui si vous ne voyez pas une erreur dans mon application de la méthode.

    Voici mon code en pascal:
    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
     
     
             (*conditions initiales*)
               teta[0]   := teta0;
               dteta[0]  := v0;
               ddteta[0] := 0;      
     
               For j:=1 to 100 do       (* METHODE D'EULER*)
     
               begin
     
                    (*excitation sinusoidale de la corde*)
                    l := L0 * cos(2*Pi*fL*j);
                    dl := -L0*2*Pi*fL * sin(2*Pi*fL*j);      {sa dérivée}
     
                    if l=0 then
                            l := L0 * cos(2*Pi*fL*(j-0.1));     (*petite triche pour eviter la division par zero*)
     
                    (*les coefficients*)
                    a := 2*(dl+kf)/l   ;
                    b := g/l  ;
     
                    (* itération*)
                    teta[j] := teta[j-1]+1*dteta[j-1];          (* pas de resolution egal à 1 *)
                    dteta[j] := dteta[j-1]+1*ddteta[j-1];
     
                    ddteta[j] := -a * dteta[j] -b * sin(teta[j]);
    end;
    Si vous pouvez m'indiquer des axes de recherche ce serait sympa.

    merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 73
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 417
    Points : 372
    Points
    372
    Par défaut
    On a déjà discuté de ce problème ici

    L'essentiel de la méthode consiste:

    1. à se ramener au premier ordre
    2. à utiliser de préférence Runge-Kutta d'ordre 4 plutôt qu'Euler.

    Les coefficients variables ne sont pas un obstacle à l'application de cette méthode. L'obstacle serait plutôt le non respect des conditions de Cauchy-Lipschitz, qui peut conduire à de grosses erreurs d'approximation.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    ah oui merci. Ca m'a l'air d'avoir bien été détaillé en plus. Je vais étudier tout ça.
    Et encore merci

Discussions similaires

  1. [XL-MAC 2011] Résolution numérique d'équations différentielles par la méthode d'Euler
    Par mehdi.PM dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/01/2015, 02h48
  2. [Débutant] résoudre une équation différentielles par la méthode d'Euler
    Par rahimdz dans le forum MATLAB
    Réponses: 2
    Dernier message: 26/12/2014, 07h43
  3. Réponses: 2
    Dernier message: 25/02/2010, 18h04
  4. Résolution d'équation différentielle, méthode semi-explicite
    Par AlaaBAZ dans le forum Mathématiques
    Réponses: 8
    Dernier message: 01/07/2008, 09h13

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