Vous êtes sur la page 1sur 14

Maple et la mécanique

des systèmes multicorps – Partie 1

par Philippe LONJOU


Professeur agrégé de mécanique
Institut national des sciences appliquées (INSA) de Lyon

1. Bases de Maple ......................................................................................... AF 5 060 - 2


1.1 Introduction .................................................................................................. — 2
1.2 Environnement ............................................................................................. — 2
1.3 Lignes de commande .................................................................................. — 2
1.3.1 Nom de variable.................................................................................. — 4
1.3.2 Affectation – Égalité ............................................................................ — 4
1.3.3 Expression – Fonction......................................................................... — 4
1.4 Calcul............................................................................................................. — 4
1.4.1 Aides .................................................................................................... — 4
1.4.2 Bibliothèques....................................................................................... — 5
2. Cinématique ............................................................................................... — 5
2.1 Repérage et changement de base .............................................................. — 5
2.2 Dérivation vectorielle................................................................................... — 7
2.3 Vitesse et accélération d’un point de solide .............................................. — 8
2.4 Équations de liaison pour les systèmes plans et spatiaux ....................... — 9
2.4.1 Liaisons de type géométrique............................................................ — 9
2.4.2 Liaison de cinématique....................................................................... — 12
2.5 Mouvement plan sur plan ........................................................................... — 13
Pour en savoir plus .............................................................................................. Doc. AF 5 062

es logiciels de calcul formel tel Maple sont particulièrement bien appro-


L priés au travail de l’ingénieur, surtout dans le domaine de la mécanique
des systèmes multicorps. Ce domaine nécessite très souvent des calculs longs,
fastidieux et donc source d’erreurs lorsqu’ils sont réalisés à la main.
Ces dernières années, les méthodes numériques alliées à l’augmentation de
capacité des ordinateurs ainsi que l’apparition de logiciels de simulation de
mécanismes comme ADAMS, MECANICA, SIMPACK... nous ont parfois fait
perdre de vue le cœur des modèles.
Le retour au calcul formel doit permettre :
– d’éliminer l’effet « boîte noire » ;
– de pouvoir analyser de manière plus lisible l’influence des différents
paramètres ;
7 - 2008

– d’éviter ou de retarder le plus tard possible le passage à des méthodes de


résolution numériques.
Le but de cet article présenté en deux parties ([AF 5 060] et [AF 5 061]) est de
faire découvrir l’intérêt de Maple (logiciel de calcul formel et solveur) dans le
cadre de la résolution des problèmes rencontrés en cinématique et dynamique
des corps rigides. Il vise à montrer, par l’application à des cas concrets, les
AF 5 060

possibilités du logiciel et à faire découvrir les méthodes de résolution qu’il pro-


pose. Ces méthodes seront étudiées au travers d’exemples et s’appuieront sur
les données de mécanique générale présentées dans les Techniques de
l’Ingénieur.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. AF 5 060 – 1

Dossier délivré pour


DOCUMENTATION
18/09/2008
MAPLE ET LA MÉCANIQUE DES SYSTÈMES MULTICORPS – PARTIE 1 __________________________________________________________________________

Contrairement à beaucoup d’ouvrages consacrés à ce logiciel, il ne s’agit pas


ici de montrer de manière exhaustive toutes les possibilités de Maple, mais de
prendre en main le logiciel dans le cadre de la mécanique des systèmes.
Nous avons mis la priorité plus sur la progressivité et la pédagogie, que sur
l’optimisation de la programmation.
L’originalité de la version 10 de Maple est de pouvoir créer des feuilles de
présentation interactives, ce qui est particulièrement intéressant lorsque l’on
réalise des études qui seront amenées à être utilisées par des non-spécialistes.
De plus, de nombreux modules ont été développés par la société MapleSoft,
tels DynaFlex, Global Optimization, BlockBuilder for Simulink, Math Toolbox
for Labview, qui peuvent rendre de grands services aux mécaniciens.
Ici, le choix a été fait de réaliser une introduction au logiciel ; nous laissons
donc pour une étude ultérieure la partie création de programmes ainsi que la
partie création de feuille de présentation.
Maple est une marque déposée de Waterloo Maple Inc.

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.

1. Bases de Maple La barre de menus comporte les fonctionnalités habituelles de


