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

В программе предусмотреть ввод границ интервала.

code: #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.      
Поделиться:

Похожие статьи: