Condition sur les valeurs d'un tableau en Python
Résolu/Ferméyg_be Messages postés 23184 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 septembre 2024 - 1 nov. 2022 à 18:43
- Condition sur les valeurs d'un tableau en Python
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Excel cellule couleur si condition texte - Guide
4 réponses
1 nov. 2022 à 15:33
bonjour,
si tu veux nous montrer ton code, merci d'utiliser ceci: https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
from scipy.integrate import odeint import numpy as np from matplotlib import pyplot as plt from math import pi from math import sqrt t = np.linspace(0, 50000, 10000) G = 6.67e-11 M = 8.6e19 R = 252.2 A = 0 def F(f, t): [r, rp, theta] = f thetap = C /(r**2) return [rp,r*thetap**2-G*M/(r**2),thetap] n = input("\n" + "Vitesse orthoradiale initiale en m/s: ") p = input("\n" + "Vitesse radiale initiale en m/s: ") m = input("\n" + "Altitude initiale par rapport à la surface en km: ") r0 = float(m)*1000 + float(R)*1000 thetap0 = float(n) / r0 C = thetap0 * (r0 ** 2) f0 = [r0, p, 0] f = odeint(F, f0, t) r = f[:, 0] theta = f[:, 2] # ============================================================================= # # ============================================================================= x = (r * np.cos(theta))/1000 y = (r * np.sin(theta))/1000 circle1 = plt.Circle((0, 0), R+A , color='b') circle2 = plt.Circle((0, 0), R , color='sienna') fig, ax = plt.subplots() ax.set_aspect(1) ax.add_artist(circle1) ax.add_artist(circle2) plt.plot(x, y, "steelblue") plt.axis("equal") plt.show() a = round(((max(r)/1000)-R), 2) p = round(((min(r)/1000)-R), 2) d = ((a+p+2*R)/2)*1000 P = sqrt((4*(pi**2)*(d**3))/(G*M)) k = round((P/60), 2) print("\n" + "Périgée = " + str(p) + " km" + "\n", "Apogée = " + str(a) + " km") print("\n" + "Période de révolution = " + str(k) + " min" ) if a < A: print("\n" + """Votre orbite pénètre l'atmosphère !""") if p < A: print("\n" + """Votre orbite pénètre l'atmosphère !""") if p < 0: print("\n" + "Votre orbite pércute le sol !")
Donc la les paramètres de M, R et A sont ceux de Encelade mais peut importe. C'est surtout au niveau de plt.plot et par la qu'il faut que j'ajoute une condition pour afficher uniquement l'orbite au dessus de la surface.
1 nov. 2022 à 16:31
peut-être ainsi:
Rm=R*1000 r[r<Rm]=None
1 nov. 2022 à 16:40
ou bien:
r = f[:, 0] Rm=R*1000 fl=r>Rm r=r[fl] theta = f[:, 2] theta=theta[fl]
Si j'ai bien compris, tu veux afficher seulement ce qui est au dessus de l'écliptique?
J'imagine que tu devras calculer les projections sur l'écliptique et ne garder que les position avec l'autre coordonnée positive?
1 nov. 2022 à 18:43
Il souhaite ne pas afficher la partie de la trajectoire qui est sous la surface de l'astre.
Comme il utilise des coordonnées polaires, centrée sur le centre de l'astre, il est très simple d'identifier les points à éliminer.
J'ai fait deux suggestions, une qui remplace par "none" la coordonnée "distance" des points à éliminer, l'autre qui élimine les points non désirés.