Partage
  • Partager sur Facebook
  • Partager sur Twitter

Résolution d'equa. diff par méthode d'Euler

Anonyme
    22 mars 2015 à 14:54:25

    Salut !

    J'essaye de résoudre numériquement, avec Python, l'équation différentielle suivante :

    \[\ddot{\theta} + (1- \cos 2 t) \sin \theta = 0\]

    Avec la méthode d'Euler, pourtant je trouve une courbe qui n'est pas tout à fait ce qu'elle devrait être :

    On devrait plutôt observer des oscillations dont l'amplitude devient de plus en plus élevée et de moins en moins élevée, périodiquement.

    Voici mon code, je n'arrive pas à trouver l'erreur que j'ai faite :

    def mathieu(theta_0, v_0, T, n): #theta_0 la position initiale, v_0 la vitesse initiale, T la durée de l'expérience et n le nombre d'intervalles
        h = T/n
        Time = [k*h for k in range(0, n)]
        theta = [theta_0]
        theta_prim = [v_0]
        theta_pprim = [0]
        for i in range(1, n):
            theta_pprim.append(-(1-m.cos(2*Time[i-1]))*m.sin(theta[i-1]))
            theta_prim.append(theta_prim[i-1] + h*theta_pprim[i])
            theta.append(theta[i-1] + h*theta_prim[i-1])
        
        return theta, Time

    Merci d'avance,

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      22 mars 2015 à 22:28:11

      Salut, sauf erreur de ma part, je pense que ton code est correct. Maintenant, ton problème, je pense, c'est plutôt que ton pas de temps est trop grand et que du coup, tu ne vérifies pas le critère de stabilité de la méthode d'Euler et \(\theta\) diverge.

      EDIT : en relisant ton code, je constate que tu utilises theta_pprim[i] dans le calcul de theta_prim au lieu de theta_pprim[i-1]. Cela dit, ça reste correct à l'ordre 1, donc ça ne doit pas suffire à expliquer le problème.

      -
      Edité par Anonyme 23 mars 2015 à 16:49:38

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        23 mars 2015 à 19:14:22

        Après discussions avec mon prof de physique, tu avais vu juste : le code est correct. 

        J'ai oublié un facteur 0.2 devant le cos et j'ai un peu poussé l'angle \(\theta_{0}\), avec des valeurs mieux choisies tout fonctionne !

        Merci quand même !

        • Partager sur Facebook
        • Partager sur Twitter

        Résolution d'equa. diff par méthode d'Euler

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown