← Усі приклади

Метод половинного ділення

C++ Алгоритми

числовий метод, while

Блок-схема за ДСТУ

ПочатокВвід xПовернути x * x - 2КінецьРисунок 1 — fТакТакНіНіПочатокВвід a, b, epsb - a > epsm = (a + b) / 2f(a) * f(m) < 0b = ma = mПовернути (a + b) / 2КінецьРисунок 2 — bisection

Вихідний код

double f(double x) {
    return x * x - 2;
}

double bisection(double a, double b, double eps) {
    double m;
    while (b - a > eps) {
        m = (a + b) / 2;
        if (f(a) * f(m) < 0) {
            b = m;
        } else {
            a = m;
        }
    }
    return (a + b) / 2;
}