Программа находит корень, но он независимо от точности всегда один и тот же. Подскажите плиз что не так!
Программа:
Код
Program Uravnenie;
label M1,M2;
var
xi,xi1,a,b,e1,e2,fa,fb,f2a,fxi,fxi1:real;
Begin
writeln;
write('Vvedite znachenie a=');
readln(a);
write('Vvedite znachenie b=');
readln(b);
write('Vvedite tochnost e1=');
readln(e1);
write('Vvedite tochnost e2=');
readln(e2);
xi:=0;
xi1:=0;
fa:=a*a*a+5*sqr(a)-0.1;
fb:=b*b*b+5*sqr(b)-0.1;
f2a:=6*a+10;
if (fa*fb>0) then
begin
writeln('Net kornei!');
exit;
end;
if (fa*f2a>0) then
begin
xi:=b;
M1:fxi:=xi*xi*xi+5*sqr(xi)-0.1;
xi1:=xi-((xi-a)*fxi)/(fxi-fa);
fxi1:=xi1*xi1*xi1+5*sqr(xi1)-0.1;
if ((abs(xi-xi1)>e1) and (abs(fxi1)>e2)) then
begin
xi:=xi1;
goto M1;
end
else
begin
writeln('Koren uravneniya x=',xi1:1:11);
fxi1:=xi1*xi1*xi1+5*sqr(xi1)-0.1;
writeln('Znachenie funkcii f(x)=',fxi1:1:11);
end;
end
else
begin
xi:=a;
M2:fxi:=xi*xi*xi+5*sqr(xi)-0.1;
xi1:=xi-((b-xi)*fxi)/(fb-fxi);
if ((abs(xi-xi1)>e1) and (abs(fxi1)>e2)) then
begin
xi:=xi1;
goto M2;
end
else
begin
writeln('Koren uravneniya x=',xi1:1:11);
fxi1:=xi1*xi1*xi1+5*sqr(xi1)-0.1;
writeln('Znachenie funkcii f(x)=',fxi1:1:11);
end;
end;
End.