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
|