Here's some code showing the basic technique: def samesign(a, b):return a. b 0 def bisect(func, low, high):'Find root of continuous function where f(low) and f(high) have opposite signs'assert not samesign(func(low), func(high))for i in range(54):midpoint = (low + high) / 2.0if samesign(func(low), func(midpoint)):low = midpointelse:high = midpointreturn midpoint def f(x):return -26 + 85.x - 91.x.2 +44.x.3 -8.x.4 + x.5 x = bisect(f, 0, 1) print x, f(x)0.87 3.1e-16. My implementation is more generic and yet simpler than the other solutions: (and public domain) def solve(func, x = 0.0, step = 1e3, prec = 1e-10):'Find a root of func(x) using the bisection method.The function may be rising or falling, or a boolean expression, as long asthe end points have differing signs or boolean values.Examples:solve(lambda x: x.3 1000) to calculate the cubic root of 1000.solve(math.sin, x=6, step=1) to solve sin(x)=0 with x=6,7).' 'test = lambda x: func(x) 0 # Convert into bool functionbegin, end = test(x), test(x + step)assert begin is not end # func(x) and func(x+step) must be on opposite sideswhile abs(step) prec:step.= 0.5if test(x + step) is not end: x += stepreturn x.
I want to make a Python program that will run a bisection method to determine the root of: f(x) = -26 + 85x - 91x2 +44x3 -8x4 + x5. The Bisection method is a numerical method for estimating the roots of a polynomial f(x).