%@AUTEUR:Guillaume Connan prologues:=2; input courbes; input geo; color vert_e, turquoise, orange, vert_fonce, rose, vert_mer, bleu_ciel, or, rouge_v,bleu_m,bleu,bleu_f; vert_e:=(0,0.790002,0.340007); turquoise:=(0.250999,0.878399,0.815699); orange:=(0.589999,0.269997,0.080004); vert_fonce:=(0,1.4*0.392193,0); rose:=(1.0, 0.752907, 0.796106); bleu_ciel:=(1.2*0.529405,1.2*0.807794,1);%.2*0.921598); or:=(1,0.843104,0); rouge_v:=(0.829997,0.099994,0.119999); bleu_m:=(0.7*0.529405,0.7*0.807794,0.7);%*0.921598); bleu_f:=(0.211762,0.3231176,0.3686392); bleu:=(0.529405,0.807794,1); %SERIE INTEGRALE vardef axes = drawarrow (ux*xmin,0) -- (ux*xmax,0); % axe des x drawarrow ((0,uy*ymin) -- (0,uy*ymax)) ; % axe des y label.rt(btex $x$ etex,(xmax*ux,0)); % label de l'axe des x label.urt(btex $y$ etex,(0,ymax*uy)); % label de l'axe des y enddef; beginfig(1); ux:=0.5cm; uy:=ux; xmin:=-0.5; xmax:=8; ymin:=-0.5; ymax:=6; %Axe axes; %Fonction, graphe vardef f(expr x) =7*((0.8)**x) enddef; vardef fx(expr x) =x enddef; vardef trace (suffix g)(expr a,b,inc) = save i; numeric i; for i=a step inc until b: (i*ux,f(i)*uy) .. endfor (b*ux,f(b)*uy) enddef; %Rectangles % une macro non parfaite pour obtenir le min de f sur un intervalle, % cela suppose qu'elle soit bien reguliere...... vardef minf(suffix fx,fy)(expr a,b) = save m,i; numeric m,i; m:=fy(a); for i=a step (b-a)/100 until b: if m>fy(i): m:=fy(i); fi; endfor; m enddef; %rectangle en dessous de la courbe colorié en bleu, utilise la macro precedente vardef trace_rectangles_min (suffix fx,fy)(expr a,b,inc) = save i; numeric i; for i=a step inc until b-inc: path p; numeric m; m:=minf(fx,fy,i,i+inc); p = (i*ux,0)--((i+inc)*ux,0)--((i+inc)*ux,m*uy)--(i*ux,m*uy)--cycle; fill p withcolor bleu_ciel; draw p; endfor; enddef; trace_rectangles_min(fx,f,1,xmax-1,0.75); draw trace(g,1,7.8,.1); label.rt(btex $y=f(x)$ etex,((xmax-.2)*ux,(f(xmax-.2))*uy)); endfig; end