Найти корни функции на заданном интервале методом хорд (линейной интерполяции) Sin ( x — ln(x) ) [ 0.01,2] — Pascal(Паскаль)

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.

Leave a Comment

55 − = 54