JavaScriptでMath.sqrt()を使わずに数値の平方根を求める方法
正の整数を唯一の引数として受け取り、その数値の平方根を計算して返すJavaScript関数を作成する必要があります。ただし、組み込みの Math.sqrt() メソッドは使用しないものとします。
アプローチ:ニュートン法による反復計算
Math.sqrt() を使わずに平方根を求める代表的な手法の一つが「ニュートン法(Newton-Raphson法)」です。これは、適当な初期値から始めて、次の更新式を繰り返し適用することで、真の平方根へと近づけていく方法です。
xn+1 = xn − (xn² − num) / (2 × xn)
この式は、「現在の推測値の2乗と目標値との誤差」を「接線の傾き(2 × 推測値)」で割って補正するという考え方に基づいています。反復を重ねるごとに推測値は急速に真の平方根へ収束していきます。
さらに、第2引数 precision(精度)を受け取ることで、小数点以下何桁まで求めるかを制御できるようにしています。許容誤差(deviation)は 1 / 10^precision で定義され、誤差がこの閾値より小さくなった時点で反復を終了します。
コード例
const squareRoot = (num, precision = 0) => {
if (num <= 0) {
return 0;
};
let res = 1;
const deviation = 1 / (10 ** precision);
while (Math.abs(num - (res ** 2)) > deviation) {
res -= ((res ** 2) - num) / (2 * res);
};
return Math.round(res * (10 ** precision)) / (10 ** precision);
};
console.log(squareRoot(16));
console.log(squareRoot(161, 3));
console.log(squareRoot(1611, 4));コードの解説
numが 0 以下の場合は 0 を返して処理を終了します。- 初期推測値
resを 1 に設定します。 - 許容誤差
deviationを1 / 10^precisionとして計算します。 - 「
numとresの2乗の差の絶対値」が許容誤差より大きい間、ニュートン法の更新式でresを修正し続けます。 - 最後に、指定された桁数で四捨五入した結果を返します。
出力
コンソールには次のように出力されます −
4 12.689 40.1373
-
Pythonでmathモジュールを使わずに平方根を計算する方法
Pythonのべき乗演算子(**)で平方根を求めるPythonには、べき乗を計算するための演算子 ** が標準で用意されています。x**y は「xのy乗」、つまりxをy回掛け合わせた結果を返します。平方根は数学的に「1/2乗」に相当するため、指数部分に 1/2 を指定すれば、math モジュールをインポートすることなく平方根を簡単に計算できます。コード例>>> 10**(1/2) 3.1622776601683795 >>> 25**(1/2) 5.0実行結果の解説上記の例では、10の平方根は約 3.1622776601683795、25の平方根はちょうど
-
Pythonで数値の平方根を計算する方法【初心者向け】
math.sqrt()関数を使った平方根の計算 Pythonで数値の平方根を計算する最も簡単な方法は、標準ライブラリのmathモジュールに定義されているsqrt()関数を使用することです。 >>> import math >>> math.sqrt(10) 3.1622776601683795 >>> math.sqrt(3) 1.7320508075688772 基本的な使い方 sqrt()関数は引数として非負の数を受け取り、その平方根を浮動小数点数(float型)として返します。使用する前に、import mathを実行してモジュールを