gestion de fichiers. La présentation des feuilles de calcul (figure 1)
peut être améliorée en définissant des styles comme sous
n’importe quel logiciel de traitement de texte. Par défaut, les lignes
1.1 Introduction de commande sont de couleur rouge et doivent commencer par
les signes [> et les lignes de texte par [. La création d’une ligne se
Le logiciel Maple peut s’implanter sous divers systèmes
d’exploitation : Windows, Linux, Unix, Macintosh. L’interface pré- fera en appuyant sur les icônes correspondantes et . De
sentée dans ce qui suit est celle de Windows. Les syntaxes des dif- même, pour l’identation . Le résultat d’une évaluation s’affi-
férentes fonctions restent les mêmes quel que soit le système. chera en bleu (figure 1).
Choix de l’interface Dans un premier temps, pour se familiariser avec le logiciel, on
La version 10 de Maple propose deux types d’environnement. La peut utiliser les différentes palettes, en particulier pour avoir la
version installée par défaut et la version dite « Classic Worksheet ». syntaxe correcte des différentes lettres grecques. Il faut alors aller
La version standard propose un environnement qui permet de réali- dans le menu View/Palettes.
ser des feuilles de présentation interactives, un peu dans l’esprit
« Visual Basic » ou de l’interface Matlab. Le but de cet article étant
plus orienté vers le calcul, nous laisserons de côté cet aspect du logi- Pour des raisons éditoriales, les lignes de commande seront,
ciel. Nous utiliserons donc l’environnement « Classic Worksheet ». dans cet article, imprimées en gris.
Cela permettra aux possesseurs de versions plus anciennes de
s’initier au mode de fonctionnement dans le cadre d’exemples
concrets.
1.3 Lignes de commande
Remarque : l’extension des fichiers Maple (version 10) est Le logiciel Maple étant un logiciel interprété, les lignes de
définie par défaut « .mw ». Afin d’éviter que les fichiers rédi- commande sont exécutées après avoir été validées les unes après
gés sous la version « Classic Worksheet » ne soient automati- les autres (en appuyant sur Enter lorsque le curseur se trouve
quement convertis, il faut modifier les options de dossiers ; n’importe où à l’intérieur de cette ligne).
pour cela, il faut aller dans le menu démarrer\tous les pro-
grammes \Maple 10 \Tools \Working File Association Selector Cela peut entraîner une erreur classique chez le débutant lors de
et cocher la case Classic Worksheet Maple 10 dans le cadre la création de sa page de calcul.
MSW File Association.
■ Voici un exemple :
>a:=h;
1.2 Environnement
a := h
Comme nous l’avons déjà dit, le but n’étant pas de voir en détail
toutes les fonctionnalités et les particularités du logiciel, nous ne >b:=x*c+a;
présenterons que ce qui est nécessaire à la mise en place des
feuilles de calcul. Il appartiendra au lecteur d’explorer plus avant le 1
b := +h
logiciel. x

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


AF 5 060 − 2 est strictement interdite. − © Editions T.I.

Dossier délivré pour


DOCUMENTATION
18/09/2008
__________________________________________________________________________ MAPLE ET LA MÉCANIQUE DES SYSTÈMES MULTICORPS – PARTIE 1

Figure 1 – Présentation des feuilles de calcul

>c:=1/x; Si l’on valide cette ligne, et que l’on reprend le programme là où


l’on s’est arrêté, la valeur de « e » aura intégré celle de « b » défi-
1
c := nie après en dernier.
x
Afin d’éviter d’inutiles pertes de temps, il faut commencer tous
>e:=2*x*b; les programmes par la ligne suivante :
>restart:
e := 2 x  + h 
1
x  Et chaque fois que l’on fera une modification dans une ligne
intermédiaire, il faudra valider toutes les lignes à partir de la pre-
>b:=b*c*e; mière.
2 On pourra lancer une exécution de l’ensemble des lignes de
b := 2  + h 
1
x  commande en appuyant sur l’icône suivante : .
■ On obtient alors un résultat correct :
■ Imaginons faire une correction sur la valeur de « c » :
>restart;
>a:=h;
>a:=h;
a := h
a := h
>b:=x*c+a;
>b:=x*c+a;
1
b := +h b := x c + h
x
>c:=1/x**2; >c:=1/x**2;
1 1
c := 2 c :=
x x2

>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

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. AF 5 060 – 3

Dossier délivré pour


DOCUMENTATION
18/09/2008
MAPLE ET LA MÉCANIQUE DES SYSTÈMES MULTICORPS – PARTIE 1 __________________________________________________________________________

Toute ligne de commande doit se terminer impérativement par 1.4 Calcul


« ; » si l’on veut voir l’évaluation de la ligne de calcul, ou « : » si
l’on ne veut pas afficher le résultat d’une évaluation.

Attention : Maple travaille par défaut dans le domaine


1.3.1 Nom de variable complexe, ce qui impose, dans certains cas, d’aller chercher la
partie réelle d’une solution. Lorsque l’on travaillera avec des
Les variables Maple ne sont pas typées a priori. Sous le nom paramètres dimensionnels ou inertiels, il faudra spécifier que ces
d’une variable peut se trouver une liste, un ensemble, une équa- termes sont des réels positifs si l’on ne veut pas voir apparaître
tion, une expression, une fonction... des solutions qui ne répondent pas à la réalité de notre problème.
Le nom des variables est un ensemble de caractères qui ne peut
pas commencer par un chiffre et ne doit pas contenir les caractè- >AA:=sqrt(-2);
res suivants : *, /, –, +, =... ou tout autre signe ayant un sens
mathématique. AA := 2 I
Attention, le logiciel fait la différence entre minuscule et majus- Par ailleurs, bien qu’étant un logiciel de calcul formel, Maple
cule. D’autre part, certains noms de variables sont réservés ; par permet d’effectuer des calculs numériques. Le calcul numérique ne
exemple : s’effectue qu’à la demande de l’utilisateur, de manière :
– I (imaginaire pure) ; – explicite :
– D (différentielle) ; >B:=4/3;
– Pi ; 4
– Gamma, Psi (fonctions Γ, Ψ...) ; B :=
3
– et d’autres qui ont un sens mathématique précis...
>evalf(B);
1.3.2 Affectation – Égalité 1.333333333

Le signe de l’affectation est défini par « := » (différent de « = »). – implicite :


• lorsqu’une des valeurs s’exprime sous une forme décimale :
■ Dans l’exemple suivant, on affecte à la variable equ l’équation
>C:=4./3;
a*x^3+sin(x)=0
C := 1.333333333
>equ:=a*x^3+sin(x)=0;
• l’évaluation décimale pouvant être imposée des deux
equ := a x 3 + sin ( x ) = 0 manières suivantes :
>evalf(Pi,87);

1.3.3 Expression – Fonction 3.14159265358979323846264338327950288419716939937510582 \


097494459230781640628620899862803
■ Les expressions sont les entités de base du langage Maple.
Elles peuvent être de différents types : constantes, combinaison 87 correspond au nombre de décimales calculées.
d’opérations, structure de données et appel de fonction. Par défaut, les calculs numériques se font en virgule flottante
>Exp:=a*x^3+sin(x); avec dix chiffres significatifs. On peut changer cette valeur en utili-
sant la fonction « Digits=n ». On peut ainsi augmenter la précision
Exp := a x 3 + sin( x ) d’un calcul. On pourra aussi regarder avec profit l’aide sur la pro-
cédure « Digits » :
>Digits:=270;
« Exp » est une variable à laquelle on a affecté l’expression
a*x^3+sin(x) Digits := 270
>Exp(2);
>27/31.;
a( 2 ) x( 2 ) 3 + sin( x )( 2 )
0.87096774193548387096774193548387096774193548387096774 \
« Exp » ne doit pas être confondu avec une fonction. « Exp » ne 193548387096774193548387096774193548387096774193548 \
peut prendre la valeur de l’expression pour x = 2. 387096774193548387096774193548387096774193548387096 \
■ Une fonction est une application qui, à toute valeur de x, fait 774193548387096774193548387096774193548387096774193 \
correspondre la valeur de l’expression qui la définit, pour le x 548387096774193548387096774193548387096774193548387 \
donné. 0967741935484
>fnc:=x->a*x^3+sin(x);
1.4.1 Aides
fnc := x → a x 3 + sin( x )
L’aide Maple est bien réalisée. On peut y faire appel chaque fois
« fnc » est une fonction de x définie par a*x^3+sin(x) que l’on a un doute en ce qui concerne le domaine d’utilisation et
la syntaxe d’une fonction. Elle est particulièrement utile lorsque
On peut alors déterminer la valeur de cette fonction pour x = 2. l’on cherche une « fonction voisine » d’une fonction connue.
>fnc(2); L’accès se fait en appuyant sur la touche F1 (F2 en mode
document) du clavier après avoir positionné le curseur sur le nom
8 a + sin( 2 ) de la fonction. Dans l’exemple suivant (figure 2), on recherche le

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


AF 5 060 – 4 est strictement interdite. – © Editions T.I.

Dossier délivré pour


DOCUMENTATION
18/09/2008
__________________________________________________________________________ MAPLE ET LA MÉCANIQUE DES SYSTÈMES MULTICORPS – PARTIE 1

Figure 2 – Domaine d’utilisation de la procédure « simplify »

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.

[&x, Add, Adjoint, BackwardSubstitute, BandMatrix, Basis, BezoutMatrix,


BidiagonalForm, BilinearForm, CharacteristicMatrix,
CharacteristicPolynomial, Column, ColumnDimension, ColumnOperation, Avant tout, il est conseillé, pour commencer, de se familiariser
ColumnSpace, CompanionMatrix, ConditionNumber, ConstantMatrix, avec le logiciel en faisant le « New User’s Tour » que l’on trouve
ConstantVector, Copy, CreatePermutation, CrossProduct, DeleteColumn, sous le menu « Help » de l’interface « classic » ou bien « Take a
DeleteRow, Determinant, Diagonal, DiagonalMatrix, Dimension, Tour of Maple » pour l’interface standard.
Dimensions, DotProduct, EigenConditionNumbers, Eigenvalues,
Eigenvectors, Equal, ForwardSubstitute, FrobeniusForm,
GaussianElimination, GenerateEquations, GenerateMatrix,
GetResultDataType, GetResultShape, GivensRotationMatrix, 2. Cinématique
GramSchmidt, HankelMatrix, HermiteForm, HermitianTranspose,
HessenbergForm, HilbertMatrix, HouseholderMatrix, IdentityMatrix,
IntersectionBasis, IsDefinite, IsOrthogonal, IsSimilar, IsUnitary, Les outils Maple seront présentés en utilisant certains
JordanBlockMatrix, JordanForm, LA_Main, LUDecomposition, paragraphes de l’article des Techniques de l’Ingénieur [A 1 661]
LeastSquares, LinearSolve, Map, Map2, MatrixAdd, MatrixExponential, (réf. [2]). Cette présentation des fonctions Maple ne sera pas
MatrixFunction, MatrixInverse, MatrixMatrixMultiply, MatrixNorm, exhaustive mais concernera celles qui sont le plus couramment
MatrixPower, MatrixScalarMultiply, MatrixVectorMultiply, utiles au mécanicien.
MinimalPolynomial, Minor, Modular, Multiply, NoUserValue, Norm,
Normalize, NullSpace, OuterProductMatrix, Permanent, Pivot,
PopovForm, QRDecomposition, RandomMatrix, RandomVector, Rank, 2.1 Repérage et changement de base
RationalCanonicalForm, ReducedRowEchelonForm, Row, RowDimension,
RowOperation, RowSpace, ScalarMatrix, ScalarMultiply, ScalarVector, Ce paragraphe va nous donner l’occasion de manipuler les outils
SchurForm, SingularValues, SmithForm, SubMatrix, SubVector, SumBasis, matrices et vecteurs.
SylvesterMatrix, ToeplitzMatrix, Trace, Transpose, TridiagonalForm, Comme dit précédemment, il faut charger la bibliothèque
UnitVector, VandermondeMatrix, VectorAdd, VectorAngle, « LinearAlgebra ». Il est recommandé d’utiliser celle-ci et d’oublier
VectorMatrixMultiply, VectorNorm, VectorScalarMultiply, ZeroMatrix, l’ancienne version « linalg ». Dans tous les cas, il vaut mieux éviter
ZeroVector, Zip] d’utiliser les deux en même temps.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. AF 5 060 – 5

Dossier délivré pour


DOCUMENTATION
18/09/2008
MAPLE ET LA MÉCANIQUE DES SYSTÈMES MULTICORPS – PARTIE 1 __________________________________________________________________________

zi y1 yi
zk
yk

yi x1
Oi Ok
xi
Oi , O k
(Ri) (Rk)
xi
xk

Figure 3 – Repérage d’un point M dans deux repères Ri et Rk z1


z2
y2
■ Construction de vecteurs
Ici, le vecteur est défini à partir de ses coordonnées dans une
base donnée, par exemple Bi (figure 3). y1
Oi , O k
Deux syntaxes différentes sont possibles
>W:=<x_i,y_i,z_i>; y2
yk
x_i 
 
W := y_i  xk
 
 z_i 

On notera que « Vector » doit s’écrire en commençant par une x2


majuscule Oi , O k
>W:=Vector([x_i,y_i,z_i]);
Figure 4 – Repérage d’une rotation plane : angles d’Euler de type I
x_i 
 
W := y_i 
 
 z_i  >Z1_Bi:=<0,0,1>;

■ 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)

■ Matrice de passage de B i dans B1



 
 
 
 
Dans ce cas particulier, z 1 = z i : soit x1, y 1, z 1 les vecteurs Remarque : ici, on ne peut donner le nom de « ψ » à la
unitaires d’une base B1 . Nous allons exprimer ces vecteurs dans la variable car ce nom est réservé à une fonction précise ; on
base Bi . On peut voir ici une syntaxe simplifiée de la définition des choisit donc de l’écrire sous la forme _ψ.
vecteurs :
>x1_Bi:=<cos(psi),sin(psi),0>;
On peut alors obtenir les coordonnées d’un vecteur dans Bi ,
cos ( ψ ) exprimées à partir de la connaissance de ce vecteur exprimé dans
 
x1_Bi :=  sin( ψ )  B1 . On réalise cette opération en effectuant le produit d’une
  matrice par un vecteur :
 0 
>V_B1:=<X_1,Y_1,Z_1>:
>y1_Bi:=<-sin(psi),cos(psi),0>; >V_Bi:=MatrixVectorMultiply(_Psi,V_B1);

 −sin( ψ )  cos( ψ ) X_1 − sin( ψ ) Y_1 


   
y1_Bi :=  cos( ψ )  V_Bi :=  sin( ψ ) X_1 + cos( ψ ) Y_1 
   
 0   Z_1 

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


AF 5 060 – 6 est strictement interdite. – © Editions T.I.

Dossier délivré pour


DOCUMENTATION
18/09/2008
__________________________________________________________________________ MAPLE ET LA MÉCANIQUE DES SYSTÈMES MULTICORPS – PARTIE 1

Si l’on veut exprimer un vecteur dans B1 , à partir de la >V_Bk:=Phi_INV.V_B2;


connaissance de ce vecteur exprimé dans Bi , on définit la matrice
inverse de cette matrice de passage :
V_Bk :=
>Psi_INV:=simplify(MatrixInverse(_Psi));
[ cos( φ ) ( cos( ψ ) X_i + sin( ψ ) Y_i )
 cos( ψ ) sin( ψ ) 0 + sin( φ ) ( cos( θ ) ( −sin( ψ ) X_i + cos ( ψ ) Y_i ) + sin( θ ) Z_i ) ]
 
Psi_INV :=  −sin( ψ ) cos ( ψ ) 0 [ −sin( φ ) ( cos( ψ ) X_i + sin( ψ ) Y_i )
 
 0 0 1 + cos( φ ) ( cos( θ ) ( −sin( ψ ) X_i + cos( ψ ) Y_i ) + sin( θ ) Z_i ) ]
[ −sin( θ ) ( −sin( ψ ) X_i + cos ( ψ ) Y_i ) + cos ( θ ) Z_i ]
On notera que le changement de l’une à l’autre se fait en chan-
geant ψ en – ψ.
■ Matrice de passage de Bi dans Bk
Et on calcule :
>V_Bi:=<X_i,Y_i,Z_i>: On construit la matrice de passage de la manière suivante :
>V_B1:=MatrixVectorMultiply(Psi_INV,V_Bi); >P_i_k:=Phi_INV.Theta_INV.Psi_INV;

 cos( ψ ) X_i + sin( ψ ) Y_i  P_i_k :=


 
V_B1 :=  −sin( ψ ) X_i + cos ( ψ ) Y_i
  [ cos( φ ) cos( ψ ) − sin( φ ) cos( θ ) sin( ψ ) ,
 Z_i  cos( φ ) sin( ψ ) + sin( φ ) cos ( θ ) cos ( ψ ) , sin( φ ) sin( θ ) ]
■ Matrice de passage de B1 dans B2 [ −sin( φ ) cos( ψ ) − cos( φ ) cos ( θ ) sin( ψ ) ,
−sin( φ ) sin( ψ ) + cos( φ ) cos( θ ) cos( ψ ) , cos( φ ) sin( θ ) ]
À l’occasion de cet exemple, on peut noter une autre forme pos-
sible de la syntaxe pour la matrice et le produit matriciel : [ sin( θ ) sin( ψ ) , −sin( θ ) cos ( ψ ) , cos ( θ ) ]
>Theta:=Matrix([<1,0,0>,<0,cos(theta),sin(theta)>,<0, 
-sin(theta),cos(theta)>]); et on obtient le vecteur V exprimé dans la base Bi , à partir de son
expression dans la base Bk en utilisant cette matrice de passage :
1 0 0 
  >V_Bk_2:=P_i_k.V_Bi;
Θ :=  0 cos( θ ) −sin( θ )
 
0 sin( θ ) cos( θ ) 
V_Bk_2 :=
>Theta_INV:=simplify(MatrixInverse(Theta)); [ ( cos( φ ) cos( ψ ) − sin( φ ) cos( θ ) sin( ψ ) ) X_i
+ ( cos( φ ) sin( ψ ) + sin( φ ) cos( θ ) cos( ψ ) ) Y_i + sin( φ ) sin( θ ) Z_i
1 0 0  ]
 
Theta_INV :=  0 cos( θ ) sin( θ )  [ ( −sin( φ ) cos( ψ ) − cos( φ ) cos( θ ) sin( ψ ) ) X_i
 
0 −sin( θ ) cos( θ ) + ( −sin( φ ) sin( ψ ) + cos ( φ ) cos ( θ ) cos ( ψ ) ) Y_i
+ cos( φ ) sin( θ ) Z_i ]
>V_B2:=Theta_INV.V_B1; [ sin( θ ) sin( ψ ) X_i − sin( θ ) cos( ψ ) Y_i + cos( θ ) Z_i ]

 cos( ψ ) X_i + sin( ψ ) Y_i 


  On vérifie que les résultats sont identiques à la construction pré-
V_B2 :=  cos( θ ) ( −sin( ψ ) X_i + cos ( ψ ) Y_i ) + sin( θ ) Z_i  cédente, bien que les présentations soient différentes :
 
 −sin( θ ) ( −sin( ψ ) X_i + cos( ψ ) Y_i ) + cos( θ ) Z_i 
>is(V_Bk[1]=V_Bk_2[1]);is(V_Bk[2]=V_Bk_2[2]);
ainsi que l’extraction des coordonnées d’un vecteur : is(V_Bk[3]=V_Bk_2[3]);
>V_B2[1];V_B2[2];V_B2[3];
true
cos( ψ ) X_i + sin( ψ ) Y_i
true
cos( θ ) ( −sin( ψ ) X_i + cos( ψ ) Y_i ) + sin( θ ) Z_i
true
−sin( θ ) ( −sin( ψ ) X_i + cos( ψ ) Y_i ) + cos( θ ) Z_i

■ Matrice de passage de B2 dans Bk


>Phi:=Matrix([<cos(theta),sin(theta),0>,<-sin(theta), 2.2 Dérivation vectorielle
cos(theta),0>,<0,0,1>]);

Soit un vecteur w k (t ) exprimé dans la base Bk et variant au
 cos( θ ) −sin( θ ) 0
  cours du temps. La dérivée de ce vecteur par rapport au temps
Φ :=  sin( θ ) cos( θ ) 0 dans Bk est un vecteur dont les coordonnées sont définies de la
 
 0 0 1 manière suivante :
>w_Bk:=<x_k(t),y_k(t),z_k(t)>;
>Phi_INV:=simplify(MatrixInverse(Phi));

 cos ( θ ) sin( θ ) 0  x_k( t )


   
Phi_INV :=  −sin( θ ) cos( θ ) 0 w_Bk :=  y_k( t )
   
 0 0 1  z_k( t ) 

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. AF 5 060 – 7

Dossier délivré pour


DOCUMENTATION
18/09/2008
MAPLE ET LA MÉCANIQUE DES SYSTÈMES MULTICORPS – PARTIE 1 __________________________________________________________________________

>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 
 

Il faut remarquer que les coordonnées de ce vecteur sont défi-


nies comme dépendant du temps. Notation
Le paragraphe précédent a mis en évidence l’importance du
repère de projection dans la manipulation des vecteurs. C’est
Remarque : il est très important de faire la différence entre pourquoi il faut absolument que les noms de ces vecteurs
expression et fonction (cf. § 1.3.3). Une fonction est une appli- soient explicites et ne laissent pas place à l’ambiguïté.
cation au sens mathématique. Dans notre cas x_(t) n’est pas 
une fonction mais une variable qui dépend du temps. Exemple : soit à écrire V (A,1/ 2) (la vitesse du point A dans
• ex := a x2 + b sin(x) : ici ex est une variable qui contient le mouvement du repère R1 par rapport au repère R2) expri-
l’expression a x2 + b sin(x) mée dans la base BJ . La proposition est la suivante :
• f := x– > a x2 + b sin(x) : dans ce cas, la fonction f est une
application qui a tout x fait correspondre la valeur de V _ A _ 1_ 2 _ BJ
a x2 + b sin(x)
La notation proposée est un peu lourde mais permettra
Cette distinction est d’autant plus importante que les syn- d’éviter des erreurs.
taxes de certaines procédures peuvent être différentes si elles
s’appliquent à l’une ou à l’autre. C’est par exemple le cas du cal-
cul des dérivées pour lequel on doit utiliser, « diff » lorsque l’on
s’adresse à des expressions et « D » dans le cas des fonctions. Traitons maintenant l’exemple proposé dans [A 1 661]
paragraphe 1.5.3.5 ; il s’agit du pendule d’Euler. Soit à calculer la
Dans la plupart des calculs qui suivent, ce sont des expres- vitesse du point M dans son mouvement par rapport à B0
sions qui seront manipulées. (figure 5).
On commence par définir les coordonnées du vecteur position
Pour obtenir le vecteur dérivé, on doit dériver les coordonnées du point M et on dérive ce dernier :

du vecteur w k (t ) . La procédure « diff(.....) » permet de réaliser   
cette opération. OM = OO1 + O1M
On pourrait faire cela successivement pour x_k(t), y_k(t) et z_k(t). >OO1_B0:=<x(t),0,0>;
Dans l’exemple proposé, la fonction « map » permet d’appliquer

cette opération à l’ensemble des coordonnées de w k (t ) . (On  x( t )
 
pourra voir l’aide sur la fonction « map »). OO1_B0 :=  0 
Nous allons voir maintenant comment construire ces lignes de
 
 0 
commande, qui sont fondamentales pour le mécanicien des sys-
tèmes multicorps. >O1M_B2:=<0,0,L>;

Soit un vecteur w k (t ) exprimé dans Bk et variant dans Bi .
 0 
 
O1M_B2 :=  0 

 d    d      
 dt w k (t )  =  dt w k (t )  + Ωk / i ∧ w k (t ) L 
i k

Afin de pouvoir réaliser ce calcul, il faut impérativement expri-


mer l’ensemble des vecteurs dans la même base :
>w_Bk:=<x_k(t),y_k(t),z_k(t)>;
x2
O O1
é x_k( t )ù
ê ú x0 x1
w_Bk := êê y_k( t )úú
ê
ê z_k( t ) ú
ú
ë û

>wp_k:=map(diff,w_Bk,t)+CrossProduct(Omega_k_i_Bk,w_B L
k); x

  d x_k( t )  + q_k z_k( t ) − r_k y_k( t )  M


    z0
  dt  
 
 d 
  
wp_k :=   y_k( t )  + r_k x_k( t ) − p_k z_k( t )  z2
  d t   z1
 
 d 
  z_k( t )  + p_k y_k( t ) − q_k x_k( t )
  dt  
   Figure 5 – Pendule avec axe mobile

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


AF 5 060 – 8 est strictement interdite. – © Editions T.I.

Dossier délivré pour


DOCUMENTATION
18/09/2008
__________________________________________________________________________ MAPLE ET LA MÉCANIQUE DES SYSTÈMES MULTICORPS – PARTIE 1

Si l’on désire obtenir le vecteur vitesse dans une base donnée, il


faut que tous les vecteurs soient exprimés dans la même base.
 O
x0
On peut par exemple projeter OO1 dans B2 :
>P_B2_B0:=Matrix([<cos(theta(t)),0,-
sin(theta(t))>,<0,1,0>,<sin(theta(t)),0,cos(theta(t))
A
>]);
L
 cos( θ ( t ) ) 0 sin( θ ( t ) ) 
 
P_B2_B0 :=  0 1 0 
 G
 
 −sin( θ( t ) ) 0 cos( θ ( t ) )

>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>;

2.4.1 Liaisons de type géométrique  R cos( ψ ( t ) )


 
■ Exemple 1 : pendule simple, extrait de l’article des Techniques A_B0 :=  R sin( ψ ( t ) ) 
 
de l’Ingénieur [A 1 661] réf. [2] (figure 6)  0 

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. AF 5 060 – 9

Dossier délivré pour


DOCUMENTATION
18/09/2008
MAPLE ET LA MÉCANIQUE DES SYSTÈMES MULTICORPS – PARTIE 1 __________________________________________________________________________

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 ) ) 

