Используя метод половинного деления, определи имеет ли уравнение y=1x3−4,2x−4 корень на промежутке [−3, 4].
Ответы
function f(x: real): real;
begin
f:=x*x*x - 4.2*x - 4;
end;
{ основная программа }
var a,b,c,eps: real;
k: integer;
{ a - начало интервала, b - конец }
begin
write('a = '); readln(a);
write('b = '); readln(b);
if f(a)*f(b)<0 then
begin
write('точность вычислений eps: '); readln(eps);
k:=1;
while abs(a-b)>eps do
begin
writeln('итерация ',k,' a =',a:12:8, ' b =',b:12:8);
c:=(a+b)/2;
if f(c)<>0 then
begin
if f(c)*f(b)<0 then a:=c
else b:=c
end;
k:=k+1;
end;
writeln('корень = ',a:12:8);
end
else
writeln('на интервале [',a,',',b,']',' корней нет');
end.
a = -3
b = 4
точность вычислений eps: 0.0001
итерация 1 a = -3.00000000 b = 4.00000000
итерация 2 a = 0.50000000 b = 4.00000000
итерация 3 a = 2.25000000 b = 4.00000000
итерация 4 a = 2.25000000 b = 3.12500000
итерация 5 a = 2.25000000 b = 2.68750000
итерация 6 a = 2.25000000 b = 2.46875000
итерация 7 a = 2.35937500 b = 2.46875000
итерация 8 a = 2.41406250 b = 2.46875000
итерация 9 a = 2.41406250 b = 2.44140625
итерация 10 a = 2.41406250 b = 2.42773438
итерация 11 a = 2.41406250 b = 2.42089844
итерация 12 a = 2.41748047 b = 2.42089844
итерация 13 a = 2.41918945 b = 2.42089844
итерация 14 a = 2.41918945 b = 2.42004395
итерация 15 a = 2.41918945 b = 2.41961670
итерация 16 a = 2.41918945 b = 2.41940308
итерация 17 a = 2.41929626 b = 2.41940308
корень = 2.41934967