Académique Documents
Professionnel Documents
Culture Documents
import numpy as np
#pour chaque question je vais creer une fonction qui traite la question
# je definie les vecteurs grace a la fonction array integrer dans numpy qui permet de creer
#des tableau de vecteur. ici j'ai mis les crochet pour specifier que c la liste des elemets qui seront
stocker dans le tableau
C = np.array([1, 2, 2])
#definie une fonction appele norme qui permet de calculer la norme de chaque vecteur
def norme():
# ici j'utilise la fonction linalg qui est un module de la bibliothèque NumPy (alias de "Linear
Algebra") qui fournit
# des fonctions et des outils pour effectuer des opérations linéaires et des calculs liés à l'algèbre .ici
il prend en
#entrer chaque vecteur et calcul sa norme qu'il stocke dans chaque variable
norm_A = np.linalg.norm(A)
norm_B = np.linalg.norm(B)
norm_C = np.linalg.norm(C)
return norm_A,norm_B,norm_C
#declare une fonction vecteurs_unitaire qui permet de calculer la norme de chaque vecteur
def vecteurs_unitaires():
#le vecteurs de chaque n'est que la division du vecteurs propre par sa norme
#ici la fonction norme() sera qppele en bas et qui fournit la norme de chaque vecteur precedemnt
calculer
uA = A / norm_A
uB = B / norm_B
uC = C / norm_C
return uA,uB,uC
def cosinus():
#cosinus entre 2 vecteurs sa fait le produit scalaire des 2 vecteurs sur la norme du vecteur * la
norme du 2 vecteurs
# ici je fait appelle a la fonction DOT de numpy qui fournit le produit scalaire de mes vecteurs
unitaire que j'ai
# precedement calculer .pour les obtenir je fait appel a la fonction vecteurs_unitaires qui me
fournira lesvecteurs en question
#puis je fait appel a la fonction norme que j'ai creer pour me fournir la norme de mes vecteurs
def composante_vecteurs():
# ici j' utilise la fonction cross de numpy qui permet de retourner le produit vecroriel de deux
vecteurs
e1 = np.cross(uB, uC)
e2 = np.cross(uC, uA)
e3 = np.cross(uA, uB)
def sinus():
# on connait deja le produit vectoriel entre les differents vecteurs. or pour calculer le sinus des
#angles sa fait le produit vectoriel des 2 vecteurs diviser par la norme des 2 vecteurs
#or dans notre cas il s'agit de la norme des vecteur unitaire donc ca fait 1
sin_uA_uB= np.linalg.norm(e3)/(np.linalg.norm(uA))*(np.linalg.norm(uB))
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():
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
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
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
else:
# 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
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
return "cette base n'est pas orthogonale mais elle est normee"
else:
return " cette base n'est pas orthogonal et elle n'est normee"
norm_A,norm_B,norm_C=norme()
print(f"||A|| = {norm_A}")
print(f"||B|| = {norm_B}")
print(f"||C||= {norm_C}")
print()
uA,uB,uC=vecteurs_unitaires()
print(f"uA = {uA}")
print(f"uB = {uB}")
print(f"uC = {uC}")
print()
print(f"cos_uA_uB={cos_uA_uB}")
print(f"cos_uB_uC={cos_uB_uC}")
print(f"cos_uC_uA = {cos_uC_uA}")
print()
# 3/Calculer les composantes des vecteurs ~e1 = ~uB ∧~uC, ~e2 = ~uC ∧~uA et ~e3 = ~uA ∧~uB.
e1,e2,e3=composante_vecteurs()
print(f"e1 = {e1}")
print(f"e2 = {e2}")
print(f"e3 = {e3}")
print()
sin_uA_uB,sin_uB_uC,sin_uA_uC=sinus()
print(f"sin_uA_uB={round(sin_uA_uB,4)}")
print(f"sin_uB_uC={round(sin_uB_uC,4)}")
print(f"sin_uA_uC={round(sin_uA_uC,4)}")
print()
print("b-/ verification:\n")
print(verification())
print()
#5/Montrer que ~e1, ~e2, ~e3 peuvent constituer une base. Cette base est-elle orthogonale, norme´e
print(base())
print(orthogonal_normee())
import sympy as sp
#j'ai importer la bibliothrque numpy pour exprimer les expression necessaire sans les calculer
# ici je commence par definir pour chaque question une fonction que j'appelerai a la fin
def position_moto():
v0m=0
x0m=0
γm=sp.symbols("γm")
t = sp.symbols("t")
#vm = γm * t + v0m
#xm=sp.integrate(vm,t) xm n'est que une primitif de vm et avec les condition initial v0m=0
return xm
def position_voiture():
# Quant `a la voiture, comme son mouvement est uniforme, la vitesse est constante,
t = sp.symbols("t")
v0=sp.symbols("v0")
x0V=0
return xV
def temps_rattrapage():
# donc on a xm(t = tr) = xV (t = tr) => que 0,5*γm*tr**2= v0*tr .en tirant tr on obtient :
tr = (2 * v0) /γm
return tr
def distance():
L=2*(v0**2*t1)/v1
return L
def vitesse_atteinte():
vr=2*v0
return vr
t1=12
v0=(1000*100)/(3600)
v1=(1000*100)/(3600)
γm=(v1)/t1
print(" 1-/ determinons tr le temps necessaire au gendarme pour rattraper la voiture \n")
x0v=position_voiture()
xm=position_moto()
print(" - le temps necessaire (tr) au gendarme pour rattraper la voiture .est alors :\n")
tr=temps_rattrapage()
print()
#2-/ determinos La distance L parcourue par le gendarme au bout du temps tr:
L=distance()
print()
vr=vitesse_atteinte()