Обсуждение:Метод дихотомии

Материал из Викиучебника — открытых книг для открытого мира
Перейти к навигации Перейти к поиску
  1. include <iostream>
  2. include <cmath>

using namespace std; const double epsilon = 1e-10;

double f(double x) {

   return exp(x) - (x + 2);

}

int main() {

   double a, b, c;
   a = 0;
   b = 2;
   while (b - a > epsilon){
       c = (a + b) / 2;
       if(f(b) * f(c) < 0)
           a = c;
       else
           b = c;
   }
   cout << (a + b) / 2 << endl;
   return 0;

}

Промышленные программисты[править]

Обычно программисты пишут так, что на каждом шаге значение функции на одном из концов отрезка вычисляется повторно

Какие-то неправильные программисты. При нормальной реализации на каждом шаге достаточно посчитать значение функции в середине отрезка. Посколько отрезки каждый раз разные, то в процессе работы ни в какой точке функция не будет вычислена дважды (конечно, если исходный отрезок ненулевой). Bosik GN 13:29, 30 июня 2011 (UTC)