Heim >Backend-Entwicklung >Python-Tutorial >Finden Sie die Quadratwurzel mit der Halbierungsmethode.

Finden Sie die Quadratwurzel mit der Halbierungsmethode.

高洛峰
高洛峰Original
2016-10-19 13:40:273567Durchsuche

Verwenden Sie die Halbierungsmethode, um die Quadratwurzel zu ermitteln.

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

Überprüfen Sie es.

>>> sqrtBI(2,0.000001)

>>> 1.41421365738

Die obige Methode wird Probleme haben, wenn X

>>> sqrtBI(0.25,0.000001)

>>> 0.25

Wie findet man also die Quadratwurzel von 0,25?

Ändern Sie einfach den obigen Code leicht. Beachten Sie die Zeilen 6 und 7 des Codes.

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

Überprüfen Sie es:

>>> sqrtBI(0.25,0.000001)

>>> 0.5


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Objektkopie in PythonNächster Artikel:Objektkopie in Python