%% verbatimtex %&latex \documentclass{article} \usepackage[frenchb]{babel} \usepackage[latin1]{inputenc} \usepackage{amsmath,amssymb} \begin{document} etex prologues:=2; defaultfont:="cmmi10"; input geometrie31; input constantes; %papier millimétré vardef millimetre suffix co = color coul; numeric hauteur, largeur ; path p[]; %ligne horizontale p1:=(x.so*cm, 0)--(x.ne*cm, 0); %ligne verticale p2:=(0,y.so*cm)--(0,y.ne*cm); %choix de la couleur if str co ="" : coul:= orange else : coul:=co fi; %grille millimétrique %christ pickup pencircle scaled 0.2; %lignes horizontales %christ for i:=y.so step 0.1 until y.ne : %christ draw p1 shifted (0,i*cm) withcolor coul; %christ endfor; %christ %lignes verticales %christ for i:=x.so step 0.1 until x.ne : %christ draw p2 shifted (i*cm,0) withcolor coul; %christ endfor; %grille demi-centimétrique pickup pencircle scaled 0.5; %lignes horizontales for i:=y.so step 0.5 until y.ne: draw p1 shifted (0,i*cm) withcolor coul; endfor; %lignes verticales for i:=x.so step 0.5 until x.ne : draw p2 shifted (i*cm,0) withcolor coul; endfor; %grille centimétrique pickup pencircle scaled 0.5;%christ 0.7 %lignes horizontales for i:=y.so step 1 until y.ne: draw p1 shifted (0,i*cm) withcolor coul; endfor; %lignes verticales for i:=x.so step 1 until x.ne : draw p2 shifted (i*cm,0) withcolor coul; endfor; %grille penta-centimétrique %lignes horizontales pickup pencircle scaled 0.5;%christ 1 for i:=0 step -5 until y.so : draw p1 shifted (0,i*cm) withcolor coul; endfor; for i:=0 step 5 until y.ne : draw p1 shifted (0,i*cm) withcolor coul; endfor; %lignesverticales for i:=0 step -5 until x.so : draw p2 shifted (i*cm,0) withcolor coul; endfor; for i:=0 step 5 until x.ne : draw p2 shifted (i*cm,0) withcolor coul; endfor; enddef; vardef origine(expr p)= x.origine:=xpart(p); y.origine:=ypart(p); enddef; %graduation de l 'axe des x vardef graduationx suffix inc = dotlabel.llft(btex $O$ etex,(x.origine*cm,y.origine*cm)); label.top(btex \begin{minipage}{2cm} \begin{center} Valeurs\\ de $x$ \end{center} \end{minipage} etex,(x.ne*cm-0.5cm,y.origine*cm));%Christ llft, pas de -0.5cm dotlabel.bot(btex 1 etex,z.origine*cm+(1*x.u,0)); pickup pencircle scaled 1.5;%Christ 0.5 drawarrow (x.so*cm,y.origine*cm)--(x.ne*cm,y.origine*cm); %label.lrt( btex $x'$ etex,(x.so*cm,y.origine*cm)); enddef; %graduation de l 'axe des y vardef graduationy suffix inc = label.lrt( btex Valeurs de ${\cal A}(x)$ etex,(x.origine*cm,y.ne*cm)); dotlabel.lft(btex 1 etex,z.origine*cm+(0,1*y.u)); pickup pencircle scaled 1.5;%Christ 0.5 drawarrow (x.origine*cm,y.so*cm)--(x.origine*cm,y.ne*cm); %label.urt( btex $y'$ etex,(x.origine*cm,y.so*cm)) ; enddef; %Calcul des coordonnées des points vardef courbe[](expr a,b,nb) suffix co = for i:=0 upto nb : x@[i]:=(a+i*(b-a)/nb); x:=x@[i]; ordonnee@(i); % calcul de l'ordonnée du point d'indice i endfor ; Cb@:= (x@.0*x.u,y@.0*y.u) for i:=1 upto nb : ..(x@[i]*x.u,y@[i]*y.u) endfor; Cb@:=Cb@ shifted (z.origine*cm); if str co <>"" : draw Cb@ withcolor co fi; clip currentpicture to z.so*cm--(x.ne,y.so)*cm--z.ne*cm--(x.so,y.ne)*cm--cycle; enddef; vardef param[](expr a,b,nb) suffix co= for i:=0 upto nb : t@[i]:= (a+i*(b-a)/nb) ; coordonnees@(i); endfor; Cb@:= (x@.0*x.u,y@.0*y.u) for i:=1 upto nb : ..(x@[i]*x.u,y@[i]*y.u) endfor; Cb@:=Cb@ shifted (z.origine*cm); if str co <>"" : draw Cb@ withcolor co fi; clip currentpicture to z.so*cm--(x.ne,y.so)*cm--z.ne*cm--(x.so,y.ne)*cm--cycle; enddef; vardef polaire[](expr a,b,nb) suffix co= for i:=0 upto nb : t@[i]:= (a+i*(b-a)/nb) ; coordpolaire@(i); endfor; Cb@:= (x@.0*x.u,y@.0*y.u) for i:=1 upto nb : ..(x@[i]*x.u,y@[i]*y.u) endfor; Cb@:=Cb@ shifted (z.origine*cm); if str co <>"" : draw Cb@ withcolor co fi; clip currentpicture to z.so*cm--(x.ne,y.so)*cm--z.ne*cm--(x.so,y.ne)*cm--cycle; enddef; %etiquettage de la cour Cb@# vardef labelise@#(expr a)(suffix pos) suffix co = numeric t; pair pt,tangent; color coul; if str co ="" : coul:= noir else : coul:=co fi; if str pos ="" : t:= 0.5*length Cb@# else : t:=pos*length Cb@# fi; pt:= point t of Cb@#; tangent:= unitvector(direction t of Cb@#); label(a rotated angle(tangent),pt+2mm*(tangent rotated 90)) withcolor coul; enddef; %Dessin de la tangente en cartésien vardef tangente[](expr abscisse)= numeric t; pair pt,tangent; t=(((abscisse*x.u+x.origine*cm)-xpart(point 0 of Cb@))/(xpart(point (length Cb@) of Cb@)-xpart(point 0 of Cb@)))*length Cb@; pt:=point t of Cb@; tangent:=unitvector(direction t of Cb@); drawdblarrow (pt shifted (-25*tangent))--(pt shifted (25*tangent)); draw cercle(pt,0.05*u); enddef; vardef sin(expr t) = sind(c*t) enddef; vardef cos(expr t) = cosd(c*t) enddef; vardef exp(expr t) = e**t enddef; vardef papiermillimetre(expr m,n,p,q,r)(suffix s,t,col)= origine(m); x.u:=n*cm; y.u:=p*cm; z.so=q; z.ne=r; millimetre col; graduationx s; graduationy t; enddef; %Tracé vardef ordonnee[](expr i) = numeric x; x:=x@[i]; y@[i]:= % définition des fonctions dont on veut obtenir la courbe représentative. if @=1: x elseif @=2 : (x**2)+2*x-1 elseif @=3 : x**3-2*x**2+x+1 elseif @=4 : x**4 elseif @=5 : 24-0.24*(x**2) elseif @=6 : x**5 elseif @=7 : x**6 elseif @=8 : 0.2/x elseif @=9 : 1/(10*x) elseif @=10: exp(x) fi enddef; % définition des courbes en paramétrique. vardef coordonnees[](expr i) = numeric t; t:=t@[i]; z@[i] = if @=11: ( 5*cos(t) , 5*sin(t)) elseif @=12: (t**4,t) elseif @=13 :(t**3, t) elseif @=14 :( t**6, t) elseif @=15 : ( t**5, t) elseif @=16 :( t**7, t) elseif @=17 : (exp(t), t) elseif @=18 :((cos(t))**3 ,(sin(t))**3 ) elseif @=19 :( , ) elseif @=20 :( , ) fi enddef ; %Définition des courbes en polaire. vardef coordpolaire[](expr i)= numeric theta; theta:=t@[i]; z@[i]= if @=21: ((1+cos(theta))*cos(theta),(1+cos(theta))*sin(theta))%Cardioïde elseif @22: ((cos(theta))**2,cos(theta)*sin(theta)) fi enddef; beginfig(1); %papiermillimetre((6,6),2,2,(0,0),(12,12),1,1,orange); papiermillimetre((1,0.5),1,0.5,(0,0),(12,13),1,1,bleu); pickup pencircle scaled 0.5; courbe5(0,10,100)noir; %param17(0,5,100)noir; %polaire21(0,2*pi,100)violet; %tangente5(0); %tangente5(1); endfig; end