On peut ainsi écrire l’équation de liaison en réalisant le produit x0 r


scalaire des deux vecteurs. On résout ensuite cette équation.
e
x2
Attention : la syntaxe sera modifiée lorsque nous aurons à
y4 1
résoudre un système d’équations.
1

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 ) )

>psi(t):=solve(eql_cardan,psi(t)); x0 b schéma cinématique

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)

La représentation graphique de fonction se fait en utilisant la


■ Exemple 3 : croix de Malte, extrait de l’article [A 1 661] – réf. [2]
procédure « plot ». La syntaxe de cette procédure diffère suivant le (figure 9)
type de données : fonction, expression, liste... Il est conseillé Dans cet exemple sont mises en œuvre deux manières de résou-
d’aller voir l’aide pour les différents cas d’utilisation. On pourra dre le problème avec leurs conséquences.

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


AF 5 060 – 10 est strictement interdite. – © Editions T.I.

Dossier délivré pour


DOCUMENTATION
18/09/2008
__________________________________________________________________________ MAPLE ET LA MÉCANIQUE DES SYSTÈMES MULTICORPS – PARTIE 1

• 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

edl2 := ρ( t ) sin( ψ ( t ) ) = r sin( φ( t ) )


On s’aperçoit ici que Maple a déterminé deux solutions géomé-
Pour la résolution, on peut d’abord déterminer ρ (t ) puis replacer
triques possibles. Ces solutions ne sont pas affectées à ρ (t ), et
sa valeur dans la seconde équation :
ψ (t ), et les variables restent « libres » ; en effet :
>rho(t):=combine(solve(edl2,rho(t)),trig);
>rho(t);psi(t);
r sin( φ( t ) ) ρ( t )
( t ) :=
sin( ψ ( t ) )
ψ( t )
>psi(t):=solve(edl1,psi(t));
Si l’on veut utiliser les valeurs des solutions, il faut le demander
r sin( φ ( t ) ) 
ψ ( t ) := −arctan 
explicitement. On doit alors demander d’affecter la solution à la

 −e + r cos( φ ( t ) )  variable.

