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

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2021
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Équation différentielle du second ordre et méthode d'Euler
    Bonjour!

    J'ai une equation différentielle du second ordre à résoudre: 𝑑²𝜃 = −α𝑑𝜃 − 𝑀𝑠𝑖𝑛𝜃 − 𝑃𝑠𝑖𝑛(𝜃 − τ)
    Comme on nous demande d'utiliser la methode d'euler explicite, je me suis ramené à une equa diff du premier ordre grâce à une forme de Cauchy. Mon probleme est le suivant:l'equation comportant une dérivée première, je ne sais pas comment l'exprimer! Voici un bout de mon code
    Code Python : 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
    32
    import numpy as np
    import matplotlib.pyplot as plt
     
    alpha = 0.5
    M = 2
    P = 1
    tau = 10
    tf, ti, N = 0, 80, 1000
    pas = (tf-ti)/(N-1)
    temps = np.linspace(tf, ti, N)
    y = np.zeros(1000, dtype = float)   
    dy = np.zeros(1000, dtype = float)
    y[0] = 0
    dy[0] = 1
     
     
     
    def pente(y, dy):
     
        D = -alpha*dy -M*np.sin(y) -P*np.sin(y-tau)
        return D
     
     
    for k in range (1,N):
        dy[k] = ???????????????????????????????????????
        y[k] = y[k-1] + pas*pente(y[k-1], dy[k-1])
     
     
    plt.plot(temps, y)
    plt.show
     
    # equation a resoudre: d²y = -aplha*dy -Msin(y) - Psin(y-tau)

    comme vous pouvez le voir, je ne sais pas quoi mettre pour dy .... Quelqu'un aurait il une idée?

    Merci d'avance
    Mathieu

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    25 958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 25 958
    Points : 181 580
    Points
    181 580
    Par défaut


    La méthode générale est d'écrire ton équation du second ordre en deux équations du premier ordre. Ensuite, tu réécris ces deux équations sous la forme "opérateur différentiel dy[1, 2] = un truc en fonction de y[1, 2]", c'est ce que tu implémentes au niveau de dy.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2021
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour et merci pour ta réponse

    Pour mon equation, je me suis bien ramené à deux équations en faisant "un astucieux changement de variable" comme précisé dans mon exercice. Je joins en photo ce que j'ai fait, c'est plus facile et plus lisible que si j'avais écrit à l'ordinateur. Je pense que c'est bien ce que tu m'as dis de faire Dourouc, mais je ne vois/ comprends toujours pas quoi faire pour mon dy




    Nom : info.jpg
