Program MPD;
Uses WinCrt;
Type
func=function(xa:Real):Real;
Function F(xa:Real):Real;Far;
Procedure MrPD(Aa,Ba,Ea:Real; F:func; Var xa:Real);
Var
A,B,Exp,x:Real;
F:func;
w:text;
{функция y=f(t)}
Function F;
Begin
F:=(Sqr(xa)*xa)+3*xa+5;
End;
{метод половинного деления}
Procedure MrPD;
Var z,x,y:Real;
Begin
x:=F(Aa);
Repeat
xa:=(Aa+Ba)/2;
y:=F(xa);
If y*z>0
Then begin Aa:=xa; z:=y; end
Else Ba:=xa;
Until Abs(Ba-Aa)<Ea;
End;
Begin
Assign(w,'C:\Rezlab\MPD.doc'); ReWrite(w);
WriteLn(w,'Определение корней уравнения методом половинного деления');
WriteLn(w);
WriteLn('Введи значение левой границы интервала А');Read(A);
WriteLn('Введи значение правой границы интервала В');Read(B);
WriteLn('Введите погрешность Exp');Read(Exp);
MPD(A,B,Exp,f,x);
WriteLn(w,'Корень по методу половинного деления равен', x:7:4);
Close(w);
End.