uses crt;
function F(x:real):real;
begin F:=exp(x)+sqrt(1+exp(2*x))-2;
end;
var a,b,c,x,e:real;
ai,bi,x1,x2,f1,f2:real;
n,i:longint;
begin clrscr; writeln('F(x)=exp(x)+sqrt(1+exp(2*x))-2');
write('Начало интервала (-1): ');readln(a);
ai:=a;
repeat write('Конец интервал, b>a (2): ');readln(b);
until b>a;
bi:=b;
repeat write('Точность (0.00001): ');readln(e);
until (e>0)and(e<1);
if F(a)=0 then begin writeln('x=a=',a:9:6);
readln;
exit;
end;
if F(b)=0 then begin writeln('x=b=',b:9:6);
readln;
exit;
end;
if F(A)*F(B)>0 then begin writeLn('Границы интервала заданы некорректно!');
readln;
exit;
end;
{метод деления отрезка пополам(дихотомии)}
repeat c:=(a+b)/2;
if F(a)*F(c)<=0 then b:=c
else a:=c;
until b-a<e;
x:=(a+b)/2;
writeln('Метод деления отрезка пополам:');
writeln('x=',x:9:6);
{Метод итераций} n:=round((bi-ai)/e);
x1:=ai; f1:=F(x1);
for i:=1 to n do begin x2:=x1+(bi-ai)/n;
f2:=F(x2);
if f1*f2 <= 0 then begin writeln('Метод итераций:');
writeln('x=',(x2 + x1)/2:9:6);
end;
x1:=x2; f1:=f2;
end;
readln end.