Допишите код функции bisect(), которая методом бисекции найдёт решение уравнения. На вход она принимает:

  • function — функция с искомыми нулевыми значениями. В Python аргументами можно передавать функции. А вызывают её так: function(x);
  • left, right — левый и правый концы отрезка;
  • error — допустимая величина ошибки (от неё зависит точность алгоритма).

В прекоде уже есть проверка метода на двух функциях.

import math

def bisect(function, left, right, error):
    # Цикл while повторяет код, пока выполняется условие.
    # Добавили в него условие остановки.
    while right - left > error:

        # проверяем, нет ли нулей
        if function(left) == 0:
            return left
        # < напишите код здесь >
        if function(right) == 0:
            return right
        
        # делим отрезок пополам и находим новый отрезок
        middle = (left + right) / 2 # < напишите код здесь >
        if function(middle) > 0: # < напишите код здесь >
            right = middle
        # < напишите код здесь >
        if function(middle) < 0: # < напишите код здесь >
            left = middle
    return left


def f1(x):
    return x**3 - x**2 - 2*x 


def f2(x):
    return (x+1)*math.log10(x) - x**0.75


print(bisect(f1, 1, 4, 0.000001))
print(bisect(f2, 1, 4, 0.000001))

Результат

1.999999761581421
3.6952309608459473

1.999999761581421 — это почти 2. Нашли один корень уравнения x³ - x² - 2x = 0! Хотели приближённо — получите, распишитесь.