program PascalGuru;
uses crt;
{ Вычисление значения функции в заданной точке }
function f(x: real): real;
begin
f := sin(x - ln(x));
end;
{ Поиск корня функции
a, b - пределы хорды, eps - необходимая погрешность }
function Calc(a, b, eps: real): real;
var
c, fa, fb: real;
begin
repeat
fa := f(a);
fb := f(b);
c := a + (b - a) * fa / (fa - fb);
if fa * fb < 0 then
b := c
else
a := c;
until abs(f(c)) < eps;
Calc := c;
end;
var
a, b, c, eps: real;
begin
ClrScr;
WriteLn('Поиск корней функции на заданном интервале [a, b] методом хорд');
WriteLn;
Write('a: ');
ReadLn(a);
Write('b: ');
ReadLn(b);
Write('Точность eps: ');
ReadLn(eps);
c := Calc(a, b, eps);
WriteLn;
WriteLn('На интервале [', a:1:2, ', ', b:1:2, ']');
WriteLn(' корень функции sin(x - ln(x)) равен: ', c:1:4);
WriteLn;
Write('Для выходна нажмите Enter ...');
ReadLn;
end.