Le problème ayant deux ensembles de solutions, on choisit par


• On peut aussi résoudre le système de deux équations à deux
exemple le premier « sol[1] ».
inconnues. Il faut alors définir l’ensemble des équations entre
« { } » et l’ensemble des variables recherchées elles aussi misent On utilise alors la procédure « subs » pour affecter à ρ (t) la
entre « { } ». Le résultat est affecté à une variable, ici « sol ». valeur de la solution donnée dans sol[1] ; idem pour ψ (t) :
La procédure « solve » donne le résultat formel d’une équation >rho(t):=simplify(subs(sol[1],rho(t)));
ou d’un système d’équations (s’il existe). La résolution se fait dans
l’espace complexe. C’est à l’utilisateur ensuite de faire le choix des
solutions réelles du problème de mécanique. S’il n’existe pas de 1
solution formelle à une équation ou à un système d’équations, il ρ( t ) :=
1
faudra utiliser des méthodes numériques et employer la procédure
« fsolve ». Dans les cas plus difficiles, on devra donner la zone de e 2 − 2 e r cos( φ ( t ) ) + r 2
recherche de la solution numérique. Il est évident que, dans ces
cas, toutes les variables autres que les variables cherchées doivent >psi(t):=simplify(subs(sol[1],psi(t)));
avoir une valeur numérique :
>sol:=solve({edl1,edl2},{rho(t),psi(t)});
 1
ψ ( t ) := arctan  sin( φ ( t ) ) r,
sol := { ψ ( t ) = arctan(  e 2 − 2 e r cos( φ( t ) ) + r 2

RootOf ( ( e 2 − 2 e r cos ( φ( t ) ) + r 2 ) _Z 2 − 1, label
1 e
= _L2 ) sin( φ ( t ) ) r, ( e − r cos( φ ( t ) ) ) RootOf ( ( e 2 − 2 e r cos( φ ( t ) ) e 2 − 2 e r cos( φ ( t ) ) + r 2
+ r 2 ) _Z 2 − 1, label = _L2 ) ), ρ( t )
1 
1 − r cos( φ ( t ) ) 
= } e 2 − 2 e r cos ( φ( t ) ) + r 2 
RootOf ( ( e 2 − 2 e r cos ( φ( t ) ) + r 2 ) _Z 2 − 1, label = _L2 )

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 ».

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. AF 5 060 – 11

Dossier délivré pour


DOCUMENTATION
18/09/2008
MAPLE ET LA MÉCANIQUE DES SYSTÈMES MULTICORPS – PARTIE 1 __________________________________________________________________________

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>]);

(courbe 2 – figure 10)


 cos( θ ( t ) ) sin( θ( t ) ) 0
 
P_0_2 :=  −sin( θ( t ) ) cos( θ ( t ) ) 0
 
