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 :

Programme de résolution d'équations différentielles avec odeint


Sujet :

Calcul scientifique Python

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2024
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 19
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2024
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Programme de résolution d'équations différentielles avec odeint
    Bonjour à tous,

    Mon TIPE (projet à faire en classes préparatoires) porte sur la modélisation du vol d'un frisbee.
    Je sais que les équations différentielles que j'obtiens sont bonnes mais mon programme ne renvoie pas les bonnes courbes. Mon niveau modeste en programmation ne m'a pas permis de comprendre pourquoi jusqu'à présent.
    Si l'un d'entre vous pouvait se pencher dessus, ce serait une aide très appréciable pour moi car je présente mon TIPE vendredi prochain (12/06).

    Je joins une image des équations différentielles à résoudre et du programme ainsi que le fichier du programme lui-même.

    J'espère que ce message correspond bien au type d'aide que l'on peut solliciter sur ce forum.

    Merci d'avance.

    Nom : Equations Différentielles.png
Affichages : 119
Taille : 45,9 KoNom : Programme Odeint.png
Affichages : 100
Taille : 53,9 Ko

    python odeint.py

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 661
    Points : 1 159
    Points
    1 159
    Par défaut
    Bonjour,

    Je ne maitrise pas assez ce module pour trouver le problème à la simple lecture. Est-ce qu'une résolution d'équations différentielles est un prérequis ? Personnellement je partirais sur une approche résolution temporelle avec un schéma d'intégration hyper basique de type Newton. Ci-dessous un exemple (ne faites pas attention à la structure très moyenne du code) :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    mport numpy as np
    import matplotlib.pyplot as plt 
     
    # Constantes
    g = 9.81
    m = 0.2
    v0 = 14
    x0 = 0
    y0 = 1
    a = 10
    rho = 1.30
    ct = 0.033
    cp = 0.080
     
    # Surface de référence
    A = np.pi * (0.4/2)**2
     
    # Paramètres de temps
    duree = 15
    N = 1000
    dt = duree / N
    t = np.linspace(0, duree, N)
     
     
    def solve():
        ts, xs, ys = list(), list(), list()
        x, y = x0, y0
        vx, vy = v0, 0.0
        for t in np.linspace(0, duree, N):
            if t != 0.0:
                # Calcul de l'accélération
                ax = -0.5 * rho * A * ct * (vx**2 + vy**2) / m
                ay = 0.5 * rho * A * cp * (vx**2 + vy**2) / m - g
                # Integration pour la vitesse
                vx += ax * dt 
                vy += ay * dt
                # Integration pour la position
                x += vx * dt 
                y += vy * dt
            if y <= 0.0:
                break
            # Enregistre
            ts.append(t)
            xs.append(x)
            ys.append(y)
        return ts, xs, ys
     
    ts, xs, ys = solve()
     
    fig, axes = plt.subplots(2, sharex=True)
     
    axes[0].plot(ts, xs)
    axes[0].set_ylabel('X (m)')
    axes[1].plot(ts, ys)
    axes[1].set_ylabel('Y (m)')
     
    for ax in axes:
        ax.grid(True)
    axes[-1].set_xlabel('Temps (s)')
     
    plt.show()
    L'idée est de calculer l'accélération à chaque pas de temps, puis d'intégrer la vitesse et ensuite l'accélération.

    J

Discussions similaires

  1. Programme pour établir une connexion ssh avec un serveur sur unix
    Par sanaline dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 15/06/2011, 13h21
  2. Réponses: 7
    Dernier message: 28/04/2011, 18h52
  3. Invoquer un programme externe C et l'arrêter avec JAVA
    Par MrMust dans le forum Général Java
    Réponses: 13
    Dernier message: 03/10/2008, 01h15
  4. Programme fonctionnant sur Eclipse mais pas avec le jar?
    Par kirik dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 10/02/2004, 14h43

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