Программа




Program HalfDivision;{ Поиск корня уравнения методом половинного деления
                       (метод дихотомии) }
Var Result:real;  { Корень }
    a,b:real;  { Левая и правая границы интервала локализации корня }
Function F(x:real):real; { Вычисление функции }
  Begin
    F:=(Sqr(Sqr(x))-1)*x-2
  End;
Function Root(a,b:real):real; { Функция нахождения корня }
  const Eps=0.01; { Точность вычислений }
  var c:real;  { Средняя точка интервала локализации корня }
      Iteration:longint; { Счетчик итераций }
  Begin
    Iteration:=0; { Сброс счетчика итераций }
    while abs(b-a)>Eps do { Сужение интервала до заданной точности }
      begin
        Inc(Iteration); { Набор числа итераций }
        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; { Определение значения функции }
    WriteLn('Число итераций ',Iteration);
  End;
BEGIN
  { Ввод интервала локализации корня: }
  Write('Введите левую границу интервала локализации корня ');
  ReadLn(a);
  Write('Введите правую границу интервала локализации корня ');
  ReadLn(b);

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

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