2.4.2 Liaison de type cinématique  0 0 1

■ Exemple : train d’atterrissage d’avion, extrait de l’article >V_O2_2_0_B2:=P_0_2.V_O2_2_0_B0;


[A 1 661] – réf. [2] (figure 11)

On doit écrire la condition de roulement sans glissement au  cos( θ( t ) ) v + sin( θ( t ) )  d y( t )  


  dt 
  
point I :  
V_O2_2_0_B2 :=  
−sin( θ ( t ) ) v + cos ( θ( t ) )  y( t )  
d
    dt 
V (I, 3 / 0) = 0 avec : 
 
     0 
V (I, 3 / 0) = V (O 3 , 3 / 0) + IO 3 ∧ Ω3/ 0
 
V (O 3 , 3 / 0) = V (O 3 , 2 / 0) >Omega_2_0_B2:=<0,0,diff(theta(t),t)>;O2O3_B2:=<-L,0,
    0>;
V (O 2 , 2 / 0) = V (O 2 , 2 / 0) + O 3O 2 ∧ Ω2/ 0
 0 
 
>V_O2_2_0_B0:=<v,diff(y(t),t),0>;  0 
Omega_2_0_B2 :=  

d 
 θ ( t )
 dt 
 v   
 
d   −L 
V_O2_2_0_B0 :=  y( t )  
 d t  O2O3_B2 :=  0 
   
 0 
   0

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


