restart;with(plots):secu:=1000:secu une valeur de s\351curit\351 pour \351viter les boucles trop longuesExercice 1Question a)Dichotomie:=proc(f,a,b,epsilon)
local aa,bb,compteur,milieu;
aa:=a;bb:=b;
avant d'amorcer la boucle assurons-nous que nous sommes dans un cas particulier
if is(f(a)*f(b)>0) then return([infinity,infinity]); si f(a) et f(b) sont de m\352me signe on renvoie une solution erronn\351e
elif is(f(a)=0) then return([0,a]); si f(a)=0 alors a est solution
elif is(f(b)=0) then return([0,b]); si f(b)=0 alors b est solution
fi;
compteur:=0;
while is(abs(bb-aa)>epsilon) and is(compteur<secu) do
compteur:=compteur+1;milieu:=(aa+bb)/2;
if is(f(milieu)=0) then aa:=bb au cas o\371 milieu soit une solution on sort de la boucle en posant [an,b_n] de diametre nul
elif is(f(milieu)*f(bb)<0) then aa:=milieu;
else bb:=milieu; fi;
od;
[compteur,milieu];
end:
Question b)Premier exemplef:=x->exp(-x/2)-1;a:=-4;b:=4;epsilon:=10^(-8);sol:=Dichotomie(f,a,b,epsilon);solution propos\351 par la proc\351dure Dichotomie'f'(sol[2])=evalf(f(sol[2])); valeur de f en ce pointDeuxi\350me exemplef:=x->x^3-4*x+1;a:=-2.5;b:=-2;epsilon:=10^(-8);sol:=Dichotomie(f,a,b,epsilon);solution propos\351 par la proc\351dure Dichotomie'f'(sol[2])=evalf(f(sol[2])); valeur de f en ce pointTroisi\350me exemplef:=x->x^3-4*x+1;a:=0;b:=0.5;epsilon:=10^(-8);sol:=Dichotomie(f,a,b,epsilon);solution propos\351 par la proc\351dure Dichotomie'f'(sol[2])=evalf(f(sol[2])); valeur de f en ce pointQuatri\350me exemplef:=x->x^3-4*x+1;a:=1.5;b:=2;epsilon:=10^(-8);sol:=Dichotomie(f,a,b,epsilon);solution propos\351 par la proc\351dure Dichotomie'f'(sol[2])=evalf(f(sol[2])); valeur de f en ce pointIllustration GraphiqueSDichotomie:=proc(f,a,b,epsilon)
local aa,bb,compteur,milieu,suite_m;
aa:=a;bb:=b;
if is(f(a)*f(b)>0) then return([infinity,infinity]);
elif is(f(a)=0) then return([0,a]);
elif is(f(b)=0) then return([0,b]);
fi;
compteur:=1;suite_m:=NULL;
milieu:=(aa+bb)/2;suite_m:=suite_m,milieu;
while is(abs(bb-aa)>epsilon) and compteur<secu do
if is(f(milieu)*f(bb)<0) then aa:=milieu;
else bb:=milieu; fi;
compteur:=compteur+1;milieu:=(aa+bb)/2;suite_m:=suite_m,milieu;
od;
[compteur,suite_m];
end:Graphique:=proc(f,a,b,N,s)
local i,segments,courbe,points;
segments:=NULL;points:=NULL;
for i from 1 to N do
segments:=segments,plot([[s[i],0],[s[i],f(s[i])]],color=blue,thickness=2);
points:=points,plot([[s[i],0],[s[i],0]],color=black,thickness=2,style=point);
od;
courbe:=plot(f,a..b,color=red,thickness=3);
display(courbe,points,segments);
end:f:=x->x^3-4*x+1;sol:=SDichotomie(f,a,b,epsilon):N:=sol[1]:s:=sol[2..N+1]:Graphique(f,a,b,N,s);sur l'axe des abbscissdes apparaissent les points milieu xn de la suite de segments [an,bn] construits par dichotomie
la courbe est cell de fpoints:=seq([i,s[i]],i=1..N):plot([points],color=black,thickness=2,style=point);Les points trac\351s sont ceux de coordonn\351es (n,xn)