2016-09-02 2 views
0

Ich arbeitete vor kurzem an der Suche nach der Quadratwurzel einer Zahl in python ohne sqrt() zu verwenden. Ich kam in diesem Code und Schwierigkeiten habe in diesem Code, um die Logik zu verstehen:Quadratwurzel ohne Verwendung von math.sqrt() finden?

def sqrt(x): 
    last_guess= x/2.0 
    while True: 
     guess= (last_guess + x/last_guess)/2 
     if abs(guess - last_guess) < .000001: # example threshold 
      return guess 
     last_guess= guess 

Insbesondere die Logik hinter guess in obigem Code zu berechnen. Kann mir jemand helfen, die Logik zu verstehen?

+10

https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method –

+1

Bitte erläutern Sie, wo Sie stecken: Ihre Die Suche nach dem "Quadratwurzelalgorithmus" sollte viele Treffer ergeben haben, um Ihre Frage zu beantworten. Dies wird auch als Newtonsche Methode (angewandt auf die Quadratwurzel) oder als babylonische Methode bezeichnet. – Prune

+0

Die Logik: Initialisiert den letzten Schätzwert auf die Hälfte der Zahl. Berechnet eine neue Schätzung, bei der es sich um den Durchschnitt der letzten Schätzung und die Anzahl dividiert durch die letzte Schätzung handelt. Überprüft, ob dieser neue Wert sich vom letzten unterscheidet, um ihn als Antwort zurückzugeben. Ist dies nicht der Fall, machen Sie die letzte Rate neu und wiederholen Sie den Vorgang. Es wird davon ausgegangen, dass jede Iteration dieses Mittelungsprozesses näher an die Antwort herankommt. – martineau

Antwort

2

Sie können immer die Leistung (**) Operator mit einem inversen Exponenten:

a = 2 ** (1.0/2) 
a 
> 1.41421... 
+1

... obwohl ich vermute, dass das nicht ganz das ist, was du wissen wolltest ... – heltonbiker

+0

einfach '2 ** 0.5' –

+1

Ich kenne den Power Operator aber wollte die Logik hinter dem Code verstehen, den ich in meinem Beitrag erwähnt habe – user2916886

Verwandte Themen