AF 5 060 – 12 est strictement interdite. – © Editions T.I.

Dossier délivré pour


DOCUMENTATION
18/09/2008
__________________________________________________________________________ MAPLE ET LA MÉCANIQUE DES SYSTÈMES MULTICORPS – PARTIE 1

>V_O3_2_0_B2:=V_O2_2_0_B2+CrossProduct(Omega_2_0_B2,O
2O3_B2);

 cos( θ ( t ) ) v + sin( θ ( t ) )  y( t )  


d
 
  dt  
 
V_O3_2_0_B2 :=  


−sin( θ ( t ) ) v + cos ( θ ( t ) )  y( t )  −  θ( t ) 
 
d d
 L
  dt   dt  
 
 0 

>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 

Pour obtenir les équations de liaison, on extrait les composantes


[1] et [2] du vecteur de glissement au point I dans le mouvement
de 3 par rapport à 0 :
>eql1:=V_I_3_0_B2[1]=0;

eql1 := cos ( θ( t ) ) v + sin( θ ( t ) )  y( t )  −  φ ( t )  R = 0


d d c d
 dt   dt 
Figure 12 – Système à croix de Malte 5 rainures
>eql2:=V_I_3_0_B2[2]=0;

Cette loi de déplacement ϕ (t ) vaut :


