Java|sqrtメソッドで平方根を求める方法【ルート(√)】

sqrtメソッドの使い方プログラミングの知識
プログラミングの知識

Javaで平方根を求めるにはMathクラスsqrtメソッドが便利です。今回はsqrtメソッドの使い方を紹介します。(メソッドを使わない方法も紹介しています。)

平方根とは数aがあるとき、2乗してaになるような数のことを指します。つまり「x2=a」を満たす数xがaの平方根になります。

スポンサーリンク

sqrtメソッドの書式

sqrtメソッドは以下の様に記述します。

//sqrtメソッドの書式例
Math.sqrt(数字);

上記の数字を4とすると、4の平方根である2が戻り値として返されます。戻り値の型はdouble型になります。

数字が負である場合はNaN(Not a Number/非数)を返します。

メソッドの使用例【サンプルコード・出力結果】

メソッドの使用例をサンプルコードで示します。

サンプルコードを以下に示します。

public class SqrtTest {

	public static void main(String[] args) {

		// 4,9,10の平方根を求め出力する
		System.out.println(Math.sqrt(4));
		System.out.println(Math.sqrt(9));
		System.out.println(Math.sqrt(10));

		// -1の平方根を求め出力する
		System.out.println(Math.sqrt(-1));
	}

}

サンプルコードの出力結果を以下に示します。

2.0 //4の平方根
3.0 //9の平方根
3.1622776601683795 //10の平方根
NaN //-1の平方根

それぞれの数字の平方根が、double型で出力されていることが分かります。

sqrtメソッドを使わずに平方根を計算する

sqrtメソッドを使わない方法として、数xの平方根を求めたい時、0からxまでの平均を近似していくことで平方根を求める方法があります。アルゴリズムの概要はこのようになります。

アルゴリズム
  1. num1とnum2の平均midを求める 初回はnum1にxを代入し、num2に0を代入する
  2. midの2乗(mid*mid)がxと一致したら処理を終了する (mid*mid)<xだったらnum2にmidを代入 (mid*mid)>xだったらmum1にmidを代入
  3. (mid*mid)がxと一致するか規定回数に達するまで1と2を繰り返す

例として、10の平方根を求めるサンプルコードを以下に示します。近似の回数は最大1000回にしています。

public class SqrtTest2 {

	public static void main(String[] args) {

		double number = 10;
		double num1 = number;
		double num2 = 0.0;
		double mid = 0.0;
		for (int i = 0; i < 1000; i++) {
			mid = (num2 + num1) / 2;
			if (mid * mid - number < 0) {
				num2 = mid;
			} else if (mid * mid == number) {
				num1 = mid;
				break;
			} else {
				num1 = mid;
			}
		}
		System.out.println(number + "の平方根:" + num1);
	}
}

サンプルコードの出力結果を以下に示します。

10.0の平方根:3.1622776601683795

先ほどの出力結果と同じ物が出力されたことが分かります。平方根が無理数の場合、繰り返し処理は最大まで達して処理を終了します。

平方根が整数の場合だと1000回までいかずに処理を終了することがあります。試しに7の2乗である49をnumberに入れてみます。

処理回数:54
49.0の平方根:7.0

繰り返し処理は54回で抜けていますね。平方根が整数だと早めに計算が終わりますが、小数の場合だと繰り返し処理は多くなってしまいます。また無理数の場合だと無条件に最大まで繰り返します。

まあ色々書きましたが、この方法だとコードが長いので普通にsqrtメソッドを使った方が見やすいし便利です。

まとめ

今回やったことのまとめです。

ポイント
  • 平方根を求めるのにはsqrtメソッドを使うと便利
  • 戻り値がdouble型で返るので注意

以上がsqrtメソッドについての紹介です。

似た機能を持つメソッドに立方根を計算するcbrtメソッドがあるので注意しましょう。

スポンサーリンク
Dim雑記
タイトルとURLをコピーしました