Загрузка данных


def f(x):
    return x**3 + 0.205*x**2 - 10.880*x - 1.469

def bisection(a, b, tol=1e-6):
    if f(a) * f(b) >= 0:
        raise ValueError("На концах отрезка функция должна иметь разные знаки")
    while (b - a) / 2 > tol:
        c = (a + b) / 2
        if f(c) == 0:
            return c
        if f(a) * f(c) < 0:
            b = c
        else:
            a = c
    return (a + b) / 2

# Левый корень находится около -3.334
a, b = -3.35, -3.30
root = bisection(a, b)
print(f"Метод половинного деления: x = {root:.8f}")
print(f"Значение функции f(x) = {f(root):.2e}")