0

Rubyで本当に大きな数の平方根を計算しようとしています。私が抱えている問題は、Math.sqrt関数が次のようになっていることです。

sqrt(numeric) → float

非常に大きな数をフィードすると、FloatDomainError:Infinityが表示されます。

sqrt()BigNumを返すための最良の方法は何ですか?これにはおそらく宝石がありますか、それとも平方根を計算するために独自の関数を作成する必要がありますか?

その場合、これを行うための最も簡単な方法は何ですか?テイラー級数?数値の平方根は常に整数になります。

4

1 に答える 1

5

整数の平方根を計算する簡単な方法があります。これにより、整数が得られます。

  1. 数値の平方根を求めるには、M と P をその数値に設定します。
  2. 次に、(M+P/M)/2 を計算し、各区分を切り捨てます。
  3. M が結果と等しいかそれより小さい場合は、M を平方根として使用します。それ以外の場合は、M を結果に設定し、手順 2 でこのプロセスを繰り返します。

ただし、このアプローチは大きな数に対しては非効率的かもしれないので、試してみてください。

編集:

Ruby の実装は次のとおりです。

def mysqrt(x)
  return 0 if x==0 
  m=x
  p=x
  loop do
    r=(m+p/m)/2
    return m if m<=r
    m=r
  end
end
于 2011-11-22T11:42:24.180 に答える