- program dicotomie;
- var y:integer;
- function f(var x:real):real;
-
- begin
- if y=1 then f:=sin(x)-1/2
- else begin if y=2 then f:=exp(x)-2
- else begin if y=3 then f:=sqr(x)-2 end; end;
- end;
- procedure verif;
- var a,b,m,ep,va:real;
- i,n:integer;
- r,c:char;
- begin repeat
- writeln('choisir une fonction parmis les trois');
- writeln('f[x]=sin(x)-1/2.....[1]');
- writeln('f[x]=exp(x)-2.......[2] ');
- writeln('f[x]=x(puiss)2-2....[3] ');
- write('entrer le nombre [i] de 1..3 i=');
- readln(y);
- writeln('pour calculer la racine de la fonction f[x] donne l’intervalle [a,b]’) ;
- write(' donner a=');
- readln(a);
- write(' donner b=');
- readln(b);begin
- if a>b then
- repeat writeln('*****************REMARQUE**************');
- writeln(' *** il faut que a<b *** ');
- write('S.V.P entrer un autre intervalle ou invercer les valeurs a=');
- readln(a);
- write(' b=');
- readln(b);
- until a<b;
- begin
- if f(a)*f(b)>0 then
- repeat
- writeln('*******************REMARQUE************************');
- writeln(' *** la fonction ne admet aucun zero dans se intervalle *** ');
- writeln(' ');
- write('S.V.P entrer un autre intervalle a=');
- readln(a);
- write(' b=');
- readln(b);
- until f(a)*f(b)<=0;
- writeln('la fonctin f admet au moins un zero dans [',a,';',b,']');
- write(' ');
- write('entrer le nombre d"iteration n=');
- readln(n);
- m:=(a+b)/2; if f(m)=0 then ep:=m
- else
- begin for i:=1 to n-1 do
- begin if f(m)*f(a)>0 then begin a:=m; m:=(b+m)/2; end
- else m:=(a+m)/2; b:=2*m-a;
- end;
- end; i:=i+1;
- ep:=m;
- writeln(' la RACINE pour l"iteration ',n,' est epsilon=',ep);
- write('voulez vous calculerf[',ep,'] O/N?');
- readln(c); if c='O' then writeln('f[',ep,']=',f(ep));
- write('voulez vous continuer O/N? ');
- readln(r); end; end;
- until r='N';
-
-
- end;
-
- begin
- writeln(' DICOTOMIE ');
- writeln(' ');
-
- writeln(' ');
- verif;
-
- end.
program dicotomie;
var y:integer;
function f(var x:real):real;
begin
if y=1 then f:=sin(x)-1/2
else begin if y=2 then f:=exp(x)-2
else begin if y=3 then f:=sqr(x)-2 end; end;
end;
procedure verif;
var a,b,m,ep,va:real;
i,n:integer;
r,c:char;
begin repeat
writeln('choisir une fonction parmis les trois');
writeln('f[x]=sin(x)-1/2.....[1]');
writeln('f[x]=exp(x)-2.......[2] ');
writeln('f[x]=x(puiss)2-2....[3] ');
write('entrer le nombre [i] de 1..3 i=');
readln(y);
writeln('pour calculer la racine de la fonction f[x] donne l’intervalle [a,b]’) ;
write(' donner a=');
readln(a);
write(' donner b=');
readln(b);begin
if a>b then
repeat writeln('*****************REMARQUE**************');
writeln(' *** il faut que a<b *** ');
write('S.V.P entrer un autre intervalle ou invercer les valeurs a=');
readln(a);
write(' b=');
readln(b);
until a<b;
begin
if f(a)*f(b)>0 then
repeat
writeln('*******************REMARQUE************************');
writeln(' *** la fonction ne admet aucun zero dans se intervalle *** ');
writeln(' ');
write('S.V.P entrer un autre intervalle a=');
readln(a);
write(' b=');
readln(b);
until f(a)*f(b)<=0;
writeln('la fonctin f admet au moins un zero dans [',a,';',b,']');
write(' ');
write('entrer le nombre d"iteration n=');
readln(n);
m:=(a+b)/2; if f(m)=0 then ep:=m
else
begin for i:=1 to n-1 do
begin if f(m)*f(a)>0 then begin a:=m; m:=(b+m)/2; end
else m:=(a+m)/2; b:=2*m-a;
end;
end; i:=i+1;
ep:=m;
writeln(' la RACINE pour l"iteration ',n,' est epsilon=',ep);
write('voulez vous calculerf[',ep,'] O/N?');
readln(c); if c='O' then writeln('f[',ep,']=',f(ep));
write('voulez vous continuer O/N? ');
readln(r); end; end;
until r='N';
end;
begin
writeln(' DICOTOMIE ');
writeln(' ');
writeln(' ');
verif;
end.