Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in Python by (16.4k points)

I need to make a Python program that will execute a bisection method to decide the foundation (root) of: 

f(x) = -26 + 85x - 91x2 +44x3 -8x4 + x5

The Bisection strategy is a mathematical technique for assessing the roots of a polynomial f(x). 

Are there any accessible pseudocode, calculations, or libraries I could use to reveal to me the appropriate response?

1 Answer

0 votes
by (26.4k points)

Look at the below code:

>>> 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.0

        if samesign(func(low), func(midpoint)):

            low = midpoint

        else:

            high = midpoint

    return 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.557025516287 3.74700270811e-16

Tolerance:

To exit early when a given resistance (tolerance) is accomplished, add a test toward the end of the loop:

def bisect(func, low, high, tolerance=None):

    assert not samesign(func(low), func(high))   

    for i in range(54):

        midpoint = (low + high) / 2.0

        if samesign(func(low), func(midpoint)):

            low = midpoint

        else:

            high = midpoint

        if tolerance is not None and abs(high - low) < tolerance:

            break   

    return midpoint

Are you interested to learn the concepts of Python? Join the python training course fast!

Related questions

Browse Categories

...