Javaでの対数の求め方まとめ:log, log10, log1p,その他の対数も

java対数 log
  • このエントリーをはてなブックマークに追加
  • Pocket

対数logの計算はそれほど登場するものではないだろう。

しかし、数値解析などでよく利用されるし、知っておいて損はない。

このページではJavaでの対数の出し方をまとめている。必要なタイミングで参考にして頂ければと思う。

Javaの対数の求め方

対数を求めるとは,数値aのn乗がbだとするとaとbからnを求めることだ。例えば、「10」を底とする1000の対数といえば,「10」の「3」乗が「1000」なので「3」になる。これを、対数を求めるという。

Javaで対数を求めるためにはMathクラスのlogメソッドを利用する。

書き方の基本は簡単だ。

対数 = Math.log(対象となる数値)

ただし、底を何に設定するかで関数は変わる。Javaでの対数を求めるための書き方の詳細を確認していこう。

自然対数を求めるlogメソッド

logメソッドの基本

logメソッドは自然対数を求めるメソッドだ。ご存知の通り、自然対数とは「e」を底にしたときの対数のことである。

引数に指定した値から自然対数を求める。引数に指定できる値はdouble型のみだ。

log(double a)

戻り値の型

public static double

内容

double値の自然対数(底:e)を戻す。

■下記は特例となる

  • 引数がNaN又はゼロより小さければ,結果はNaNになる。
  • 引数が正の無限大ならば,結果は正の無限大になる。
  • 引数が正のゼロまたは負のゼロならば,結果は負の無限大と同じになる。

計算結果は,正確な結果の1ulp以内でなければならない。さらに,詳しい説明がJavaのドキュメントにある。

引数:a – aの値

戻り値:aの自然対数。

Javaで対数を求めるサンプルプログラム

それでは実際にサンプルプログラムを確認してみよう。

実行結果

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

このプログラムは,扱うことのできる様々な値を持つ変数の対数を求めいている。

  • [1] 1000.0を変数:positiveValue1000に設定する。
  • [2] -1000.0を変数:negativeValue1000に設定する。
  • [3] 正のゼロを変数:positiveZeroに設定する。
  • [4] 負のゼロを変数:negativeZeroに設定する。
  • [5] 正の無限大を変数:positiveInfinityに設定する。
  • [6] NaNを変数:nanValueに設定する。
  • [7] positiveValue1000の自然対数を表示する。
  • [8] negativeValue1000の自然対数を表示する。
  • [9] nanValueの自然対数を表示する。
  • [10] positiveInfinityの自然対数を表示する。
  • [11] positiveZeroの自然対数を表示する。
  • [12] negativeZeroの自然対数を表示する。

常用対数を求めるlog10メソッド

log10メソッドの基本

log10メソッドの引数に指定した値から常用対数を求める。常用対数とは10を底にした対数だから、logの後に10がついた関数になっている。

引数に指定できる値はdouble型のみだ。

log10(double a)

戻り値の型

public static double

内容

double値の常用対数(底:10)を戻す。

以下の点以外は,logと同じだ。

■下記は特例となる

・引数が整数nで表した10のn乗に等しいなら,結果はnになる。

戻り値:aの常用対数。

から:1.5

Javaで常用対数を求めるサンプルプログラム

それでは実際にサンプルプログラムを確認してみよう。

実行結果

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

このプログラムは,扱うことのできる様々な値を持つ変数の常用対数を求めいている。

  • [1] 1000.0を変数:positiveValue1000に設定する。
  • [2] -1000.0を変数:negativeValue1000に設定する。
  • [3] 正のゼロを変数:positiveZeroに設定する。
  • [4] 負のゼロを変数:negativeZeroに設定する。
  • [5] 正の無限大を変数:positiveInfinityに設定する。
  • [6] NaNを変数:nanValueに設定する。
  • [7] positiveValue1000の常用対数を表示する。
  • [8] negativeValue1000の常用対数を表示する。
  • [9] nanValueの常用対数を表示する。
  • [10] positiveInfinityの常用対数を表示する。
  • [11] positiveZeroの常用対数を表示する。
  • [12] negativeZeroの常用対数を表示する。

引数に1を加えた値の自然対数を求めるlog1pメソッド

log1pメソッドの基本

log1pメソッドの引数に1を加えた値の自然対数を求める。1plusの意味だ。数学的には便利で、log(1.0+x) の浮動小数点評価よりも ln(1 + x) の実の結果に近くなる。

引数に指定できる値はdouble型のみだ。

log1p(double a)

戻り値の型

public static double

内容

引数に1を加えた合計値の自然対数(底:e)を戻す。

■下記は特例となる

  • 引数がNaN又は-1より小さければ,結果はNaNになる。
  • 引数が正の無限大ならば,結果は正の無限大になる。
  • 引数が-1ならば,結果は負の無限大になる。
  • 引数が正のゼロまたは負のゼロならば,結果は引数と同じになる。

戻り値:(a + 1)の自然対数。

後は,log10と同じだ。

Javaで引数+1の自然対数を求めるサンプルプログラム

それでは実際にサンプルプログラムを確認してみよう。

実行結果

サンプルプログラムの説明

それでは簡単にプログラムの解説をしてゆこう。

このプログラムは,扱うことのできる様々な値を持つ変数に1を加えた自然対数を求めいている。

  • [1] 1000.0を変数:positiveValue1000に設定する。
  • [2] -1000.0を変数:negativeValue1000に設定する。
  • [3] 正のゼロを変数:positiveZeroに設定する。
  • [4] 負のゼロを変数:negativeZeroに設定する。
  • [5] 正の無限大を変数:positiveInfinityに設定する。
  • [6] NaNを変数:nanValueに設定する。
  • [7] positiveValue1000の+1自然対数を表示する。
  • [8] negativeValue1000の+1自然対数を表示する。
  • [9] nanValueの+1自然対数を表示する。
  • [10] positiveInfinityの+1自然対数を表示する。
  • [11] positiveZeroの+1自然対数を表示する。
  • [12] negativeZeroの+1自然対数を表示する。

その他の対数はどうやって求めるか?

任意の底を持つ対数を求めるためのメソッドはない。対数の底の変換公式を使って求めることになる。

log

例えば底が5、真数が20であれば次のようになる。

double value = Math.log(20.0) / Math.log(5.0);

まとめ

このページではJavaで対数logを求めるためのメソッドについてまとめてきた。いかがだっただろうか?

logメソッドだけを知っているだけでも十分だが、便利な他二つのメソッドもできれば掴んでおこう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する