最近、私は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
の計算の背後にあるロジックを。誰かが論理を理解するのを助けることができますか?
https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method –
あなたが立ち往生している場所を説明してください:あなたのウェブの "平方根アルゴリズム"の検索は、あなたの質問に答えるためにたくさんのヒットを得たはずです。これは、ニュートン法(平方根に適用)またはバビロニア法とも呼ばれます。 – Prune
ロジック:最後の推測を数値の1/2に初期化します。最後の推測とその数を最後の推測で除した平均値である新しい推測値を計算します。この新しい値が最後の値と十分に異なるかどうかをチェックして、それを答えとして返します。そうでない場合は、最後の推測を新しいものにして、プロセスを繰り返します。この平均化プロセスの各反復が答えに近づくと仮定します。 – martineau