CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Simulation trajectoire satellite en chute sur python

Poulie_is_back
Poulie_is_back
Niveau 3
09 juin 2019 à 17:55:14

Bonjour pour le tipe (que je dois rendre dans 2 jours :hap:) j'ai réalisé un programme me permettant de simuler la trajectoire d'un satellite en orbite autour de la Terre et je l'ai ensuite complété en simulant sa chute, j'ai utilisé des équations différentielles pour ça et pour la seconde simulation j'ai juste rajouté les forces de frottement dans les équa diffs. Mais j'obtient une erreur quand je lance mon programme pour la simulation avec frottement .
Voilà mon programme
Code :
from math import *
import numpy as np
import matplotlib.pyplot as plt
import decimal

from pylab import *

m=11000
C=0.5

A=31416
def f(x, y,x_1,y_1,g=9.82):

l=0.001*math.exp(-0.15*(x-600000))
y_2 =(-g*y/((x**2+y**2)**0.5)-(1/2*m)*A*C*l*(y_1)**2)

x_2 =(-g*x/((x**2+y**2)**0.5)-(1/2*m)*A*C*l*(x_1)**2)

return x_2, y_2

temps_finale= 5500
dt = 0.001
N= int(temps_finale / dt)
print ('N=',N)

x_1 = [0]
y_1= [0]

x_0 = [0]
y_0= [0]

x_0[0], y_0[0] = (6745752,0)

x_1[0], y_1[0] = (0,7600)

for i in range(N):

x_dot, y_dot = f(x_0[i], y_0[i],x_1[i], y_1[i])

x_1_i = x_1[i] + (x_dot * dt)
y_1_i = y_1[i] + (y_dot * dt)

x_0_i = x_0[i] + (x_1[i] * dt)
y_0_i = y_0[i] + (y_1[i] * dt)

x_1.append(x_1_i)
y_1.append(y_1_i)

x_0.append(x_0_i)
y_0.append(y_0_i)

x,y=x_0,y_0

X=[a*10**(-5) for a in x]
Y=[a*10**(-5) for a in y]

plt.plot(X,Y)

plt.legend()
plt.show()

et voilà l'erreur l=0.001*math.exp(-0.15*(x-600000))

OverflowError: math range error

Quelqu'un a une idée de ce que je pourrai faire sachant que je suis vraiment débutant sur python et que le temps presse?

jeanjacquesdela
jeanjacquesdela
Niveau 3
09 juin 2019 à 18:12:44

