def y(x): return x**2 * (x + 4) - 4
a, b, n = 0, 1, 0; print(51 * '=')
print(' № x y(x)=x³+4x-4')
print('=' * 51)
while b - a > 1e-16:
x = (a + b) / 2; n += 1; yx = y(x)
print('%2d)%22.16f%26.16e' % (n, x, yx))
if yx == 0: break
if yx > 0: b = x
else: a = x
print(51 * '=')
Запускаем его и получаем результат:По таблице видно как работает метод половинного деления. В начале берём отрезок [a;b]=[0;1], так как f(0)=-4, f(1)=1 и единственный действительный корень уравнения f(x)=x³+4x-4=0 находится находится именно в этом отрезке. Если значение в средней точке отрезка х=(a+b)/2 положительно, то b=x, иначе если отрицательно, то a=x. Если f(x)=0, то корень найден и дальнейший поиск прекращается. def y(x): return x * (x * x + 4) - 4
a, b, n = 0, 1, 0; print(51 * '=')
print(' № x y(x)=x³+4x-4')
print('=' * 50)
while True:
x = (a + b) / 2; n += 1; yx = y(x)
print('%2d)%22.15f%25.15e' % (n, x, yx))
if abs(yx) < 1e-15: break
if yx > 0: b = x
else: a = x
print(50 * '=')
Результат такой:В вопросе не указаны ни область поиска корней (ℝ или ℂ), ни требуемая точность, ни инструментальное средство для решения задачи (а может её, эту задачу, вообще надо решать в ручную и нельзя пользоваться ничем кроме простенького калькулятора - откуда нам знать?). А раз такое пренебрежение самым важным, то и любая серьёзность и ответственность в ответах совсем не обязательна.