Если возможно, подскажите почему здесь происходит деление на ноль, и можно ли это исправить, не меняя интервал [0;2]
uses crt;
var x,a,b,e: real;
function f1(x: real): real;
begin
f1:=(x-2)*(x-2)*2*x-1;
end;
function f2(x:real): real;
begin
f2:=6*x*x-16*x+8;
end;
begin
clrscr;
a:=0;
b:=2;
e:=0.001;
if f1(a)*f2(a)>0 then x:=a
else x:=b;
while abs(f1(x))>e do
begin
x:=x-f1(x)/f2(x);
end;
writeln ('x=',x,' f(x)=',f1(x));
end.