eql2 := −sin( θ ( t ) ) v + cos ( θ( t ) )  y( t )  −  d θ( t )  L = 0
d
 
 dt   dt  π (z − 2)  π
− sur l'int ervalle, − ∞;z 
2z  
 π π 
ψ (t ) sur l'int ervalle, − z ; z 
2.5 Mouvement plan sur plan  
π (z − 2) π 
De l’article [A 1 663] réf. [3] paru dans les Techniques de l’Ingé- sur l'int ervalle,  z ;∞ 
nieur ne sera traité que l’exemple relatif à la croix de Malte 2z  
(figure 12). Pour cela, on peut utiliser la procédure « piecewise » qui cons-
En reprenant l’expression de la rotation de la croix de Malte en truit une « expression » (ici il ne s’agit pas d’une fonction) définie
fonction du temps et remplaçant r par sa valeur : par morceau :
>FF:=eval(piecewise(phi(t)<=-Pi/2*(z-2)/z,-
>psi(t):=-arctan(r*sin(phi(t))/(-e+r*cos(phi(t))));
Pi/z,phi(t)<=Pi/2*(z-2)/z,psi(t),Pi/z));
r sin( φ ( t ) ) 
ψ ( t ) := −arctan    − π π (z − 2)
 −e + r cos( φ ( t ) )   φ( t ) ≤ −
 z 2z

 π (z − 2)

>r:=e*sin(Pi/z); F :=  ψ ( t ) φ( t ) ≤
 2z

π  π
r := e sin  
 z otherwise
z 

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


est strictement interdite. – © Editions T.I. AF 5 060 – 13

Dossier délivré pour


DOCUMENTATION
18/09/2008
MAPLE ET LA MÉCANIQUE DES SYSTÈMES MULTICORPS – PARTIE 1 __________________________________________________________________________

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

(courbe 3 – figure 13)


–1

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

Figure 13 – Courbe 3 Figure 15 – Courbe 5

Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie


AF 5 060 – 14 est strictement interdite. – © Editions T.I.

Dossier délivré pour


DOCUMENTATION
18/09/2008

Vous aimerez peut-être aussi