Function EQRoot:real;
var
a,b,c,d:real;
begin
d:=0.1;
repeat
b:=d;
a:=-b;
if G(a)*G(b)>=0
then writeln('[',a:1:1,';',b:1:1,'] f(a)*f(b)>0')
Else writeln('[',a:1:1,';',b:1:1,'] f(a)*f(b)<0');
if G(a)*G(b)>=0
then writeln(txt,'[',a:1:1,';',b:1:1,'] f(a)*f(b)>0')
Else writeln(txt,'[',a:1:1,';',b:1:1,'] f(a)*f(b)<0');
d:=d+h
until G(a)*G(b)<=0;
writeln('mojno primenit metod polovinnogo deleniya');
writeln(txt,'mojno primenit metod polovinnogo deleniya');
Writeln('tochnost rascheta e=0.0001');
Writeln(txt,'tochnost rascheta e=0.0001');
Repeat
writeln('[',a:1:5,';',b:1:5,']');
writeln(txt,'[',a:1:5,';',b:1:5,']');
c:=(a+b)/2;
if G(a)*G(c)<0 then b:=c else a:=c;
Until b-a<Eps;
EQRoot:=c;
end;
ну вот как то так. Хотя после ваших слов действительно подумал, а на кой мне в отрицательную область лезть, а:=0 а b уже изменять с определенным шагом пока не получу нужный интервал.