Académique Documents
Professionnel Documents
Culture Documents
Pour le rappel des notions générales de mécanique ainsi que pour la présentation des
exemples concrets traités dans cet article, le lecteur se reportera aux références [1] [2] [3] [4]
[5] [6] [7] [8] [9] citées en [Doc. AF 5 062] des articles de J.-P. Brossard parus dans les Techni-
ques de l’Ingénieur.
>e:=2*x*b; >e:=2*x*b;
1
e := 2 x + h e := 2 x + h
1
x x
>b:=b*c*e; >b:=b*c*e;
3 2
1
4 + h 2 + h
1
b := x b := x
x x
domaine d’utilisation de la procédure « simplify » et, surtout, on Ces commandes doivent normalement se situer en début de
peut voir la syntaxe des fonctions voisines. programme. Ici, le fait de terminer la ligne par « ; » nous permet de
voir la syntaxe de toutes les procédures contenues dans cette
bibliothèque. En principe, il n’y a pas lieu de laisser cet affichage.
1.4.2 Bibliothèques
Par défaut, l’ensemble des bibliothèques n’est pas chargé. Les
bibliothèques que nous utiliserons le plus souvent sont les biblio- Attention : dans tout ce qui suit, les feuilles de calculs
thèques d’algèbre linéaire et de tracés de courbes. L’appel de la commencent par un « restart » et par le chargement des
bibliothèque est réalisé à l’aide de la commande « with(....) ». bibliothèques. Et, en particulier, par « LinearAlgebra » dès que
>restart:with(LinearAlgebra); l’on manipule des vecteurs. Même, si pour des questions de
lisibilité, seule une partie du programme a été reproduite.
zi y1 yi
zk
yk
yi x1
Oi Ok
xi
Oi , O k
(Ri) (Rk)
xi
xk
■ Construction de matrices 0
Z1_Bi := 0
Pour plus de détails sur la construction des matrices, on doit
aller voir l’aide. Là encore, il faut porter une grande attention à la 1
syntaxe :
>M:=Matrix([[a,c,v],[a,c,v],[a,c,v]]); La matrice de passage prend donc la forme suivante :
>_Psi:=Matrix([x1_Bi,y1_Bi,Z1_Bi]);
a c v
M := a c v
cos ( ψ ) −sin( ψ ) 0
v
a c _Ψ := sin( ψ ) cos( ψ ) 0
0 0 1
Application dans le cas des angles d’Euler (figure 4)
>wp_Bk:=map(diff,w_Bk,t); Le fait de travailler avec des vecteurs nous permet d’utiliser les
opérations de produit scalaire et produit vectoriel qui font partie de
d x_k( t ) la bibliothèque « LinearAlgebra » et dont les syntaxes sont respec-
dt tivement « DotProduct » et « CrossProduct ».
d
wp_Bk := y_k( t )
d t
2.3 Vitesse et accélération d’un point
d
z_k( t ) de solide
dt
>wp_k:=map(diff,w_Bk,t)+CrossProduct(Omega_k_i_Bk,w_B L
k); x
>OO1_B2:=simplify(MatrixInverse(P_B2_B0).OO1_B0);
z0
cos( θ ( t ) ) x( t )
OO1_B2 := 0
Figure 6 – Pendule simple
sin( θ ( t ) ) x( t )
>OM_B2:=OO1_B2+O1M_B2;
>OA_B0:=<0,0,a*sin(omega*t)>;
cos( θ ( t ) ) x( t )
0
OM_B2 := 0
OA_B0 := 0
sin( θ ( t ) ) x( t ) + L
a sin( ω t )
On définit ensuite le vecteur Ω2/ 0 que l’on peut exprimer directe-
ment dans B2 . Il ne reste plus, alors, qu’à dériver le vecteur >OG_B0:=<x(t),0,z(t)>;
position :
>Omega_2_1_B2:=<0,diff(theta(t),t),0>;
x( t )
OG_B0 := 0
0
z( t )
d
Omega_2_1_B2 := θ ( t )
dt
0 >AG_B0:=-OA_B0+OG_B0;
x( t )
>V_M_2_0_B2:=simplify(map(diff,OM_B2,t)+
CrossProduct(Omega_2_1_B2,OM_B2)); AG_B0 := 0
−a sin( ω t ) + z( t )
cos( θ ( t ) ) d x( t ) + d θ( t ) L
dt dt
>eq:=DotProduct(AG_B0,AG_B0,conjugate=false)=L**2;
V_M_2_0_B2 := 0
x( t ) 2 + ( −a sin( ω t ) + z( t ) ) 2 = L 2
sin( θ ( t ) ) x( t )
d
dt
Il faut remarquer ici que, dans l’expression du produit scalaire,
On voit tout de suite l’intérêt de cette ligne de commande qu’il on a ajouté l’option « conjugate=false ». Cette option permet
suffit de recopier en modifiant les noms de variable pour obtenir d’obtenir un produit scalaire au sens habituel de la mécanique.
l’accélération du point M dans son mouvement par rapport à R0 : Dans le cas contraire, on fait intervenir les conjugués des termes.
>A_M_2_0_B2:=simplify(map(diff,V_M_2_0_B2,t)+
On dérive maintenant cette équation par rapport au temps :
CrossProduct(Omega_2_1_B2,V_M_2_0_B2));
>eqd:=diff(eq,t);
d2 d2
cos ( θ( t ) )
d t 2 x( t ) + d t 2 θ ( t ) L
eqd := 2 x( t ) x( t ) + 2 ( −a sin( ω t ) + z( t ) )
d
dt
A_M_2_0_B2 := 0
−a cos( ω t ) ω + d z( t ) = 0
2
sin( θ( t ) ) d 2
d dt
dt 2 x( t ) − dt θ ( t ) L
■ Exemple 2 : Cardan, extrait de l’article des Techniques de
l’Ingénieur [A 1 661] – réf. [2] (figure 7).
2.4 Équations de liaison pour Ici, on définit directement les vecteurs dans B0 :
les systèmes plans et spatiaux >OA_B0:=<R*cos(psi(t)),R*sin(psi(t)),0>;
x1
A 1,5
2 A 1
1 B'
C 2
O 0,5
z0
0 3 y3 B O 0
1 2 3 4 5 6
B D – 0,5
A'
z*0
–1
0 – 1,5
y1 y0 z*0 y3 y*0
z0
Figure 8 – Courbe 1
x1 y*0 x3
y0 2
x0 x0 , x*0
O O O a schéma de réalisation
z (rainures)
Figure 7 – Joint de Cardan
1
>OB_B0:=<
– R*sin(phi(t)),R*cos(theta)*cos(phi(t)),R*sin(theta)* 0
2
cos(phi(t))>; y2 R
O2 O2
−R sin( φ ( t ) ) 2 z0
OB_B0 := R cos( θ ) cos( φ ( t ) ) y0
M
M
R sin( θ ) cos( φ ( t ) )
O1
>eql_cardan:=DotProduct(OA_B0,OB_B0,conjugate=false); y0 0 z0
O1
0 x1
eql_cardan := −R 2 cos( ψ ( t ) ) sin( φ ( t ) ) + R 2 sin( ψ ( t ) ) cos ( θ ) cos ( φ( t ) )
sin( φ( t ) )
ψ ( t ) := arctan
Figure 9 – Croix de Malte
cos( θ ) cos( φ ( t ) )
Pour obtenir une représentation de la solution dans un cas parti- aussi explorer l’ensemble des options possibles : épaisseurs et
culier, on doit imposer une valeur numérique à θ et une loi pour types de traits, titres, échelles...
ϕ (t ) :
>theta:=40*Pi/180;phi(t):=t;(psi(t)); Remarque : la construction de tracés permettant de nom-
breuses options (voir l’aide), plutôt que de les présenter toutes
2π sur cette courbe nous présenterons de nouvelles options pour
θ :=
9 chaque nouveau tracé.
φ( t ) := t
>plot(eval(psi(t)),t=0..2*Pi);
sin( φ( t ) )
arctan
cos( θ ) cos( φ ( t ) ) (courbe 1 – figure 8)
• On définit le vecteur position du point M en passant par deux Pour forcer l’évaluation de l’ensemble des solutions, il faut
chemins différents (droite D et gauche G) : demander « allvalues » :
>O1M_B0_G:=<-e+rho(t)*cos(psi(t)),rho(t)*sin(psi(t)),0>; >sol:=allvalues(solve({edl1,edl2},{rho(t),psi(t)}));
−e + ρ( t ) cos ( ψ ( t ) ) 1
sol := ρ( t ) = , ψ( t )
O1M_B0_G := ρ( t ) sin( ψ ( t ) )
1
0
e 2 − 2 e r cos ( φ( t ) ) + r 2
1
>O1M_B0_D:=<-r*cos(phi(t)),r*sin(phi(t)),0>; = arctan sin( φ ( t ) ) r,
e 2 − 2 e r cos ( φ ( t ) ) + r 2
−r cos( φ ( t ) ) 1
( e − r cos( φ ( t ) ) ) ,
O1M_B0_D := r sin( φ ( t ) ) e 2 − 2 e r cos( φ ( t ) ) + r 2
0
1
ψ ( t ) = arctan − sin ( φ( t ) ) r,
On extrait cette fois deux équations de liaison : e 2 − 2 e r cos( φ ( t ) ) + r 2
>edl1:=O1M_B0_G[1]=O1M_B0_D[1]; 1
−( e − r cos ( φ( t ) ) ) ,
e 2 − 2 e r cos( φ( t ) ) + r 2
edl1 := −e + ρ( t ) cos ( ψ ( t ) ) = −r cos ( φ( t ) )
1
ρ( t ) = −
>edl2:=O1M_B0_G[2]=O1M_B0_D[2]; 1
2
e − 2 e r cos( φ ( t ) ) + r
2
On voit que la solution est fonction des solutions d’une équation On remarquera que la fonction « arctan » s’est mise sous la forme
complexe. Pour avoir plus de détails, il faut aller voir l’aide sur « arctan(y,x) ». Cette forme vient du fait que, pour résoudre, Maple a
« RootOff ». En effet, Maple travaillant dans le domaine complexe, travaillé dans le domaine complexe et donne l’argument du nombre
la solution dépend donc des valeurs des paramètres dimensionnels. complexe x + i y. On pourra aller voir l’aide sur « arctan ».
z0 , z*0 , z1 , z2
y0 , y1
0,8 y2 , y3
0,6 (S3) x2
0,4 R O2
d
0,2 B
O3 (S1)
0 (S2) O1
– 0,2 5 10 15 20 25 k
(S0) x0 , x1
– 0,4
A
– 0,6 (S0)
(S*0)
– 0,8
y2 y1
y2 , y3
a x2
Figure 10 – Courbe 2 O2
O1
x1
y0 B
• Traitons maintenant un exemple numérique. 3 G
O3 y
>e:=50;r:=40;phi(t):=t;eval(psi(t));eval(psi2(t)); 0 O* A
x0
O (S*0) x1 , x0
z2
e := 50 z3
z1
r := 40
φ( t ) := t
O2 x2 O3
1 x3
arctan 40 sin( t ) , O1 I
4100 − 4000 cos( t )
1 1
50 − 40 cos( t )
4100 − 4000 cos( t ) 4100 − 4000 cos( t ) Figure 11 – Modélisation d’une partie d’un train d’atterrissage
d’avion
−arctan
40 sin( t )
−50 + 40 cos( t )
On réalise la matrice de passage de 0 dans 2, comme vu dans le
paragraphe précédent :
et faisons le tracé
>P_0_2:=Matrix([<cos(theta(t)),-sin(theta(t)),0>,<sin
>plot(eval(psi(t)),t=0..8*Pi); (theta(t)),cos(theta(t)),0>,<0,0,1>]);
>V_O3_2_0_B2:=V_O2_2_0_B2+CrossProduct(Omega_2_0_B2,O
2O3_B2);
>Omega_3_0_B2:=<0,diff(phi(t),t),diff(theta(t),t)>;
O3I_B2:=<0,0,-R>;
0
d
φ ( t )
Omega_3_0_B2 := dt
d
θ ( t )
d t
a b
0
O3I_B2 := 0
−R
>V_I_3_0_B2:=V_O3_2_0_B2+CrossProduct(Omega_3_0_B2,O3
I_B2);
cos( θ ( t ) ) v + sin( θ ( t ) ) d y( t ) − d φ( t ) R
dt dt
V_I_3_0_B2 :=
−sin( θ ( t ) ) v + cos( θ ( t ) ) y( t ) − θ( t ) L
d d
d t d t
0
La vitesse de rotation de la croix en fonction de l’entrée est obte- ■ Génération automatique d’une série de courbes
nue par dérivation par rapport au temps de l’expression
précédente : En reprenant l’étude précédente, on trace les courbes de dépla-
cement et vitesse pour des valeurs de k allant de 3 à 5.
>FFp:=simplify(diff(FF,t));
Pour cela, on doit reprendre les équations littérales et donner
π (z − 2) des valeurs uniquement pour e et ϕ (t) :
φ( t ) ≤ −
0
2z >e:=50;phi(t):=t;
π π
sin cos ( φ( t ) ) − sin φ ( t )
d
FFp := − π (z − 2) e := 50
z z dt φ( t ) ≤
π π
2 2z φ( t ) := t
−2 + 2 sin cos( φ ( t ) ) + cos
z z
Pour réaliser cette série de courbes (figure 14, courbe 4) on uti-
0 otherwise
lise la procédure « seq » qui crée une séquence et fait varier z de 3
■ Application numérique à 5. On obtiendra ainsi les trois courbes cherchées réalisées en
imposant des options telles que la couleur, la légende et le nom-
Afin de garder les équations littérales, on crée de nouvelles bre de points de calcul. En ce qui concerne la légende, on remar-
expressions en donnant des valeurs numériques. quera la manière dont on construit une chaîne de caractères en
À cette occasion, nous allons voir comment stocker plusieurs concaténant « z= » avec la valeur convertie de z :
tracés et les afficher tous ensemble (courbe 3 – figure 13). Pour >T:=seq(plot(FF,t=-Pi/2..Pi/2,color=COLOR(HUE,z/5),
cela, nous utiliserons la procédure « display » qui fait partie de la legend=cat("z=",convert(z,string)),numpoints=400),z=3
bibliothèque « plots ». L’ensemble des bibliothèques peut être
..5)
chargé au début du programme après le « restart » :
>FF_num:=eval(subs(e=50,z=4,phi(t)=t,FF)); >display(T);
FFp_num:=eval(subs(e=50,z=4,phi(t)=t,FFp)); On pratique de la même façon pour les vitesses (figure 15 –
courbe 5) :
π π
− t≤− >Tp:=seq(plot(FFp,t=Pi/2..Pi/2,color=COLOR(HUE,z/5),
4 4
legend=cat("z=",convert(z,string)),numpoints=400),z=3
25 2 sin( t ) π ..5):
FF_num := −arctan
t≤
−50 + 25 2 cos( t ) 4 >display(Tp);
π
(courbe 5 – figure 15)
otherwise
4
Pour plus de détails, il faut aller voir l’aide sur « seq » et sur les
options de « plot ».
π
0 t≤−
4
2
2 cos ( t ) −
FFp_num := 1 2 π
− t≤
2 3 4
− + 2 cos ( t ) 1 z=3
2 z=4
z=5
0 otherwise 0,5
0
>with(plots):p1:=plot(FF_num,t=-Pi..Pi):p2:=plot(FFp_
num,t=-Pi..Pi,color=blue,thickness=3): – 1,5 –1 – 0,5 0,5 1 1,5
>display([p1,p2]); – 0,5
Figure 14 – Courbe 4
1,5 6 z=3
z=4
5
1 z=5
4
0,5 3
0 2
–3 –2 –1 1 2 3 1
– 0,5
– 1,5 –1 – 0,5 0 0,5 1 1,5