2016-09-02 6 views
0

最近、私はsqrt()を使わずにpythonに数字の平方根を見つけることに取り組んでいました。私はこのコードに出くわしたと、このコードのロジックを理解するのに困難が午前:math.sqrt()を使わずに平方根を見つける?

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 

具体的には上記のコードでguessの計算の背後にあるロジックを。誰かが論理を理解するのを助けることができますか?

+10

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

+1

あなたが立ち往生している場所を説明してください:あなたのウェブの "平方根アルゴリズム"の検索は、あなたの質問に答えるためにたくさんのヒットを得たはずです。これは、ニュートン法(平方根に適用)またはバビロニア法とも呼ばれます。 – Prune

+0

ロジック:最後の推測を数値の1/2に初期化します。最後の推測とその数を最後の推測で除した平均値である新しい推測値を計算します。この新しい値が最後の値と十分に異なるかどうかをチェックして、それを答えとして返します。そうでない場合は、最後の推測を新しいものにして、プロセスを繰り返します。この平均化プロセスの各反復が答えに近づくと仮定します。 – martineau

答えて

2

は、必ず電源逆指数付き(**)演算子を使用することができます。

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

...これはあなたが知りたいと思っていたものではないと思われますが... – heltonbiker

+0

単純に '2 ** 0.5' –

+1

私はパワーオペレータを知っていますが、 – user2916886