def func(x):
return x**4+x**3-6*x**2+20*x-16
def find_interval(f):
count = 0
start, end = 0, 0
while True:
count += 1
a = f(count)
b = f(-count)
if (a > 0 or b > 0) and not end:
end = count * ((a > b) * 2 - 1)
if (a < 0 or b < 0) and not start:
start = count * ((a < b) * 2 - 1)
if start and end:
return [start, end]
def main():
interval = find_interval(func)
f_interval = list(map(func, interval))
while True:
c = sum(interval) / 2
index = func(c) > 0
interval[index] = c
f_interval[index] = func(c)
if interval[1]-interval[0] < 0.000001:
break
print(round(sum(interval)/2, 6))
if __name__ == "__main__":
main()