対数を取得する

Math クラスで用意されている log メソッド、 log10 メソッド、 log1p メソッドを使用すると、引数に指定した値の対数を取得することができます。それぞれのメソッドで対数を取るときの底が異なります。ここでは Java で数値の対数を取得する方法について解説します。

(Last modified: )

対数を取得する

Math クラスでは対数を取るためのメソッドとして 3 種類用意されています。いずれもクラスメソッドです。対数に関する詳しい説明はここでは省略しますが、簡単に書くと x = ap が成り立つ時、 p を x の a を底とする対数と呼びます。 p は a を何乗したら x になるのかを表す数値です。この時 p は次のように表すことができます。

対数を取得する(1)

なお Math クラスでは自然対数の底 e にもっとも近い double 値として Math.E というフィールドが定義されています。

public static final double E 2.718281828459045

logメソッド

底が e の対数をとるのが log メソッドです。 log メソッドはクラスメソッドです。書式は次のとおりです。

public static double log(double a)

パラメータ:
a - 値

戻り値:
値ln a (aの自然対数)

1 番目の引数に指定した値の底を e とする対数を取得し戻り値として返します。底が e の対数のことを自然対数ともいいます。

対数を取得する(2)

次のサンプルを見てください。

System.out.println(Math.log(10));  // 2.302585092994046
System.out.println(Math.log(1));  // 0.0
System.out.println(Math.log(Math.E));  // 1.0

引数に指定した値の自然対数を取得しました。

log10メソッド

底が 10 の対数をとるのが log10 メソッドです。 log10 メソッドはクラスメソッドです。書式は次のとおりです。

public static double log10(double a)

パラメータ:
a - 値

戻り値: aの10を底とする対数。

1 番目の引数に指定した値の底を 10 とする対数を取得し戻り値として返します。底が 10 の対数のことを常用対数ともいいます。

対数を取得する(3)

次のサンプルを見てください。

System.out.println(Math.log10(100));  // 2.0
System.out.println(Math.log10(10));  // 1.0
System.out.println(Math.log10(1));  // 0.0

引数に指定した値の常用対数を取得しました。

log1pメソッド

引数に指定した値に 1 を加えた値に対して底が e の対数をとるのが log1p メソッドです。 log1p メソッドはクラスメソッドです。書式は次のとおりです。

public static double log1p(double x)

パラメータ:
x - 値

戻り値:
値ln(x + 1)(x + 1の自然対数)

1 番目の引数に指定した値に 1 を加えた値の底を e とする対数を取得し戻り値として返します。

対数を取得する(4)

次のサンプルを見てください。

System.out.println(Math.log1p(10));  // 2.3978952727983707
System.out.println(Math.log1p(1));  // 0.6931471805599453
System.out.println(Math.log1p(0));  // 0.0

引数に指定した値に 1 を加えた値の自然対数を取得しました。

サンプルコード

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample6-1.java という名前で保存します。

class JSample6_1{
  public static void main(String[] args){
    System.out.println(Math.log(10));
    System.out.println(Math.log(1));
    System.out.println(Math.log(Math.E));

    System.out.println("-- --");

    System.out.println(Math.log10(100));
    System.out.println(Math.log10(10));
    System.out.println(Math.log10(1));

    System.out.println("-- --");

    System.out.println(Math.log1p(10));
    System.out.println(Math.log1p(1));
    System.out.println(Math.log1p(0));
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample6_1.java

その後で、次のように実行してください。

java JSample6_1

対数を取得する(5)

3 つのメソッドを使ってそれぞれ引数に指定した値の対数を取得しました。

-- --

Java で数値の対数を取得する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。