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

Finden Sie die Quadratwurzel mit der Halbierungsmethode.

高洛峰
Freigeben: 2016-10-19 13:40:27
Original
3567 Leute haben es durchsucht

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
Nach dem Login kopieren

Überprüfen Sie es.

>>> sqrtBI(2,0.000001)

>>> 1.41421365738

Die obige Methode wird Probleme haben, wenn X<1. Weil die Quadratwurzel von X (X<1) nicht im Bereich [0, x] liegt. Beispielsweise liegt die Quadratwurzel von 0,25 nicht im Intervall [0, 0,25]. <1 ,就会有问题。因为 X (X<1)的平方根不在 [0, x] 的范围内。例如,0.25,它的平方根——0.5 不在 [0, 0.25] 的区间内。

>>> 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
Nach dem Login kopieren

Überprüfen Sie es:

>>> sqrtBI(0.25,0.000001)

>>> 0.5


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage