Bonjour
Merci pour toutes ces explications.
Je commence tout juste a découvrir la programmation et il me semble que j'ai trouvé un code pour ma dichotomie en pascal mais il ne me donne pas le résultat escompté (celui que je devrai trouver) à 1*10-6 prés voici le code :
program dichotomie;
var y:integer;
function f(var x:real):real;
begin
if y=1 then f:=(ln (x))/x+((x*x)-1) /2*(1/x) end;
procedure verif;
var a,b,m,ep,va:real;
i,n:integer;
r,c:char;
begin repeat
writeln('f[x]=ln(x)/x + ((x*x)-1)/2*(1/x)');
writeln('pour calculer la fonction f[x]=1 donnez l intervalle[a,b]') ;
write(' a=');
readln(a);
write(' b=');
readln(b);
begin
writeln('la fonctin f admet une solution dans [',a,';',b,']');
write(' ');
write('entrer le nombre d"iteration n=');
readln(n);
m:=(a+b)/2; if f(m)=1 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 valeur pour l"iteration ',n,' est epsilon=',ep);
write('voulez vous continuer O/N? ');
readln(r); end;
until r='N';
end;
begin
writeln(' DICHOTOMIE ');
writeln(' ');
writeln(' ');
verif;
end.
Si quelqu'un a une idée ....