Trace de vecteurs vitesse et acceleration

Re: Trace de vecteurs vitesse et acceleration

Messagede den » 30 Oct 2018, 11:31

Pour le nouveau prog de seconde, le projet parle de construire un vecteur vitesse et la variation de vecteur vitesse avec un langage de programmation. C'est pas regressi, j'ai lu que python fait cela, jamais utilisé, je vais essayer de chercher un tuto. Quelqu'un sait faire ?
den
 
Messages: 242
Inscription: 15 Sep 2012, 07:56
Académie: CRETEIL
Poste: Enseignant en Lycée

Re: Trace de vecteurs vitesse et acceleration

Messagede physicus » 31 Oct 2018, 08:53

Bonjour,

Python possède une petite bibliothèque (turtle) qui permet de déplacer facilement une petie tortue avec quelques lignes de commandes simples.
La documentation officielle: https://docs.python.org/2/library/turtle.html#
Un exemple de code qui fonctionne:
- X,Y est la position courrante à l'instant t
- Vx, Vy est le vecteur vitesse à l'instant t
- DVx et DVy est la variation du vecteur vitesse
- Dt est un petit interval de temps
- T_MAX est la durée maximum de la simulation.
L'avantage d'utiliser Turtle est qu'il n'y a pas de bibliothèque graphique à utiliser pour gérer l'affichage, donc on peut très rapidement se concentrer sur la partie physique de la simulation numérique

PS: dans le code, il faudrait en fait faire Vx = Vx + DVx * Dt et Vy = Vy + DVy * Dt pour intégrer correctement ...
Code: Tout sélectionner
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import turtle

X = -100.0
Vx = 15
DVx = 0

Y = 0.0
Vy  = 20
DVy = -4.0

t = 0.0
Dt = 1.0
T_MAX = 15

bob = turtle.Turtle()
bob.penup()
bob.goto(X,Y)
bob.pendown()

while t < T_MAX:
       
        DX = Vx * Dt
        DY = Vy * Dt
        t = t + Dt
        X = X + DX
        Vx = Vx + DVx
        Y = Y + DY
        Vy = Vy + DVy
       
        bob.setheading(bob.towards(X,Y))
        bob.goto(X,Y)
        bob.stamp()
       
        print t,"   ",X,"   ",Y

turtle.done()





et la copie d'écran correspondante
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
physicus
 
Messages: 827
Inscription: 13 Aoû 2012, 16:48
Académie: Académie de Strasbourg
Poste: Enseignant en Lycée

Re: Trace de vecteurs vitesse et acceleration

Messagede physicus » 31 Oct 2018, 09:30

il y a aussi le logiciel de calcul formel Scilab http://www.scilab.org/fr

il y a un langage de script et ça doit pouvoir tracer des vecteurs sur des graphiques ....

c'est une sorte de Maple en version libre et open source

Ajout 1: après avoir regardé un peu plus Scilab, c'est franchement hardcore à utiliser, si c'est juste pour deux ou trois TP dans l'année ... en IUT, licence ou CPGE ou école d'ing ok, mais en lycée bof ...

Ajout 2: En Python, avec la bibliothèque Numpy, on a deux vecteurs u (1,1) et v(2,3) on calcule w = u + v puis z = u - v puis u + v + w + z
avec numpy on peut directement ajouter soustraire les vecteurs
Code: Tout sélectionner
import numpy as np

u = np.array([1,1])
v = np.array([2,3])

w = np.add(u,v)
z = np.add(u,-v)
print u
print v
print w
print z

print u + v + w + z


on obtient
Code: Tout sélectionner
[1 1]
[2 3]
[3 4]
[-1 -2]
[5 6]


------------------
(program exited with code: 0)
Press return to continue

physicus
 
Messages: 827
Inscription: 13 Aoû 2012, 16:48
Académie: Académie de Strasbourg
Poste: Enseignant en Lycée

Re: Trace de vecteurs vitesse et acceleration

Messagede calves » 31 Oct 2018, 11:05

Merci physicus !
calves
 
Messages: 106
Inscription: 02 Sep 2012, 09:42
Académie: LYON
Poste: Enseignant en Lycée

Re: Trace de vecteurs vitesse et acceleration

Messagede physicus » 29 Déc 2018, 15:16

bonjour,
un autre exemple de code pour tracer la trajectoire et les vecteurs déplacements.
il faut utiliser
- la bibliothèque pyplot de matplotlib
- la fonction spéciale quiver()

https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.quiver.html

Le code
Code: Tout sélectionner
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt

#position
X = []
Y = []

# vecteur déplacement U,V coordonnées vecteur, X,Y sa position
vecU = []
vecV = []
vecX = []
vecY =[]

# équation horaire du mouvement
def position(t):
   x = 0.0 + 1.0 * t
   y = 9 + 0.5 * t -0.1 *t*t
   return x,y

# calcul de la trajectoire
for t in range(0,10):
   x,y = position(t)
   X.append(x)
   Y.append(y)
   
# calcul vecteur déplacement
#   on copie les points de la trajectoire où tracer le vecteur et
#   on ote le dernier point car on ne peut pas y calculer de déplacement
vecX = list(X)
vecY = list(Y)
vecX.pop()
vecY.pop()

for i,x in enumerate(X):
   if i < len(X)  -1:
      deplacement = X[i+1] - X[i]
      vecU.append(deplacement)

for i,y in enumerate(Y):
   if i < len(Y) -1 :
      deplacement = Y[i+1] - Y[i]
      vecV.append(deplacement)   
         