Ton code est vraiment pas agreable ou facile a lire...
Mais si x devient petit devant 6*10^5, par example si x tend vers 0 (je ne sais pas si c'est le cas), alors exp(-0.15*(x-6*10^5)) peut devenir tres grand, trop grand pour que python puisse calculer ce que ca vaut

Poulie_is_back
Poulie_is_back
Niveau 3
09 juin 2019 à 18:14:36

Oui effectivement je m'excuse je n'ai mis aucune explications sur les côtés mais du coup comment je pourrai arranger ça? Je n'ai vraiment aucune idée

jeanjacquesdela
jeanjacquesdela
Niveau 3
09 juin 2019 à 18:17:26

Sans savoir ce que representent les variables et les formules on ne peut pas t'aider plus que ca...
J'imagine que x et y representent une positon, ton I intervient dans tes frottements, mais aucune idee de ce qu'est cense etre ce facteur qui a quand meme l'air foireux a priori

jeanjacquesdela
jeanjacquesdela
Niveau 3
09 juin 2019 à 18:31:06

Aussi, quand on a des frottements modelises en "k*v^2", la vitesse qui intervient c'est la norme du vector vitesse. Donc ton equation differentielle en x par exemple c'est d2x/dt2 = gravite-k*(norme vitesse)^2/m, pas calcule seulement en prenant seulement la vitesse projetee en x.
Et le signe est important aussi, ca s'oppose toujours au mouvement (j'arrive pas a comprendre si c'est le cas dans ton equation).

Ca ca pourra aussi t'etre utile:
https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.integrate.ode.html
http://wwwens.aero.jussieu.fr/lefrere/master/mni/mncs/cours/equa-diff-x4.pdf pages 57-60 pour l'astuce permettant de transformer une equation differentielle d'ordre quelconque (ici, ton ordre c'est 2) en une equation differentielle d'ordre 1. C'est utile pour la resolution numerique.

Poulie_is_back
Poulie_is_back
Niveau 3
09 juin 2019 à 18:33:13

Le facteur l c'est la densité de l'air en fonction de la hauteur que je définie par (x-6*10^5)
x et y sont les positions, x_1 et y_1 les vitesses et x_2 et y_2 les accélérations, je fais une résolution par méthode d'euler et je représente à la fin x en fonction de y

Poulie_is_back
Poulie_is_back
Niveau 3
09 juin 2019 à 18:40:11

Le 09 juin 2019 à 18:31:06 jeanjacquesdela a écrit :
Aussi, quand on a des frottements modelises en "k*v^2", la vitesse qui intervient c'est la norme du vector vitesse. Donc ton equation differentielle en x par exemple c'est d2x/dt2 = gravite-k*(norme vitesse)^2/m, pas calcule seulement en prenant seulement la vitesse projetee en x.
Et le signe est important aussi, ca s'oppose toujours au mouvement (j'arrive pas a comprendre si c'est le cas dans ton equation).

Ca ca pourra aussi t'etre utile:
https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.integrate.ode.html
http://wwwens.aero.jussieu.fr/lefrere/master/mni/mncs/cours/equa-diff-x4.pdf pages 57-60 pour l'astuce permettant de transformer une equation differentielle d'ordre quelconque (ici, ton ordre c'est 2) en une equation differentielle d'ordre 1. C'est utile pour la resolution numerique.

Oui le signe est bien négatif pour la force de frottement ici, après pour la résolution des équa diff ça marche très bien lorsque je ne prend pas en compte les frottements, ça me donne une trajectoire circulaire ce qui est totalement cohérent avec ma théorie.

jeanjacquesdela
jeanjacquesdela
Niveau 3
09 juin 2019 à 18:41:30

Ok donc x est cense etre l'altitude en m, j'imagine. Donc ton x vaut 0.001 a x=6*10^5. Si x vaut 10^5, ton facteur vaut a peu pres 0.001*exp(10^4)....

Poulie_is_back
Poulie_is_back
Niveau 3
09 juin 2019 à 18:46:28

Oui voila c'est ça

jeanjacquesdela
jeanjacquesdela
Niveau 3
09 juin 2019 à 18:46:28

Ca change pas que la formule des frottements est fausse. Et negatif ou positif je sais pas, mais quand t'ecris
y_2 =(-g*y/((x**2+y**2)**0.5)-(1/2*m)*A*C*l*(y_1)**2)
a premiere vue je lis que la gravite et les frottements sont tout le temps dans la meme direction (les deux termes ont l'air d'etre negatif); ce qui serait faux

Poulie_is_back
Poulie_is_back
Niveau 3
09 juin 2019 à 18:47:43

Ben quand j'ai effectué mes projections c'est ce que je trouvais :-(

jeanjacquesdela
jeanjacquesdela
Niveau 3
09 juin 2019 à 18:48:00

Ok, mais donc ca marche pas quand ton x devient trop petit parce que ton I est beaucoup trop grand.

Poulie_is_back
Poulie_is_back
Niveau 3
09 juin 2019 à 18:50:56

Yes je vois mais il faut absolument que je trouve une solution à ce problème, j'avais effectué des recherches avant mais je ne comprenais rien

jeanjacquesdela
jeanjacquesdela
Niveau 3
09 juin 2019 à 19:17:11

tu peux deja faire le cas ou la densite est constante, et voir si tes resultats sont coherents (pour ca va falloir avoir la bonne formule et le bon signe des frottements)

Pour la densite en fonction d el'altitude je sais pas d'ou sort ta formula mais ca a pas l'air de ressembler a ce que ca devrait etre ce que tu vois toi meme, donc cherche simplement quelque chose de logique pour la modeliser

Poulie_is_back
Poulie_is_back
Niveau 3
09 juin 2019 à 19:22:27

Pour une densité constante ça me met une autre erreur overflowerror: (34, 'Result too large') :hap:

jeanjacquesdela
jeanjacquesdela
Niveau 3
09 juin 2019 à 19:23:10

ok donc tu peux chercher un peu toi meme d'ou ca vient

Sous forums
  • Cours et Devoirs
  • Histoire
  • Métiers & Orientation
  • Environnement & Nature
  • Politique
  • Philosophie