Académique Documents
Professionnel Documents
Culture Documents
avec Maple
Faouzi LAKRAD
Avant propos
Dans le présent travail on utilise le logiciel Maple pour générer des animations.
Le présent rapport est composé de trois parties.
La deuxième partie contient le listing de tous les programmes des quatre ateliers
y compris les solutions des exercices.
Toutes les animations traitées dans le présent rapport sont dans le plan. Les
animations en 3D feront l’objet de nos prochains travaux.
Note : tous les programmes contenus dans ce rapport ont été testés uniquement
sur Maple 6 et Maple 8 et pas sur les autres versions.
2
Table des matières
Atelier 1 : les dessins avec Maple …………………………………….. 4
3
Atelier1 : les dessins avec Maple
Objectifs :
Initiation au dessin avec Maple.
Dessiner un compas avec Maple.
Dessiner une bicyclette avec Maple.
Exercice1 :
1- Exécuter la commande plot([[0,0],[1,1],[0,1]]);
2- Tracer un rectangle de sommets (0,0), (0,1), (1,0),(1,1).
3- Tracer un triangle équilatéral.
Dessiner un compas
Pour tracer un compas symétrique qui
modéliserait les deux pieds d’un bipède, on a
deux façons de faire:
1. définir un seul dessin:
plot([[x,y],[z,w],[t,y]]);
2. superposer deux dessins:
pied1:= plot([[x,y],[z,w]]):
pied2:=plot([[z,w],[t,y]]):
display(pied1,pied2);
4
Comment tracer un cercle sous Maple ?
Pour tracer un cercle on fait appel à la librairie
> with(plottools):
> c := circle([xc,yc], R); # xc et yc: les coordonnées du centre de
cercle et R le rayon
> display(c); # visualiser le cercle.
Exemple
> with(plottools):
c := circle([1,1], 1, color=green):
display(c);
Exercice2:
1- Dessiner deux cercles de rayon 1 et de centres respectifs (0,0) et (0,4).
2- Chercher sur le help la fonctionnalité de la commande « thickness »
3- Donner aux deux roues une « thickness=5 » et une couleur noir.
Exercice 3:
Dessiner un système {ressort + amortisseur} au bout duquel est attaché un bloc rectangulaire
(une masse).
5
Atelier2 : Résolution des EDOs avec Maple
Objectifs :
Introduction à la résolution des équations différentielles ordinaires avec
Maple.
Traçage des courbes.
6
fonction de y(t)). Le troisième argument donne l’intervalle des valeurs choisies
pour t. Les autres arguments sont optionnels.
>figure1:=odeplot(solution,[t,y(t)],0..70,numpoints=100,color=b
lue):display(figure1);
On veut tracer sur la même figure la solution y(t) et sa dérivée en fonction du
temps:
>figure2:=odeplot(solution,[[t,y(t),color=green],[t,diff(y(t),t
),color=blue]],0..70): display(figure2);
On peut tracer les deux figures séparément et les regrouper dans la commande
display.
Exercice1 :
4- Résoudre numériquement l’EDO de Duffing y 0.2 y y 0.1y 3 cos(t )
5- Résoudre numériquement l’EDO d’un pendule inversé :
y 0.2 y sin( y) 0
6- Résoudre numériquement l’EDO d’un pendule simple :
y 0.2 y sin( y) 0
7- Comparer les solutions des deux types de pendules.
7
> odeplot(solution,[t,x(t)],0..70);
Une autre façon de faire est d’utiliser DEplot3d (voir le help de Maple). On
redéfinie le système de Lorenz pour se conformer à l’écriture de DEplot3d :
lorenz:={Eq1,Eq2,Eq3}:
>DEplot3d(lorenz,{x(t),y(t),z(t)},t=120..180,[[x(0)=5,y(0)=5,z(
0)=5],[x(0)=5.0001,y(0)=5,z(0)=5]],scene=[x(t),y(t),z(t)],step
size=0.01);
Exercice2
Soit l’équation de Rossler suivante
x y z
y x a y avec a=0.2, b=0.2, c=5.7
z b z ( x c)
Résoudre ce système d’EDOs pour les conditions initiales suivantes :
x(0) y(0) z(0) 0.0001 .
8
Atelier3 : Introduction à l’animation avec Maple
Objectifs :
Introduction à l’animation des résultats des EDOs.
Introduction à l’animation des modèles physiques.
9
d’obtenir les portrait de phase via l’instruction prédéfinie phaseportrait. Le
portrait de phase d’un pendule simple s’obtient comme suit :
> restart:with(DEtools):
> phaseportrait([D(x)(t)=y(t),D(y)(t)=-sin(x(t))],[x(t),y(t)],
t=-3.5..3.5,[[x(0)=0,y(0)=2],[x(0)=0,y(0)=-2],[x(0)=2*Pi,y(0)=2],
[x(0)=2*Pi,y(0)=-2],[x(0)=-2*Pi,y(0)=2],[x(0)=-2*Pi,y(0)=-2],
[x(0)=2*Pi,y(0)=1],[x(0)=2*Pi,y(0)=-1],[x(0)=-2*Pi,y(0)=1],
[x(0)=-2*Pi,y(0)=-1],[x(0)=0,y(0)=1],[x(0)=0,y(0)=-1],[x(0)=0,y(0)=3],
[x(0)=0,y(0)=-3]],stepsize=0.05,linecolor=blue);
Si on veut visualiser les courbes l’une après l’autre sous forme d’une animation:
> display(Q, insequence=true);
10
Exercices
1. Animer une roue qui roule sans glissement avec une vitesse constante.
2. Animer le modèle de la bicyclette dans le cas d’un mouvement suivant une
direction fixe.
11
Atelier4 : Exportation des données et des animations
de Maple
Objectifs :
Exportation des données de Maple.
Exportation des animations de Maple..
Exemples
1. > for i to 3 do
writedata(terminal,[[I,evalf(exp(i)),cos(i*Pi)]],float)
end do:
2. > restart:
> A:=array([[3,-2.5,-1.0],[9.9e-1,-3.9,5.2],[-1,3.0,2.0]]):
> writedata("data.dat",A,float);
3. Ecriture des Solutions de l’EDO d’un pendule simple dans un fichier
“pendule.dat”:
> restart: with(DEtools):
> l:=10: g:=10: # paramètres du pendule
> CI:={y(0)=-3.,D(y)(0)=0}: # conditions initiales
> ODE:=diff(y(t),t$2)+(g/l)*sin(y(t))=0: # EDO d'un pendule simple
> solution:=dsolve({ODE} union CI,y(t),type=numeric): # solution
de l'EDO
> solution(1);
> for j from 0 by 0.1 to 30 do
a:=rhs(solution(j)[2]): # y(t)
b:=rhs(solution(j)[3]): # la vitesse diff(y(t),t)
writedata[APPEND]("pendule.dat",[[j,a,b]],float): # écrire les
solutions de l'EDO dans le fichier "pendule.dat" dans le fichier en cours.
end do:
12
Pour savoir le répertoire courant ou actif, on écrit currentdir();
Il est conseillé de sauvegarder le programme dans un répertoire autre que celui
donné par défaut.
13
Solution de l’Atelier1
© Faouzi Lakrad & Adil Boutaiyeb
-mercredi 31 janvier 2007-
14
> L4:=plot([[0.75,2],[3,2]],color=blue,thickness=4):
> L5:=plot([[1.5,0],[3.125,1.75]],color=blue,thickness=4):
> L6:=plot([[4,0],[2.75,2.5]],color=blue,thickness=4):
> L7:=plot([[2.75,2.5],[2.5,2.35]],color=blue,thickness=4):
> L8:=plot([[0.5,2.25],[1,2.25]],color=blue,thickness=4):
> L9:=plot([[0,0],[0,1]],color=green,thickness=3):
> L10:=plot([[0,0],[-cos(1/6*Pi),-
sin(1/6*Pi)]],color=green,thickness=3):
> L11:=plot([[0,0],[cos(1/6*Pi),-
sin(1/6*Pi)]],color=green,thickness=3):
> L12:=plot([[4,0],[4,1]],color=green,thickness=3):
> L13:=plot([[4,0],[4-cos(1/6*Pi),-
0.5]],color=green,thickness=3):
> L14:=plot([[4,0],[4+cos(1/6*Pi),-
0.5]],color=green,thickness=3):
>display(roue1,roue2,c,L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11,L12,L
13,L14);
Dessin d'un système {ressort + amortisseur} au bout
duquel est attaché un bloc rectangulaire:
> with(plottools):
> l1:=plot([[0,0],[0,5]],color=black,thickness=5):
> l2:=plot([[0,2],[3,2]],color=blue,thickness=4):
> l3:=plot([[3,1.5],[3,2.5]],color=blue,thickness=4):
> l4:=plot([[2.75,2.75],[3.5,2.75]],color=blue,thickness=4):
> l5:=plot([[2.75,1.25],[3.5,1.25]],color=blue,thickness=4):
> l6:=plot([[3.5,2.75],[3.5,1.25]],color=blue,thickness=4):
> l7:=plot([[3.5,2],[10.5,2]],color=blue,thickness=4):
>l8:=plot([[0,4],[2.5,4],[3,5],[4,3],[5,5],[6,3],[7,5],[8,3],[9
,5],[10,3],[10.5,4]],color=red,thickness=4):
>l9:=plot([[10.5,1],[10.5,5.5],[16,5.5],[16,1],[10.5,1]],color=
black,thickness=4):
> c1:=circle([11.5,0.5],0.5,color=green,thickness=3):
> c2:=circle([15,0.5],0.5,color=green,thickness=3):
> display(l1,l2,l3,l4,l5,l6,l7,l8,l9,c1,c2);
15
Solution de l’atelier 2
© Faouzi Lakrad & Adil Boutaiyeb
-Vendredi 02 Fevrier 2007-
16
Pendule inversé
> restart:
> with(plots):
> a:=0.2: b:=-1:
> eq2:=diff(y(t),t$2)+a*diff(y(t),t)+b*sin(y(t))=0;
> CI:={y(0)=0,D(y)(0)=0.1};
> sol2:=dsolve({eq2} union CI,y(t),numeric);
>fig2:=odeplot(sol2,[y(t),diff(y(t),t)],0..100,numpoints=500,co
lor=red): display(fig2);
Système de Lorenz
> restart: with(DEtools): with(plots):
> sigma:=10: beta:=8/3: rho:=35:
> Eq1:=diff(x(t),t)=sigma*(y(t)-x(t)):
> Eq2:=diff(y(t),t)=rho*x(t)-y(t)-x(t)*z(t):
> Eq3:=diff(z(t),t)=x(t)*y(t)-beta*z(t):
> lorenz:={Eq1,Eq2,Eq3,x(0)=5,y(0)=5,z(0)=5};
> solution:=dsolve(lorenz,{x(t),y(t),z(t)},type=numeric);
> solution(10);
> odeplot(solution,[t,x(t)],0..70);
> lorenz:={Eq1,Eq2,Eq3}:
>DEplot3d(lorenz,{x(t),y(t),z(t)},t=120..180,[[x(0)=5,y(0)=5,z(
0)=5],[x(0)=5.0001,y(0)=5,z(0)=5]],scene=[x(t),y(t),z(t)],step
size=0.01);
Système de Rossler
> restart: with(DEtools): with(plots):
> a:=0.2: b:=0.2: c:=5.7:
> eq1:=diff(x(t),t)=-y(t)-z(t):
> eq2:=diff(y(t),t)=x(t)+a*y(t):
> eq3:=diff(z(t),t)=b+z(t)*(x(t)-c):
> rossler:={eq1,eq2,eq3,x(0)=0.0001,y(0)=0.0001,z(0)=0.0001};
> sol:=dsolve(rossler,{x(t),y(t),z(t)},type=numeric);
> rossler:={eq1,eq2,eq3}:
>DEplot3d(rossler,{x(t),y(t),z(t)},t=120..180,[[x(0)=0.0001,y(0
)=0.0001,z(0)=0.0001],[x(0)=1.0001,y(0)=0,z(0)=0]],scene=[x(t)
,y(t),z(t)],stepsize=0.01);
17
Solution de l’atelier 3
©Faouzi Lakrad & Adil Boutaiyeb
-lundi 05 Fevrier 2007-
18
> phaseportrait([D(x)(t)=y(t),D(y)(t)=-
sin(x(t))],[x(t),y(t)],t=-
3.5..3.5,[[x(0)=0,y(0)=2],[x(0)=0,y(0)=-
2],[x(0)=2*Pi,y(0)=2],[x(0)=2*Pi,y(0)=-2],[x(0)=-
2*Pi,y(0)=2],[x(0)=-2*Pi,y(0)=-
2],[x(0)=2*Pi,y(0)=1],[x(0)=2*Pi,y(0)=-1],[x(0)=-
2*Pi,y(0)=1],[x(0)=-2*Pi,y(0)=-
1],[x(0)=0,y(0)=1],[x(0)=0,y(0)=-
1],[x(0)=0,y(0)=3],[x(0)=0,y(0)=-
3]],stepsize=0.05,linecolor=blue);
Animation d'une roue qui roule sans glissement avec une
vitesse constante:
> restart: with(plots): with(plottools):
> R:=1:
> Q:=[]:
> for j from 0 by 0.1 to 10 do
roue:=circle([j,0],R,color=blue,thickness=5):
rayon1:=plot([[j,0],[j-R*sin(j/R),-R*cos(j/R)]],thickness=5):
rayon2:=plot([[j,0],[j-R*sin((j/R)+(2*Pi/3)),-
R*cos((j/R)+(2*Pi/3))]],thickness=5):
rayon3:=plot([[j,0],[j-R*sin((j/R)+(4*Pi/3)),-
R*cos((j/R)+(4*Pi/3))]],thickness=5):
systeme:=display(roue,rayon1,rayon2,rayon3):
Q:=[op(Q),systeme]:
end do:
> display(Q, insequence=true);
Animation d'une bicyclette:
> restart: with(plots): with(plottools):
> R:=1:
> Q:=[]:
> for j from 0 by 0.1 to 10 do
> roue1:=circle([j,0],R,color=black,thickness=5):
> roue2:=circle([4+j,0],R,color=black,thickness=5):
> c:=circle([1.5+j,0],0.25,color=red,thickness=5):
> L1:=plot([[j,0],[0.75+j,2]],color=blue,thickness=4):
> L2:=plot([[j,0],[1.5+j,0]],color=blue,thickness=4):
> L3:=plot([[1.5+j,0],[0.625+j,2.25]],color=blue,thickness=4):
> L4:=plot([[0.75+j,2],[3+j,2]],color=blue,thickness=4):
> L5:=plot([[1.5+j,0],[3.125+j,1.75]],color=blue,thickness=4):
> L6:=plot([[4+j,0],[2.75+j,2.5]],color=blue,thickness=4):
> L7:=plot([[2.75+j,2.5],[2.5+j,2.35]],color=blue,thickness=4):
> L8:=plot([[0.5+j,2.25],[1+j,2.25]],color=blue,thickness=4):
> rayon1:=plot([[j,0],[j-R*sin(j/R),-
R*cos(j/R)]],color=green,thickness=5):
rayon2:=plot([[j,0],[j-R*sin((j/R)+(2*Pi/3)),-
R*cos((j/R)+(2*Pi/3))]],color=green,thickness=5):
19
rayon3:=plot([[j,0],[j-R*sin((j/R)+(4*Pi/3)),-
R*cos((j/R)+(4*Pi/3))]],color=green,thickness=5):
rayon4:=plot([[4+j,0],[4+j-R*sin(j/R),-
R*cos(j/R)]],color=green,thickness=5):
rayon5:=plot([[4+j,0],[4+j-R*sin((j/R)+(2*Pi/3)),-
R*cos((j/R)+(2*Pi/3))]],color=green,thickness=5):
rayon6:=plot([[4+j,0],[4+j-R*sin((j/R)+(4*Pi/3)),-
R*cos((j/R)+(4*Pi/3))]],color=green,thickness=5):
bicyclette:=display(roue1,roue2,c,L1,L2,L3,L4,L5,L6,L7,L8,rayo
n1,rayon2,rayon3,rayon4,rayon5,rayon6):
> Q:=[op(Q),bicyclette]:
> end do:
> display(Q, insequence=true);
20
Solution de l’atelier4
©Faouzi Lakrad & Adil Boutaiyeb
-Mardi 06 Fevrier 2007-
21
Projet 1 : Pendule Simple
Ce projet consiste à résoudre numériquement l’EDO régissant le mouvement
d’un pendule simple. Les solutions (temps, angle, vitesse angulaire) de la
résolution numérique sont stockées dans le fichier « pendule.dat ». Par la suite,
dans la même animation on regroupe l’animation physique du pendule, l’angle
en fonction du temps, le plan de phase ainsi que l’affichage numérique de la
variation de l’angle.
22
Projet 2 : le Système Masse-Ressort-
Amortisseur
>systeme:=display(l1,l2,l3,l4,l5,l6,l7,ressort,rectangle1,c1,c2
,figure,mass1,rectangle_ref,phase,mass2,figure_v,mass3):
> Q:=[op(Q),systeme]:
> end do:
> display(Q, insequence=true);
23