Home  >  Article  >  Backend Development  >  Find the square root using the Bisection Method.

Find the square root using the Bisection Method.

高洛峰
高洛峰Original
2016-10-19 13:40:273540browse

Use the Bisection Method to find the square root.

def sqrtBI(x, epsilon):
    assert x>0, 'X must be non-nagtive, not ' + str(x)
    assert epsilon > 0, 'epsilon must be postive, not ' + str(epsilon)
  
    low = 0
    high = x
    guess = (low + high)/2.0
    counter = 1
    while (abs(guess ** 2 - x) > epsilon) and (counter <= 100):
        if guess ** 2 < x:
            low = guess
        else :
            high = guess
        guess = (low + high)/2.0
        counter += 1
    return guess

Verify it.

>>> sqrtBI(2,0.000001)

>>> 1.41421365738

The above method will have problems if X

>>> sqrtBI(0.25,0.000001)

>>> 0.25

So how to find the square root of 0.25?

Just slightly change the above code. Note lines 6 and 7 of code.

def sqrtBI(x, epsilon):
    assert x>0, &#39;X must be non-nagtive, not &#39; + str(x)
    assert epsilon > 0, &#39;epsilon must be postive, not &#39; + str(epsilon)
  
    low = 0
    high = max(x, 1.0)
    ## high = x
    guess = (low + high)/2.0
    counter = 1
    while (abs(guess ** 2 - x) > epsilon) and (counter <= 100):
        if guess ** 2 < x:
            low = guess
        else :
            high = guess
        guess = (low + high)/2.0
        counter += 1
    return guess

Verify it:

>>> sqrtBI(0.25,0.000001)

>>> 0.5


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:Object copy in PythonNext article:Object copy in Python