Académique Documents
Professionnel Documents
Culture Documents
PROJET DE PYTHON
NOM :BIYAO
PRENOM :RIDWANE
FILIERE :INFORMATIQUE ET
SYSTEMES
PLAN DE TRAVAIL :
- Problème
- Résolution du problème
- Implémentation du code en python
- Résultat du code
- Rapport
Problème 1 : Opérations sur les vecteurs
On donne trois vecteurs
A ||, ||, ⃗
1. Calculer les normes ||⃗ C || . En déduire les vecteurs unitaires ⃗
B ,|| et ||⃗ U A,
Résolution du problème :
1. on a les vecteurs
‖⃗B‖=√ 2+¿ ⋅√ 3 +√ 2 ¿= 3
2 2 2
u⃗ A =¿
⃗ 2 √3 √2
U B( , , )
3 3 3
1 2 2
u⃗ c=( , , )
3 3 3
⃗
A⃗B
‖⃗A‖‖⃗B‖
6+2 √ 3+ √ 3 × √2
=
3×4
≃ 0.993
De meme
⃗
B ⋅⃗
C
cos ( ⃗
B,⃗
C )=
‖⃗B‖‖⃗
C‖
1× 3+2 √ 3+2 × √ 2
=
3 ×3
≃0,921
Et enfin
3-On sait que les composantes du vecteur produit vectoriel
entre ⃗
U B et ⃗
U C sont données par
puisque u⃗ A et ⃗
U B sont unitaires. On utilise la même démarche pour les autres angles
Pour vérifier ces derniers résultats, on utilise les cosinus de ces mêmes angles déjà calculés
auparavant et on trouve
ce qui vérifie bien que les angles calculés dans cette questions sont les mêmes que ceux
calculés dans la question 2.
5- . Pour qu’une famille de vecteurs constitue une base, il suffit
— que le cardinal de la famille, c’est à dire le nombre de vecteurs de la famille, soit égal à la
dimension de l’espace vectoriel en question, et qui est dans notre cas 3. Ce qui est vérifié
pour ⃗
(e ¿ ¿1 , e⃗ 2 , ⃗e 3)¿ ¿
— et que la famille soit une famille libre, c’est `a dire que tout vecteur peut être écrit comme
combinaison linéaire de ces trois vecteurs. Pour démontrer cette propriété, il suffit que les
trois vecteurs ne soient pas coplanaires et donc leur produit mixte soit différent de zéro.
Calculons alors le produit mixte
et qui est donc différent de 0. D’ou les trois vecteurs forment une famille libre. On
en déduit que ⃗(e ¿ ¿1 , e⃗ 2 , ⃗e 3) ¿ ¿forment une base
6-. Elle n’est pas orthogonale car les produits scalaires entre ces vecteurs pris deux `a deux
ne sont pas nuls. Elle n’est pas non plus normée car les vecteurs de sa base ne n’ont pas une
norme égale `a l’unité
#pour chaque question je vais creer une fonction qui traite la question
# et ensuite j'appelerai chaque fonction en bas pour repondre aux
#questions
sin_uB_uC=np.linalg.norm(e1)/(np.linalg.norm(uB))*round((np.linalg.norm(uC#
)))
sin_uA_uC=
np.linalg.norm(e2)/(np.linalg.norm(uA))*round((np.linalg.norm(uC)))
return sin_uA_uB,sin_uB_uC,sin_uA_uC
# ecrivons une fonction qui verifie les resultats obtenu en utilisant les
resultats precedents
def verification():
#verifions les resultats obtenues pour le calcul des sinus
# on sait que en general sin(x)=sqrt(1-cos**2(x)).donc utilisons cette
#formule pour la verification
sin2_uA_uB=np.sqrt(1-(cos_uA_uB)**2)
sin2_uB_uC=np.sqrt(1-(cos_uB_uC)**2)
sin2_uA_uC=np.sqrt(1-(cos_uC_uA)**2)
#ici if est utiliser pour verifier les differentes condition et round
#pour arrondir a 3 chifrre apres la virgule
#si la condition est vrai la fonction retourne un message de la cas
#contraire elle retourne false
if round(sin_uA_uB,4) == round(sin2_uA_uB,4) and round(sin_uB_uC,4)==
round(sin2_uB_uC,4) and round(sin_uA_uC,4) == round(sin2_uA_uC,4):
return "on verifie bien que les angles calculées dans cette
questions sont les memes que ceux calculées dans la question 2"
else:
return "false"
def base():
# pour que ces vecteurs forme une base d'abord: elle doit etre
independant(rang des 3 vecteurs doit donner 3)
#apres ils faut verifier que les 3 vecteurs ne sont pas coplanaire
(produit mixte doit etre different de 0)
# ici la fonction np.vstack() de numpy est une fonction utiliser
pour disposer les vecteurs e1, e2 et e3 verticalement pour former une
matrice
# Ensuite, la fonction np.linalg.matrix_rank(M) est utilisée pour
calculer le rang de cette matrice
M = np.vstack((e1, e2, e3))
R= np.linalg.matrix_rank(M)
#calcul le produit mixte avec np.dot(np.cross()) en specifiant
l'ordre des vecteurs ici c e2,e3,e1
produit_mixte = np.dot(np.cross(e2, e3), e1)
# if est utiliser pour verifier les differnt condition ci_dessous
if (R==3 and produit_mixte!=0 ):
return "les vecteurs e1,e2,e3 constituent une base"
else:
return "les vecteurs e1,e2,e3 ne constituent pas une base"
# definie une fonction pour verifier si les base sont orthogonale normee
def orthogonal_normee():
# Calcul des produits scalaires de ces 3 vecteurs pris 2 a 2 afin de
verifier orthogonalite de ces vecteurs
# calculon la norme de ces vecteurs
prod_e1_e2 = np.dot(e1, e2)
prod_e1_e3 = np.dot(e1, e3)
prod_e2_e3 = np.dot(e2, e3)
norm_e1 = np.linalg.norm(e1)
norm_e2 = np.linalg.norm(e2)
norm_e3 = np.linalg.norm(e3)
#if ici est aussi utiliser pour verifier les condition ci-dessous
if (prod_e1_e2==0 and prod_e1_e3==0 and prod_e2_e3==0 and
norm_e1== norm_e2== norm_e3):
return "cette base est orthogonale puis normee"
elif (prod_e1_e2!=0 and prod_e1_e3!=0 and prod_e2_e3!=0 and
norm_e1== norm_e2== norm_e3):
return "cette base n'est pas orthogonale mais elle est normee"
elif (prod_e1_e2==0 and prod_e1_e3==0 and prod_e2_e3==0 and
norm_e1!= norm_e2!= norm_e3):
return "cette base est orthogonale mais pas normee"
else:
return " cette base n'est pas orthogonal et elle n'est normee"
Résolution du problème :
Un conducteur roule `a une vitesse constante v0 = 120 km h −1 sur une route rectiligne
dépassant la limite autorisée. Un gendarme `a moto démarre `a l’instant ou` la voiture passe
`a sa hauteur et accélère uniformément. Le gendarme atteint la vitesse 100 km h −1 au bout
de 12s.
Soit R(Oxyz) un référentiel et on prend la route parallèle `a l’axe Ox. A l’instant t = 0, ou` la
voiture passe, le gendarme est en O. La position de la voiture est repérée par xV = v0t,
puisque la voiture roule `a la vitesse constante v0.
.
Quant `a la voiture, comme son mouvement est uniforme, la vitesse est constante,
alors la position de la voiture `a l’instant t est xV = v0t + x0V = v0t. Le temps tr nécessaire
au gendarme pour rattraper la voiture est le temps au bout duquel
xm(t = tr) = xV (t = tr) ce qui implique
import sympy as sp
#j'ai importer la bibliothrque numpy pour exprimer les expression
necessaire sans les calculer
#grace a la fonction sp.symbls integrer dans sympy
# ici je commence par definir pour chaque question une fonction que
j'appelerai a la fin
# pour resoudre les questions.
def distance():
#L =0,5*γm*tr**2 expression de equation horaire
# en ramplacant les expression de γm et de tr dans L on obtient
#L=0,5((v1*4*v0**2*tr**2)/(t1*v1**2)) ce qui donne
L=2*(v0**2*t1)/v1
return L
def vitesse_atteinte():
#la moto etait en mouvement uniformenet accelere donc vr= γm*tr
#vr=(v1*2*v0*t1)/(v1*t1) en simplifiant v1 et t1 , on obtient
vr=2*v0
return vr
#ici je definie juste les donnees du probleme qui seront utiliser par les
#differente fonction pour les calcules
t1=12
v0=(1000*100)/(3600)
v1=(1000*100)/(3600)
γm=(v1)/t1
Rapport :
Le code utilise la bibliothèque SymPy pour résoudre un problème de physique
impliquant une moto et une voiture. La moto accélère uniformément et la voiture se
déplace à vitesse constante. Le code définit plusieurs fonctions pour résoudre
différentes parties du problème, telles que la détermination de l’équation horaire du
mouvement de la moto, le temps nécessaire pour que la moto rattrape la voiture, la
distance parcourue par la moto, et la vitesse atteinte par la moto.
Les résultats sont obtenus en appelant ces fonctions avec des valeurs spécifiques
pour les paramètres tels que la vitesse initiale de la voiture v0, la vitesse maximale de
la moto v1 et le temps nécessaire pour atteindre cette vitesse t1. Le code affiche les
résultats sous forme d’expressions symboliques et numériques.
Les résultats sont obtenus en appelant ces fonctions et en utilisant les valeurs
numériques des vecteurs A, B et C définis au début du code. Le code affiche les
résultats sous forme d’expressions numériques.