Code
Code
# Initialize
roots = []
while intervals:
a, b = intervals.pop(0)
f_a = evaluate_poly(polynomial, a)
f_b = evaluate_poly(polynomial, b)
if has_sign_change(f_a, f_b):
# Bisect interval
m = (a + b) / 2
f_m = evaluate_poly(polynomial, m)
if has_sign_change(f_a, f_m):
b, f_b = m, f_m
a, f_a = m, f_m
else:
roots.append((a + b) / 2)
else:
return roots
print("Roots:", roots)