はじめに
平方根の計算は、数学や科学の分野で頻繁に使われる。特に高精度な計算が必要な場合、Pythonのdecimalモジュールを利用することで精度を細かく制御できる。今回は、ニュートン法を用いて平方根を高精度に求める方法を解説する。
ニュートン法とは?
ニュートン法(Newton-Raphson法)は、非線形方程式の解を数値的に求めるための反復法である。平方根の計算では、次のような反復式を使用する。
実装の詳細
Pythonのdecimalモジュールを使って平方根を高精度に求める関数を紹介する。
from decimal import Decimal, getcontext
def sqrt(n, k):
getcontext().prec = k + 1
x = Decimal(n)
y = Decimal(0)
while x != y:
y = x
x = (x + n / x) / 2
return round(x, k)
この関数では、以下の手順で計算を行う。
1. decimalモジュールを用いて計算の精度を設定する。
2. 初期推定値
3. 反復計算が収束したら、結果を指定の精度で丸めて返却する。
具体例: の平方根を求める
実際に
n = 2
k = 10
result = sqrt(n, k)
print(f"The square root of {n} to {k} decimal places is {result}")
計算過程
- 初期設定
・初期推定値
・ - 1回目の反復
・ - 2回目の反復
・ - 3回目の反復
・ - 4回目の反復
・
このようにして、2の平方根が約 (
結論
ニュートン法を使えば、平方根を高精度で求めることができた。特にPythonのdecimalモジュールを用いることで、計算精度を自由に制御できるため、科学技術計算において非常に有用である。
コメント