Программа


{ Поиск корня уравнения
  методом половинного деления 
  (метод дихотомии) }
Program HalfDivision;
Type Func=function(x:real):real; { Тип функция }
Var Result:real;  { Корень }
    a,b:real;  { Левая и правая границы интервала локализации корня }
Function F(x:real):real; far; { Вычисление функции }
  Begin
    F:=x
  End;
Function Root(a,b:real;F:Func):real; { Функция нахождения корня }
  const Eps=0; { Точность вычислений }
  var c:real;  { Средняя точка интервала локализации корня }
  Begin
    while abs(b-a)>Eps do { Сужение интервала до заданной точности }
      begin
        c:=(a+b)/2;  { Определение средней точки интервала локализации корня }
        if (c=a)or(c=b)
          then begin a:=c; b:=c end { Блокирование сбоя при потере точности }
          else if F(a)*F(c)<0 { Если функция меняет знак на левом участке }
                 then b:=c { то переопределение правой границы }
                 else if F(b)*F(c)<0
                        { иначе - если функция меняет знак на правом участке }
                        then a:=c  { то переопределение левой границы }
                        else begin
                             { Блокирование сбоя при потере точности
                               или случайном нахождении корня }
                               if F(a)=0 then begin c:=a; b:=a end;
                               if F(b)=0 then begin c:=b; a:=b end;
                               if F(a)*F(b)*F(c)=0 then begin a:=c; b:=c end
                             end
      end;
    Root:=(a+b)/2 { Определение значения функции }
  End;
BEGIN
  { Ввод интервала локализации корня: }
  Write('Введите левую границу интервала локализации корня ');
  ReadLn(a);
  Write('Введите правую границу интервала локализации корня ');
  ReadLn(b);

  Result:=Root(a,b,F);                              { Вычисление корня }
  writeln('x=',Result,'  F(x)=',F(Result))          { Вывод корня и проверки }
END.


Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию