Forum EduPython

Echanges autour d'EduPython.

Vous n'êtes pas identifié(e).

#1 2020-10-07 06:27:24

Cori
Membre
Inscription : 2020-10-07
Messages : 6

Activité python physique

Bonjour,
Je débute en python et je souhaite exécuter le programme présent sur une activité de tracé d'évolution d'énergie (2p240) du  livre Hachette terminale spé, avec edupython 2.7, avec importation d'un fichier csv.



Cependant, alors que je n'ai modifié qu'une ligne (pour un calcul d'énergie cinétique), j'ai le message d'erreur suivant :

ValueError: x et y must have same first dimension, but have shapes(40,) and (80,)

Pouvez vous m'aider ?

merci d'avance !

Hors ligne

#2 2020-10-07 06:40:12

magicvinni
Administrateur
Inscription : 2017-12-22
Messages : 308

Re : Activité python physique

Bonjour,

      Je ne connais pas cette activité, pouvez-vous poster le code ici ? Sinon l'erreur dit que X contient 40 valeurs et y 80 ce qui lui pose problème pour faire le graphe je pense.

Merci.
VM

Hors ligne

#3 2020-10-07 14:05:56

Cori
Membre
Inscription : 2020-10-07
Messages : 6

Re : Activité python physique

Bonjour, Merci pour votre réponse.

j'ai voulu faire un copier coller du programme mais j'ai ce message d'erreur qui s'affiche : "la balise i (entre crochets) a été ouverte dans cette même balise, ceci n'est pas autorisé. Du coup, le message ne veut pas pas être envoyé...
Comment faire ?

Hors ligne

#4 2020-10-07 15:24:58

magicvinni
Administrateur
Inscription : 2017-12-22
Messages : 308

Re : Activité python physique

il faut mettre le programme entre les balises : [ c o d e] et [ / c o d e] (sans espace !)

Hors ligne

#5 2020-10-07 16:23:29

Cori
Membre
Inscription : 2020-10-07
Messages : 6

Re : Activité python physique

# CHAPITRE 12: Activité 2
################################################################################
import matplotlib.pyplot as plt
import pandas as pd

################################################################################
# Lecture du fichier et création des variables
################################################################################
#nom du fichier à traiter
fichier=input("Quel est le nom du fichier de pointage (sans l'extension .csv)?")+".csv"

Data = pd.read_csv(fichier, sep=',', header=0)

t=Data['Temps']
x=Data['X']
y=Data['Y']
################################################################################
#Calcul des coordonnées Vx et Vy des vecteurs vitesse
################################################################################
Vx=[]
for i in range(len(x)-1) :
    Vx=Vx+[(x[i+1]-x[i])/(t[i+1]-t[i])]

Vy=[]
for i in range(len(y)-1) :
    Vy=Vy+[(y[i+1]-y[i])/(t[i+1]-t[i])]


V=[]
for i in range(len(Vx)) :
    V=V+[(Vx[i]**2+Vy[i]**2)**0.5]
#masse du système en kg
m=0.60
#intensité de la pesanteur
g=9.81
#Calcul des énergies
Ep=[]
for i in range(len(Vx)) :
    Ep=Ep+[m*g*y[i]]

Ec=[]
for i in range(len(Vx)) :
    Ec=Ec+[0.5*m*V[i]**2]

Em=[]
for i in range(len(Vx))  :
    Em=Em+[Ep[i]+Ec[i]]

################################################################################
# Taille du graphique
################################################################################
plt.figure(figsize=(15,12))

################################################################################
# Sous figure inférieure
################################################################################
plt.subplot(212)
X_max=max(x)
plt.ylim([0,1.1*X_max])
plt.xlim([0,t.max()])

#tracé de la position
plt.plot(t,x,'bo')

#Légendes
plt.title("Évolution de la position X du système", fontsize =16)
plt.ylabel('X (m)', fontsize =16)
plt.xlabel('$t$ (s)', fontsize =16)
plt.tick_params(labelsize=16)
#Parametres de la grille
ax = plt.gca()
ax.minorticks_on()
ax.grid(which='major', linestyle='-', linewidth='0.7', color='black')
ax.grid(which='minor', linestyle=':', linewidth='0.5', color='black')

################################################################################
# Sous figure supérieure
################################################################################
plt.subplot(211)
Em_max=max(Em)
plt.ylim([0,1.5*Em_max])
plt.xlim([0,t.max()])

#tracé des énergies
plt.plot(t[0:-1],Ep,'ro',label='Énergie potentielle de pesanteur')
plt.plot(t[0:-1],Ec,'go',label='Énergie cinétique')
plt.plot(t[0:-1],Em,'ko',label='Énergie mécanique')

#Légendes
plt.title("Évolution des énergies au cours du temps", fontsize =16)
plt.ylabel(r'$\mathcal{E}$ (J)', fontsize =16)
plt.xlabel('$t$ (s)', fontsize =16)
plt.tick_params(labelsize=16)
#Parametres de la grille
ax = plt.gca()
ax.minorticks_on()
ax.grid(which='major', linestyle='-', linewidth='0.7', color='black')
ax.grid(which='minor', linestyle=':', linewidth='0.5', color='black')

#Pour faire apparaitre les légendes retirer le # devant la ligne suivante.
plt.legend(loc=2, fontsize=16)

# Ajustement du plot
plt.subplots_adjust(hspace=0.5)

#Sauvegarde des courbes
plt.savefig("Energies.png")


plt.show()

Hors ligne

#6 2020-10-07 16:32:28

magicvinni
Administrateur
Inscription : 2017-12-22
Messages : 308

Re : Activité python physique

Bonsoir, chez moi ça fonctionne. Du coup ça doit venir du fichier csv. Pouvez-vous me l'envoyer par mail ? vincent.maille{@@}ac-amiens.fr

Hors ligne

#7 2020-10-10 17:04:02

Cori
Membre
Inscription : 2020-10-07
Messages : 6

Re : Activité python physique

Bonjour,
Je viens de vous envoyer un mail,
Cordialement,

Hors ligne

#8 2020-10-11 07:32:19

magicvinni
Administrateur
Inscription : 2017-12-22
Messages : 308

Re : Activité python physique

Bonjour,

     Il y avait plusieurs soucis dans votre fichier CSV :

  • Les séparateurs de colonnes sont des ; et non des ,

  • Les séparateurs en écriture décimale sont des , et non des .

Il faut donc l'indiquer au moment de la lecture :

 
Data = pd.read_csv(fichier, sep=';', decimal =",",  header=0)
  • Vos colonnes ne s’appellent pas Temps, X et Y, mais t(s), x et y

Il faut donc adapter le programme :

t=Data['t(s)']
x=Data['x']
y=Data['y']

Bon dimanche, je regarde pour l'autre question

VM

Hors ligne

#9 2020-10-11 14:17:56

Cori
Membre
Inscription : 2020-10-07
Messages : 6

Re : Activité python physique

Merci beaucoup pour votre aide ! Bonne soirée

Dernière modification par Cori (2020-10-11 14:18:13)

Hors ligne

#10 2020-10-13 05:26:14

Louise M
Membre
Inscription : 2020-10-13
Messages : 15

Re : Activité python physique

Bonjour,

J'ai un problème sur ce meme programme mais l'erreur annoncé est no module named pandas

L.

Hors ligne

#11 2020-10-13 06:00:30

Louise M
Membre
Inscription : 2020-10-13
Messages : 15

Re : Activité python physique

Bonjour,
Je viens de résoudre mon problème, mais maintenant le message d'erreur est "KeyError: 'temps'. Pourtant, c'est bien le nom de ma première colonne dans la feuille Excel

Hors ligne

#12 2020-10-13 06:33:29

magicvinni
Administrateur
Inscription : 2017-12-22
Messages : 308

Re : Activité python physique

Attention aux majuscules/minuscules

Hors ligne

#13 2020-10-13 09:09:19

Louise M
Membre
Inscription : 2020-10-13
Messages : 15

Re : Activité python physique

Oui j'y est fait attention : c'est bien écrit en minuscule

Hors ligne

#14 2020-10-13 11:59:33

magicvinni
Administrateur
Inscription : 2017-12-22
Messages : 308

Re : Activité python physique

Ah bizarre, essayez de nous joindre les fichiers via un lien dropbox ou free ou autre

Hors ligne

#15 2020-10-13 13:31:12

Louise M
Membre
Inscription : 2020-10-13
Messages : 15

Re : Activité python physique

Hors ligne

#16 2020-10-14 15:50:37

magicvinni
Administrateur
Inscription : 2017-12-22
Messages : 308

Re : Activité python physique

Bonsoir,

Vous avez mis

Data = pd.read_csv(fichier, sep=';', header=0)

Or dans votre fichier csv, le séparateur est une virgule, il faut donc mettre

Data = pd.read_csv(fichier, sep=',', header=0)

Après il y a quelques coquilles, n'hésitez pas si vous êtes bloquée à nouveau

Hors ligne

#17 2020-10-28 08:26:46

Louise M
Membre
Inscription : 2020-10-13
Messages : 15

Re : Activité python physique

Merci beaucoup, cela fonctionne maintenant !

Hors ligne

#18 2020-10-28 08:49:22

Louise M
Membre
Inscription : 2020-10-13
Messages : 15

Re : Activité python physique

J'ai un autre problème avec un autre programme, toujours en physique chimie.
Programme élèves :13_deuxiemeLK_initial:
Programme prof : 13_deuxiemeLK_prof:
Que j'ai complété grâce aux relevées que j'ai fait sur le site : ACT_2_application satellite_PROF.docx

Quand j'applique le programme, il me trouve une vitesse et une vitesse aréolaire nulle (je pense que c'est un problème dans l'écriture de mon calcul).

Tout ceci est dans le dossier drive :  https://drive.google.com/drive/folders/ … UuHafDVpn6-

Hors ligne

#19 2020-10-30 08:23:01

magicvinni
Administrateur
Inscription : 2017-12-22
Messages : 308

Re : Activité python physique

Bonjour, le lien ne fonctionne pas sad

Hors ligne

#20 2020-11-01 04:25:34

Louise M
Membre
Inscription : 2020-10-13
Messages : 15

Re : Activité python physique

Hors ligne

#21 2020-11-01 04:28:19

Louise M
Membre
Inscription : 2020-10-13
Messages : 15

Re : Activité python physique

Après vérification, je crois que le lien fonctionne ...

Hors ligne

#22 2020-11-01 07:29:43

magicvinni
Administrateur
Inscription : 2017-12-22
Messages : 308

Re : Activité python physique

Bonjour, c'est votre fonction aire qui est mal placée, il faut la définir en dehors de la boucle :

def aire(a,b,c):
	p=(a+b+c)/2
	S=(p*(p-a)*(p-b)*(p-c))**0.5
	return S

for i in range(n-1):
## Temps sans derniere mesure
	tt[i]=t[i]

####################
#### A COMPLETER ###
####################

## Distance parcourue entre i et i+1, en km
	d[i]=((x[i+1]-x[i])**2+(y[i+1]-y[i])**2+(z[i+1]-z[i])**2)**0.5
## vitesse en km/min
	v[i]=d[i]/(t[i+1]-t[i])
## aire balayee en km2
	S[i]=aire(r[i],r[i+1],d[i])
## vitesse areolaire en km2/min
	s[i]=S[i]/(t[i+1]-t[i])

Bonne journée,
VM

Hors ligne

#23 2020-11-01 14:04:53

Louise M
Membre
Inscription : 2020-10-13
Messages : 15

Re : Activité python physique

Bonjour,

C'est parfait, ca marche  !!!!
Merci beaucoup pour votre aide.

LM

Hors ligne

#24 2020-11-10 04:05:14

Louise M
Membre
Inscription : 2020-10-13
Messages : 15

Re : Activité python physique

Bonjour,

j'ai un nouveau soucis avec un programme : https://drive.google.com/drive/folders/ … 7o1LLR72rL

Le message que je reçois est : ValueError : x and y must have same first dimension, but have shapes (33,) and (31,)

Merci pour votre aide,
LM

Hors ligne

#25 2020-11-10 07:53:26

magicvinni
Administrateur
Inscription : 2017-12-22
Messages : 308

Re : Activité python physique

Bonjour, c'est à cause des problème "aux bords". Comme vous avez 33 valeurs pour le temps, quand vous calculez les Vd, à cause des formules, vous n'en avez que 31, d'où le problème pour tracer Vd en fonction de t. Il faut donc : 
* soit retirer 2 valeurs du temps
* soit ajouter des valeurs fictives aux bords de Vd

Bonne journée,
VM

Hors ligne

Pied de page des forums