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

Calcul scientifique Python Discussion :

Résolution d'une équation différentielle


Sujet :

Calcul scientifique Python

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Résolution d'une équation différentielle
    Bonjour ,
    J'aimerais ameliorer la précision de ma résolution.

    Mon problème :
    Une équation différentielle du second ordre :
    x''=k(x+b)

    J'ai donc transformé mon équation en 2 équations du premier ordre :
    x'=v
    v'=k(x+b)

    J'ai donc tenté de la résoudre avec la méthode d'Euler , voici mon code :

    def eul(dt):
    for i in t:
    v[i+1] = v[i]+ f(x[i])*dt
    x[i+1] = x[i]+ v[i+1]*dt
    return x,v;

    avec f(x)=k(x+b)

    je suis censé comparer le résultat obtenu avec une méthode plus précise et je n'arrive pas à trouver une methode fiable de Runge-Kutta d'ordre 2 ou plus avec les outils qui me sont donnés , étant donné que le temps n'est pas une variable de la fonction f .

    Si quelqu'un pouvait m'aider à écrire cette résolution cela m'aiderais beaucoup .

    Merci d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Ca fait longtemps que j'ai plus fait d'équations différentielles, mais voilà mon idée:

    Le principe de la méthode de Runge-Kutta d'ordre 2 est d'estimer la dérivée au milieu de l'intervalle, donc:

    v[i+1] = v[i] + f(x[i+1/2]) * dt
    x[i+1] = x[i] + v[i+1/2] * dt

    (ce sont des équations, pas du code)
    On peut estimer v[i+1/2] et x[i+1/2] au 1er ordre:

    v[i+1/2] = v[i] + f(x[i]) * dt/2
    x[i+1/2] = x[i] + v[i] * dt/2

    En remplaçant cela dans les deux premières équations, on a finalement

    v[i+1] = v[i] + f(x[i] + v[i] * dt/2) * dt
    x[i+1] = x[i] + (v[i] + f(x[i]) * dt/2) * dt

    Voilà, il se peut que je fasse erreur mais il me semble que ça se tient...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 91
    Points : 65
    Points
    65
    Par défaut
    Il n'y a pas de solution exacte?
    Si oui, peut-être sympy est un bon outil.

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/01/2013, 10h52
  2. Réponses: 0
    Dernier message: 12/07/2011, 23h15
  3. Réponses: 2
    Dernier message: 25/02/2010, 18h04
  4. Résolution d'une équation différentielle
    Par ramrouma dans le forum MATLAB
    Réponses: 1
    Dernier message: 12/02/2007, 14h11
  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