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 :

Equation différentielle vectorielle


Sujet :

Calcul scientifique Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Equation différentielle vectorielle
    Bonjour
    J'essaye de coder un algorithme qui résout les équations du problème à N corps. Cependant quand je trace la trajectoire avec la méthode d'Euler pour 2 corps j'obtiens des droites ce qui est manifestement faux. Si vous pouviez me dire où est l'erreur ça serait très sympathique car je n'ai pas cessé de chercher. Merci d'avance.(et ça ne fonctionne pas aussi pour les méthodes de Runge-Kutta et de Verlet)

    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
    62
    63
    64
    65
    66
     
     
    def mullist(coeff,L):
        for k in range(0,len(L)):
            L[k]=coeff*L[k]
        return(L)
     
    def somlist(L,M):
        N=[]
        for k in range(0,len(L)):
            N.append(L[k]+M[k])
        return(N)
     
    def diflist(L,M):
        N=[]
        for k in range(0,len(L)):
            N.append(L[k]-M[k])
        return(N)
     
    def normevecteur(V):
        normecarre=0
        for k in range(0,len(V)):
            normecarre+=V[k]**2
        return(sqrt(normecarre))
     
     
     
    def Force_entre_deux_corps(m1,p1,m2,p2):#force de 2 sur 1 à un instant fixé
        G=39.4
        Force=[0,0,0]
        for k in range(0,3):
            Force[k]=(-G*m1*m2*(p2[k]-p1[k]))/(normevecteur(diflist(p2,p1))**3)
        return(Force)
     
    def Force_entre_N_corps(j,m,position): #Résultante des forces exercées sur j à un instant fixé
        Resultante=[0,0,0]
        for k in range(0,len(position)):
            if k!=j:
                Force=Force_entre_deux_corps(m[j],position[j],m[k],position[k])
                Resultante[0]=Resultante[0]+Force[0]
                Resultante[1]=Resultante[1]+Force[1]
                Resultante[2]=Resultante[2]+Force[2]
        return((Resultante))
     
    def Acceleration(m,position):
        L=[]
        for k in range(0,len(position)):
            L.append(mullist(1/m[k],Force_entre_N_corps(k,m,position))) #Calcul du vecteur acceleration pour chaque corps"
        return(L)
     
    def fonction_de_passage(m,Y):
        f=[Y[1],Acceleration(m,Y[0])]
        return(np.array(f))
     
    def suite_Euler_pas_fixe(m,t_min,t_max,n,position_initiale,vitesse_initiale):
        t=t_min
        temps=[t_min]
        h=(t_max-t_min)/n  #pas de discrétisation
        Y_corps=np.array([position_initiale,vitesse_initiale])
        Y_temps=[list(Y_corps)]
        while t<=t_max:
            Y_corps=Y_corps+h*fonction_de_passage(m,Y_corps)
            Y_temps.append(list(Y_corps))
            t+=h
            temps.append(t)
        return(temps,np.array(Y_temps))

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour

    Personne ne trouve l'erreur ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    S'il vous plait, je ne fais que chercher.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 285
    Points : 36 773
    Points
    36 773
    Par défaut
    Citation Envoyé par maths1 Voir le message
    Personne ne trouve l'erreur ?
    Vu le peu d'informations que vous donnez (le code n'est pas fonctionnel, il faut construire son jeu de tests,...), le temps à passer pour savoir si ce que vous avez voulu faire est raisonnable (vous l'avez piqué où votre algo?) et le nombre d'exécution (avec des "print") pour voir ce qu'il se passe,.... le nombre de personnes qui pourraient être tentées de debogguer ce code à votre place est forcément limité (on a des tas de trucs plus sympa à faire, non?)
    De plus ceux qui en ont besoin ne vont pas "coder" mais utiliser des bibliothèques numériques qui offrent ce genre de fonctions... ce qui limite d'autant plus le nombre de candidats.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je n'utilise pas les méthodes implémentées car je réalise ce programme dans le cadre d'un TIPE. Mais je ne vois vraiment pas ce qui ne fonctionne pas.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 285
    Points : 36 773
    Points
    36 773
    Par défaut
    Citation Envoyé par maths1 Voir le message
    Je n'utilise pas les méthodes implémentées car je réalise ce programme dans le cadre d'un TIPE. Mais je ne vois vraiment pas ce qui ne fonctionne pas.
    Si c'est dans le cadre d'un TIPE, arriver à comprendre pourquoi votre code ne fonctionne pas est la partie la plus intéressante de l'exercice puisque c'est là que vous allez découvrir la différence entre ce que vous pensez que la machine fera et ce qu'elle fait vraiment (et l'intérêt de l'instruction "print" pour visualiser ce qu'il se passe)...
    Et de l'intérêt de découper son code en parties testables indépendamment avec des jeux de tests significatifs.

    Dit autrement, faire tomber le code en marche a peu d'intérêt par rapport à tout ce que vous allez découvrir pour y arriver (ou pas).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Oui mais j ai teste de nombreuses choses mais rien n y fait

Discussions similaires

  1. Equation différentielle
    Par samwe dans le forum Fortran
    Réponses: 5
    Dernier message: 03/02/2009, 18h12
  2. Equation différentielle non lineaire
    Par polal2is dans le forum MATLAB
    Réponses: 7
    Dernier message: 04/12/2008, 17h41
  3. comment trouvé les racines d'une equation différentielle
    Par samplaid dans le forum Mathématiques
    Réponses: 4
    Dernier message: 05/11/2007, 16h53
  4. Equation différentielle du second ordre
    Par moustiqu3 dans le forum MATLAB
    Réponses: 1
    Dernier message: 21/05/2007, 09h38

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