Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
26
Добавлен:
07.01.2014
Размер:
20.99 Кб
Скачать

Метод половинного деления

Program Half_Div;

uses crt;

var

n:integer;

x,y,x1,y1,x2,y2,m1,m2,h,mx1,eps,a,b,mx2:real;

function f(x:real):real;

begin

f:=-2.505-2.802 *x+4.175*x*x+x*x*x;

end;

Begin

clrscr;

writeln('Введите точность');readln(eps);

writeln('Введите левую границу');readln(a);

writeln('Введите праввую границу ');readln(b);

m2:=a;

n:=1;

h:=(b-a)/2; writeln('________________________________________________________________________');

write ('| N | A | X | B | F(A) | F(X) | F(B) | B-A | ');

while m2<=b do

begin

m1:=m2;

m2:=m2+h;

if ((f(m1)>=0) and (f(m2)<=0)) or((f(m1)<=0) and (f(m2)>=0)) then

begin

x1:=m1;

x2:=m2;

Writeln;

repeat

begin

x:=(x2+x1)/2;

y1:=f(x1);

y2:=f(x2);

y:=f(x);

Writeln ('| ',n,' | ',x1:6:3,' | ',x:4:3,'| ',x2:4:3,'| ',f(x1):8:4,'| ',

'| ',f(x):8:4,'|',f(x2):8:4,' | ',x2-x1:4:4,' | ');

n:=n+1;

mx1:=x1;

mx2:=x2;

If ((y1>=0) and (y<=0)) or((y1<=0) and (y>=0)) Then x2:=x else x1:=x

end;

until abs(mx2-mx1)/2<=eps;

n:=1;

end;

end;

write('------------------------------------------------------------------------');

readln;

end.