Bonjour pour un projet que je dois rendre dans 2 jours 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 programmeEt voilà l'erreur
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
67
68
69
70
71
72
73
74 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()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?runfile('C:/Users/samy_/Desktop/traj2.py', wdir='C:/Users/samy_/Desktop')
N= 5500000
Traceback (most recent call last):
File "<ipython-input-23-3a3e81023870>", line 1, in <module>
runfile('C:/Users/samy_/Desktop/traj2.py', wdir='C:/Users/samy_/Desktop')
File "C:\Users\samy_\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile
execfile(filename, namespace)
File "C:\Users\samy_\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/samy_/Desktop/traj2.py", line 54, in <module>
x_dot, y_dot = f(x_0[i], y_0[i],x_1[i], y_1[i])
File "C:/Users/samy_/Desktop/traj2.py", line 21, in f
l=0.001*math.exp(-0.15*(x-600000))
OverflowError: math range error
Partager