Intellipaat 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

31k questions

32.8k answers

501 comments

693 users

Browse Categories

...