Affichages : 67
Taille : 1,59 Mo





    Merci d'avance
    Mathieu

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2021
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2021
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bon après plusieurs essais, j'ai réussi à sortir quelque chose qui "semble" convenir (je dis bien semble parce que je ne sais pas ce que je dois obtenir à la fin)
    Code Python : 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
    import numpy as np
    import matplotlib.pyplot as plt
     
    alpha = 0.02
    M = 2
    P = 2.5
    tau = 10
    tf, ti, N = 0, 80, 1000
    pas = (tf-ti)/(N-1)
    temps = np.linspace(tf, ti, N)
    y = np.zeros(N, dtype = float)   
    dy = np.zeros(N, dtype = float)
    y[0] = 0
    dy[0] = 1
     
     
     
    def pente(y, dy):
     
        D = -alpha*dy -M*np.sin(y) -P*np.sin(y-tau)
        return D
     
     
    for k in range (1,N):
        y[k] = y[k-1] + pas*dy[k-1]
        dy[k] = dy[k-1] + pas*pente(y[k-1], dy[k-1])    
     
    plt.plot(temps, dy)
    plt.show
     
    # equation a resoudre: d²y = -aplha*dy -Msin(y) - Psin(y-tau)


    Si jamais quelqu'un passe par là, est ce qu'il pourrait me confirmer que mon code est bon?

    Merci d'avance
    Mathieu

  5. #5
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    25 958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 25 958
    Points : 181 580
    Points
    181 580
    Par défaut
    y et dy sont censés être des vecteurs à deux composantes, tu n'en mets qu'une seule. Tu devrais plutôt avoir une partie de code comme ceci (avec un mix de listes et de NumPy, ça ne fonctionnera donc sûrement pas en l'état) :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def ode_f(y): 
      dy[0] = bidule
      dy[1] = y[0]
      return dy
     
    y[0], y[1] = conditions initiales
     
    for t in range (1, T):
      y[:, t] = y[:, t - 1] + step * ode_f(y[:, t - 1])

    Ou alors j'ai mal compris ton code et y y correspond à autre chose que le y de ton document manuscrit.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  6. #6
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 1 176
    Points : 2 280
    Points
    2 280
    Billets dans le blog
    9
    Par défaut Équation différentielle du second ordre et méthode d'Euler
    Bonjour ,

    L'écriture de l'équation différentielle amène un réel problème de compréhension: convention admise de notation ou difficultés typographiques ?
    Nom : 2 eq différentielles; écriture.png
Affichages : 59
Taille : 84,1 Ko
    Trois notations différentes pour l'opérateur dérivation, cela commence à faire beaucoup ...

    D'autre part, la variable dont dépendent toutes les grandeurs n'est-elle pas le temps - tout simplement noté (t) ?
    Il semble que cette équation différentielle régisse le mouvement de rotation autour d'un axe horizontal d'un pendule
    # pesant (− 𝑀𝑠𝑖𝑛𝜃)
    # amorti (−α𝑑𝜃)
    # et de plus sollicité par une force constante (𝑃𝑠𝑖𝑛(𝜃 − τ)) décalée en direction d'un angle (τ) par rapport à la verticale: il s'agit par conséquent d'un terme de valeur fixe, et non de la variable temporelle.
    L'équation manuscrite, telle qu'elle est écrite, est incompréhensible et fondamentalement fausse parce que non homogène:
    (τ) représente un temps dans (d2θ/dτ2)
    et un angle dans 𝑃𝑠𝑖𝑛(𝜃 − τ) .

    L'équation différentielle devrait s'écrire (désolé pour la typographie):
    (𝑑²𝜃/𝑑t²) = −α(𝑑𝜃/𝑑t) − 𝑀𝑠𝑖𝑛𝜃 − 𝑃𝑠𝑖𝑛(𝜃 − τ) ;
    on y verrait alors plus clair.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  7. #7
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 1 176
    Points : 2 280
    Points
    2 280
    Billets dans le blog
    9
    Par défaut Équation différentielle du second ordre et méthode d'Euler
    Autre interprétation: l'équation étudiée s'écrit peut-être dans sa forme initiale:
    (𝑑²𝜃/𝑑t²) = −α'(𝑑𝜃/𝑑t) − 𝑀'𝑠𝑖𝑛𝜃 − 𝑃'𝑠𝑖𝑛(𝜃 − ωt) ,
    le dernier terme correspondant alors au couple produit par un champ magnétique tournant à la vitesse angulaire (ω); il s'agit alors d'un mouvement intéressant mais complexe, justifiant le recours à la méthode d'approximation en cause.

    Poser ω = 1 rad/s revient à prendre une nouvelle unité de temps - la période (T = 2Π) du champ tournant - et à introduire un "temps réduit"
    τ = ωt = 2Π.(t/T)
    homogène à un angle, ce qui conduit à l'équation réduite (𝑑²𝜃/𝑑τ²) = −α(𝑑𝜃/𝑑τ) − 𝑀𝑠𝑖𝑛𝜃 − 𝑃𝑠𝑖𝑛(𝜃 − τ)
    au prix de l'introduction de quelques facteurs de conversion.

    # Un exemple approchant est donné ici.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  8. #8
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 1 176
    Points : 2 280
    Points
    2 280
    Billets dans le blog
    9
    Par défaut Équation différentielle du second ordre et méthode d'Euler
    En posant: z = α.θ + θ'
    il vient: z' = α.θ' + θ" = α.θ' - (α.θ' + M.Sin(θ) + P.Sin(θ - t)) = -M.Sin(θ) - P.Sin(θ - t)

    ce qui peut se traduire par les relations de récurrence:
    zk = α.θk + (θk+1 - θk-1)/(2h) ,
    zk+1 - zk-1 = - 2h.(M.Sin(θk) + P.Sin(θk - k.h) ,

    conduisant à
    zk+1 = zk-1 - 2h.(M.Sin(θk) + P.Sin(θk - k.h)) ,
    θk+1 = θk-1 + 2h.(zk - α.θk) .

    Il y a d'autres options, donnant des résultats plus simples, mais plus approximatifs.

    Calculs à vérifier.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

Discussions similaires

  1. [Débutant] Méthode d'Euler sur une équation différentielle du 2è ordre
    Par PAT_The_Whale dans le forum Scilab
    Réponses: 1
    Dernier message: 29/11/2020, 16h44
  2. Réponses: 0
    Dernier message: 07/02/2019, 17h59
  3. équation différentielle du second ordre ode23
    Par bibed dans le forum MATLAB
    Réponses: 1
    Dernier message: 11/06/2009, 03h26
  4. Réponses: 2
    Dernier message: 22/11/2007, 14h58
  5. Réponses: 1
    Dernier message: 08/12/2006, 17h13

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