# on trace : la trajectoire puis les vecteurs déplacements

plt.plot(X,Y,'ro')
plt.quiver(vecX,vecY,vecU,vecV)    # voir doc pyplot, tracer de vecteur
plt.axis([0,10,0,10])
plt.xlabel(" x (en m)")
plt.ylabel(" y (en m)")
plt.show()
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
physicus
 
Messages: 827
Inscription: 13 Aoû 2012, 16:48
Académie: Académie de Strasbourg
Poste: Enseignant en Lycée

Re: Trace de vecteurs vitesse et acceleration

Messagede Fisherman1978 » 29 Déc 2018, 15:43

Bonjour, on peut le faire avec Regressi, c'est même précisé dans le doc d’accompagnement ci-joint.
Sinon, voilà des ressources qui peuvent aider:
http://eduscol.education.fr/cid129214/recherche-et-innovation-en-physique-chimie.html
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Fisherman1978
 
Messages: 99
Inscription: 08 Juin 2015, 04:59
Académie: RÉUNION (ILE MAURICE)
Poste: Enseignant en Lycée

Re: Trace de vecteurs vitesse et acceleration

Messagede physicus » 29 Déc 2018, 16:42

Dans le projet de programme de seconde, il est précisé que la représentation des vecteurs vitesses d'un système modélisé par un point lors d'un mouvement se fera avec un langage de programmation, après avoir dans un premier temps représenté les positions successives d'un système (Mouvement et interaction, partie A, décrire un mouvement)
Or,
- un tableur n'est pas un langage de programmation et Regressi est spécifique aux sciences physiques Educ Nat.
- Python est le langage de référence à utiliser (SNT, NSI, post bac, utilisé aussi dans les universités partout dans le monde, et chez les gros, genre Google)
physicus
 
Messages: 827
Inscription: 13 Aoû 2012, 16:48
Académie: Académie de Strasbourg
Poste: Enseignant en Lycée

Re: Trace de vecteurs vitesse et acceleration

Messagede Fisherman1978 » 29 Déc 2018, 18:29

La page de ressources commence par:
Ces ressources explorent l'intérêt de la programmation dans l'enseignement de la physique-chimie.

Puis on a des ressources avec Python, Regressi, Scratch (!), Excel (!),.....
Je crois qu'il faut prendre le terme "programmation" au sens très très large...
Fisherman1978
 
Messages: 99
Inscription: 08 Juin 2015, 04:59
Académie: RÉUNION (ILE MAURICE)
Poste: Enseignant en Lycée

Re: Trace de vecteurs vitesse et acceleration

Messagede physicus » 30 Déc 2018, 09:45

J'ai nettoyé le code python écrit un peu trop rapidement, et amélioré le tracé des vecteurs déplacements (problème de mise à l'échelle,) après lecture plus soigneuse de la doc officielle de pyplot. Ce code devrait permettre la conception d'un TD de simulation numérique de trajectoire , étape par étape. On verra ça plus tard dans l'année qui vient pour le mettre au point ...

On doit aussi pouvoir ajouter le calcul des variations de vecteur vitesse à partir des coordonnées U et V.

En espérant que ce code puisse être utile aux audacieux et audacieuses qui souhaitent faire de la simulation numérique avec leurs élèves

Code: Tout sélectionner
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt

#position
X = []
Y = []

# vecteur déplacement U,V coordonnées vecteur, X,Y sa position
vecU =    []
vecV =    []
vecX =    []
vecY =   []

# équations horaires du mouvement
def position(t):
   x = 1.0 + 1.0 * t
   y = 5 + 1.5 * t -0.2 *t*t
   return x,y

# calcul de la trajectoire pour 10 dates
for t in range(0,10):
   x,y = position(t)
   X.append(x)
   Y.append(y)
   
# calcul vecteur déplacement U,V = deltaX,deltaY , tracé en X,Y
for i in range(0, len(X)-1):
   deplacement = X[i+1] - X[i]
   vecU.append(deplacement)
   vecX.append(X[i])

for i in range(0, len(Y)-1):
   deplacement = Y[i+1] - Y[i]
   vecV.append(deplacement)
   vecY.append(Y[i])   
         
# on trace : la trajectoire ...
plt.plot(X,Y,'ro')

# ... puis les vecteurs déplacements
# voir doc fonction quiver sur https://matplotlib.org/api/pyplot_api.html
plt.quiver(vecX,vecY,vecU,vecV, angles='xy', color='b',scale_units='xy', scale=1)

# paramètres du graphe (taille, légendes)
plt.axis([0,15,0,10])
plt.xlabel(" x (en m)")
plt.ylabel(" y (en m)")

# afficher le graphe
plt.show()
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
physicus
 
Messages: 827
Inscription: 13 Aoû 2012, 16:48
Académie: Académie de Strasbourg
Poste: Enseignant en Lycée

Re: Trace de vecteurs vitesse et acceleration

Messagede Fisherman1978 » 30 Déc 2018, 12:02

le problème, c'est que cela n'a d’intérêt que si les élèves comprennent le code ( et qu'ils ne se contentent pas de recopier un code qu'on leur donne) mais faire cela avec des élèves qui n'ont aucune base en Python va prendre beaucoup de temps au détriment de la physique...
Fisherman1978
 
Messages: 99
Inscription: 08 Juin 2015, 04:59
Académie: RÉUNION (ILE MAURICE)
Poste: Enseignant en Lycée

PrécédenteSuivante

Retourner vers Terminale S et spécialité

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron