0% ont trouvé ce document utile (0 vote)
12 vues3 pages

TP Modsim3

Ce document présente un TP de modélisation et simulation en Python pour des étudiants de Master à l'Université des sciences et de la technologie d'Oran. Il inclut des instructions pour simuler le mouvement d'un pendule et d'une balle en chute libre, avec des modèles mathématiques et des valeurs par défaut pour les paramètres. Les étudiants doivent compléter le code fourni pour réaliser les simulations.

Transféré par

Dannem Mohammed
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
12 vues3 pages

TP Modsim3

Ce document présente un TP de modélisation et simulation en Python pour des étudiants de Master à l'Université des sciences et de la technologie d'Oran. Il inclut des instructions pour simuler le mouvement d'un pendule et d'une balle en chute libre, avec des modèles mathématiques et des valeurs par défaut pour les paramètres. Les étudiants doivent compléter le code fourni pour réaliser les simulations.

Transféré par

Dannem Mohammed
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université des sciences et de la technologie d’Oran - Mohamed Boudiaf

Faculté des mathématiques et d’informatique - Département d’informatique

Fiche TP N°1 en Modélisation et simulation – 1ière année Master 2018/2019

Initiation à Python avec Anaconda/Spyder

Terminez le programme suivant selon le modèle ci-dessous


#Simulation du mouvement d'un pendule
import numpy as np
import [Link] as plt
from IPython import get_ipython as IP
#Utiliser QT pour dessiner dans une fenêtre externe
IP().run_line_magic('matplotlib', 'qt')

###### Initialisations #####################################


pendule={"fil":plt.Line2D((0,0),(0,-50),zorder=1),
"ball":[Link]((0,-50),5,Color='red',zorder=2)} #création du pendule

[Link]().add_line(pendule["fil"]) #Ajouter le fil du pendule au dessin


[Link]().add_patch(pendule["ball"]) #Ajouter la balle du pendule au dessin
[Link]('scaled') #Garder des proportions équilibrées pour les axes
[Link](-100, 100) #Limites de l'axe des x (pour l'affichage)
[Link](-100, 10) #limites de l'axe des y (pour l'affichage)

###### Fonctions ###########################################

#Dessin de la nouvelle position (x,y) de la balle


def redessiner_pendule(x,y):
pendule["fil"].set_xdata((0,x)) #changer la position du fil
pendule["fil"].set_ydata((0,y))
pendule["ball"].center=(x,y) #changer la position de la balle
[Link]() #redessiner la figure
[Link](0.01) #attendre 0.01 seconde

#Calcul de la nouvelle position (x,y) du pendule à l’instant t


def mouvement_pendule(t,a,f,r):
...
return x,y

#Lancement de la simulation
#N'oubliez pas les valeurs par défaut des paramètres de la fonction
def simulation_pendule(a,f,r,duree):
...
#Pour t allant de 0 jusqu'à la durée
#calculer la nouvelle position x,y du pendule selon t
#redessiner la nouvelle position du pendule

###### Début du programme ##################################


simulation_pendule() #Essayez les paramètres par défaut puis d’autres paramètres

[Link]("all") #fermer toutes les figures ouvertes

Soit l’approximation du modèle de mouvement d’un pendule :

𝑇 = 20
𝑡
𝑛 = (2 × 𝑟 + 1) ⁄𝑇
𝑡×𝜋
𝑠 = sin ( )
𝑇
𝑓×𝑠×𝜋
𝑥 = 𝑎 ∗ sin ( )
𝑛
𝑓×𝑠×𝜋
𝑦 = −𝑎 ∗ cos ( )
𝑛

𝑡: 𝑡𝑒𝑚𝑝𝑠 𝑎𝑐𝑡𝑢𝑒𝑙
𝑇: 𝑝é𝑟𝑖𝑜𝑑𝑒
𝑓: 𝑓𝑜𝑟𝑐𝑒 𝑖𝑛𝑖𝑡𝑖𝑎𝑙𝑒
𝑎: 𝑙𝑜𝑛𝑔𝑢𝑒𝑢𝑟 𝑑𝑢 𝑓𝑖𝑙
𝑟: 𝑟é𝑠𝑖𝑠𝑡𝑎𝑛𝑐𝑒
𝑥, 𝑦 𝑙𝑎 𝑝𝑜𝑠𝑖𝑡𝑖𝑜𝑛 𝑑𝑒 𝑙𝑎 𝑏𝑎𝑙𝑙𝑒 𝑑𝑢 𝑝𝑜𝑛𝑑𝑢𝑙𝑒 à 𝑙 ′ 𝑖𝑛𝑠𝑡𝑎𝑛𝑡 𝑡
𝑛, 𝑠 𝑑𝑒𝑠 𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒𝑠 𝑖𝑛𝑡𝑒𝑟𝑚é𝑑𝑖𝑎𝑖𝑟𝑒𝑠

Par défaut a=50, f=0.5, r=0.2, durée=500

Terminez le programme suivant selon le modèle ci-dessous


#Simulation du mouvement d'une balle en chute libre
import numpy as np
import [Link] as plt
from IPython import get_ipython as IP
#Utiliser QT pour dessiner dans une fenêtre externe
IP().run_line_magic('matplotlib', 'qt')

###### Initialisations #####################################


ball=[Link]((0,0),5,Color='red') #créer un cercle rouge de rayon 5 en position
(0,0)
[Link]().add_patch(ball) #Ajouter le cercle au dessin
[Link]('scaled') #Garder des proportions équilibrés pour les axes
[Link](-10, 200) #Limites de l'axe des x (pour l'affichage)
[Link](0, 150) #Limites de l'axe des y (pour l'affichage)

###### Fonctions ###########################################

#Dessin de la nouvelle position (x,y) de la balle


def redessiner_ball(x,y):
[Link]=(x,y) #changer la position de la balle
[Link]() #redessiner la figure
[Link](0.01) #attendre 0.01 seconde

#Calcul de la nouvelle position (x,y) de la balle


def mouvement_ball(t,fh,fv,r):
...
return x,y
#Lancement de la simulation
#N'oubliez pas les valeurs par défaut des paramètres de la fonction
def simulation_ball(fh,fv,r,duree):
...
#Pour t allant de 0 jusqu'à la durée
#calculer la nouvelle position x,y de la balle selon t
#redessiner la nouvelle position de la balle

###### Début du programme ##################################


print("simulation1")
#simulez avec une force verticale=2 (le reste par défaut)
simulation_ball(...)

print("simulation2")
#simulez avec une force horizontale=1 et une durée de 400 (le reste par défaut)
simulation_ball(...)

[Link]("all") #fermer toutes les figures ouvertes

Soit l’approximation du modèle de mouvement d’une balle en chute libre :

𝑇 = 20

(𝑟 + 1)𝑡//𝑇
𝑛=
100
250
𝑠 = min(𝑡, )
𝑟
𝑟 × 𝑠2
𝑥 = 𝑓ℎ × (𝑠 − )
500
𝑓𝑣 𝑡×𝜋
𝑦= × |sin( )|
𝑛 𝑇

𝑡: 𝑡𝑒𝑚𝑝𝑠 𝑎𝑐𝑡𝑢𝑒𝑙
𝑇: 𝑝é𝑟𝑖𝑜𝑑𝑒
𝑓𝑣: 𝑓𝑜𝑟𝑐𝑒 𝑣𝑒𝑟𝑡𝑖𝑐𝑎𝑙𝑒 𝑖𝑛𝑖𝑡𝑖𝑎𝑙𝑒
𝑓ℎ: 𝑓𝑜𝑟𝑐𝑒 ℎ𝑜𝑟𝑖𝑧𝑜𝑛𝑡𝑎𝑙𝑒 𝑖𝑛𝑖𝑡𝑖𝑎𝑙𝑒
𝑟: 𝑟é𝑠𝑖𝑠𝑡𝑎𝑛𝑐𝑒 𝑑𝑢 𝑠𝑜𝑙
𝑥, 𝑦 𝑙𝑎 𝑝𝑜𝑠𝑖𝑡𝑖𝑜𝑛 𝑑𝑒 𝑙𝑎 𝑏𝑎𝑙𝑙𝑒 à 𝑙 ′ 𝑖𝑛𝑠𝑡𝑎𝑛𝑡 𝑡
𝑛, 𝑠 𝑑𝑒𝑠 𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒𝑠 𝑖𝑛𝑡𝑒𝑟𝑚é𝑑𝑖𝑎𝑖𝑟𝑒𝑠

Par défaut fv=0, fh=1.5, r=0.5, durée=200


La valeur absolue est obtenue via la fonction abs()de la bibliothèque numpy.

Vous aimerez peut-être aussi