Допишите код функции 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))