verbatimtex %&latex \documentclass{article} \usepackage{amsmath,amssymb} \begin{document} etex defaultfont:="cmmi8"; path Cb[]; numeric u,c,e,pi; u=1cm; pi=3.141592654; e=2.718281828; c=57.29578; % conversion d'un radian en degrés color rouge,vert,bleu,jaune,noir,blanc,orange,rose,violet,ciel,orangevif; rouge=(1,0,0); bleu=(0,0,1); noir=(0,0,0); blanc=(1,1,1); orange=(1, 0.5, 0); violet=(0.9, 0.1, 0.9); rose=(1,0.7,0.7); ciel=0.9*(0.25,1,1); orangevif=(1,0.25,0.1); vert=(1,1,1)-violet; jaune= (0.9,0.9,0.2); %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 pickup pencircle scaled 0.2; %lignes horizontales for i:=y.so step 0.1 until y.ne : draw p1 shifted (0,i*cm) withcolor coul; endfor; %lignes verticales for i:=x.so step 0.1 until x.ne : draw p2 shifted (i*cm,0) withcolor coul; 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.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 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; %graduation de l 'axe des x vardef graduationx suffix inc = x.ne:=x.ne+0.2; y.ne:=y.ne+0.2; label.llft( "O",(0,0)) ; label.rt( btex $x$ etex,(x.ne*cm,0)) ; pickup pencircle scaled 0.5; if str inc ="" : inc=1 fi; if inc<>0 : for i:=x.so*cm step inc*x.u until x.ne*cm : if abs(i)>0.09 : draw (i,-0.7*mm)--(i,0.7*mm); label.bot( format("%3g",decimal(i/x.u)),(i,0)) fi; endfor fi; x.so:=x.so-0.2; drawarrow (x.so*cm,0)--(x.ne*cm,0); label.lft( btex $x'$ etex,(x.so*cm,0)) ; enddef; %graduation de l 'axe des y vardef graduationy suffix inc = label.top( btex $y$ etex,(0,y.ne*cm)) ; pickup pencircle scaled 0.5; if str inc ="" : inc=1 fi; if inc<>0 : for i:=y.so*cm step inc*y.u until y.ne*cm: if abs(i)>0.09 : draw (-0.7*mm,i)--(0.7*mm,i); label.lft( format("%3g",decimal(i/y.u)) ,(0,i)) fi ; endfor fi; y.so:=y.so-0.2; drawarrow (0,y.so*cm)--(0,y.ne*cm); label.bot( btex $y'$ etex,(0,y.so*cm)) ; enddef; %découpage de la courbe ci-dessous selon les limites du graphique def limite = cutafter (z.so*cm--(x.ne,y.so)*cm--z.ne*cm--(x.so,y.ne)*cm--cycle) cutbefore (z.so*cm--(x.ne,y.so)*cm--z.ne*cm--(x.so,y.ne)*cm--cycle) enddef; %tracé de la courbe joignant les nb points (x.i,y.i) % x.i varie de a à b et y.i est calulé par la macro ordonnée@# 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@ limite; if str co <>"" : draw Cb@ withcolor co fi; 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@ limite; if str co <>"" : draw Cb@ withcolor co fi; enddef; %etiquettage de la courbe 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; vardef sin(expr t) = sind(c*t) enddef; vardef cos(expr t) = cosd(c*t) enddef; vardef exp(expr t) = e**t enddef; input graph; beginfig(1); %unité sur l'axe des abscisses x.u:=10cm; %unité sur l'axe des ordonnées y.u:=10cm; % coordonnées du coin inférieur gauche en cm z.so=(0,0); % coordonnées du coin supérieur droit en cm z.ne=(11,11); %papier millimétré de couleur @ , orange si vide, millimetre orange; %graduation de l'axe des abscisses de x.so à x.ne avec incrément 1 par défaut si suffixe @ vide % sinon @*x.u; si @=0 pas de graduation. graduationx 0.1 ; %graduation de l'axe des ordonnées de y.so à y.ne avec incrément 1 par défaut si suffixe @ vide % sinon @*y.u; si @=0 pas de graduation. graduationy 0.1 ; 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 elseif @=3 : x**3 elseif @=4 : x**4 elseif @=5 : sqrt(x) elseif @=6 : x**5 elseif @=7 : x**6 elseif @=8 : 0.2/x elseif @=9 : 1/(10*x) elseif @=10: 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 :( , ) elseif @=19 :( , ) elseif @=20 :( , ) fi enddef ; pickup pencircle scaled 0.4; courbe1(-0.1,1.4,100) bleu;labelise1(btex \footnotesize $y=x$ etex)(0.35)bleu ; courbe5(0.001,1.4,100) rouge; labelise5(btex \footnotesize $y=\sqrt{x}$ etex)(0.27)rouge ; courbe2(-0.3,1.4,100) rouge ;labelise2(btex \footnotesize $y=x^2$ etex)(0.47)rouge; courbe3(-0.3,1.4,100) vert; labelise3(btex \footnotesize $y=x^3$ etex)(0.58)vert; param13(-0.3,1.6,100) vert; labelise13(btex \footnotesize $y=\sqrt[3]{x}$ etex)(0.62)vert; courbe4(-0.3,1.6,100) ciel; labelise4(btex \footnotesize $y=x^4$ etex)(0.645)ciel; param12(-0.3,1.6,100) ciel; labelise12(btex \footnotesize $y=\sqrt[4]{x}$ etex)(0.68)ciel; courbe6(-0.3,1.6,100) violet; labelise6(btex \footnotesize $y=x^5$ etex)(0.705)violet; param15(-0.3,1.6,100) violet; labelise15(btex \footnotesize $y=\sqrt[5]{x}$ etex)(0.73)violet; courbe7(-0.3,1.6,100) noir; labelise7(btex \footnotesize $y=x^6$ etex)(0.75); param14(-0.3,1.6,100)noir ;labelise14(btex \footnotesize $y=\sqrt[6]{x}$ etex)(0.77); courbe9(0.02,1.6,100)rouge;labelise9(btex \footnotesize $ y=\dfrac{4}{100x} $ etex )(0.8)rouge; endfig; end