Mathクラスには、数学関数を操作するためのメソッドが含まれています。この記事では、Java のMath.exp()メソッドについて説明します。数値e をdouble 値で累乗して返します。
指数法則に従うプロセスには、同じ時間間隔でパラメータが同じ回数変化するという共通の特性があります。たとえば、液体の冷却: 空気と液体の温度差が大きければ大きいほど、より速く冷却されます。山を転がる雪玉は大きくなるほど、転がり落ちる速度が速くなります。
指数関数とは: 非常に短い数学の入門
注: このセクションでは、 Math.exp()メソッドの背後にある数学について説明します。すでに知っている場合、または本質を理解せずにこの方法を使用したい場合は、次のポイントに進んでください。指数は関数y = e xです。ここで、e はおよそ 2.718281828459045 という扱いにくい数学的数値です。この数値は有名な円周率と同じくらい重要ですが、主に数学者、プログラマー、統計を扱う人々によって知られています。ちなみにオイラー数という名前があります。また、eは自然対数の底です。指数関数のグラフは次のとおりです。
Java の Math.exp() メソッド
さて、Java に戻りましょう。Mathクラスのdouble exp(double x)メソッドは、点xにおける指数関数の値を計算します。つまり、数値eのx乗を返します。より正確には、一定の精度で近似値を返します。オイラー数e のdouble 値の累乗を返します。つまり、Math.exp(2.0) = e 2.0 (およそ 7.34) です。メソッドの宣言は次のとおりです。
double exp(double x)
ここで、x は数値eを累乗する次数です。例を挙げてみましょう。
public class ExpExample {
public static void main(String[] args) {
int x1 = 2;
double x2 = 0.5;
double x3 = 1;
System.out.println("exponential function in " + x1 + " = " + Math.exp(x1));
System.out.println("exponential function in " + x2 + " = " + Math.exp(x2));
System.out.println("exponential function in " + x3 + " = " + Math.exp(x3));
}
}
出力は次のとおりです。
2 の指数関数 = 7.38905609893065 0.5 の指数関数 = 1.6487212707001282 1.0 の指数関数 = 2.718281828459045
いくつかの特殊なケース
数学には、正と負の無限大だけでなく、不定形の概念もあります。正の数を 0.0 で割ると正の無限大が得られ、負の数を割ると負の無限大が得られます。不定形はさまざまな方法で取得できます。たとえば、ゼロをゼロで除算したり、無限大を無限大で除算しようとしたとします。Java には、 Double.NaN (やや不定形式)、Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITYなど、Doubleクラスの特別な定数があります。Math.exp()メソッドは、次の 3 つの概念に直面した場合に特定の方法で動作します。- 引数が NaN の場合、結果も NaN になります。
- 引数が正の無限大の場合、結果も正の無限大になります。
- 引数が負の無限大の場合、結果は正のゼロになります。
public class ExpSpecialCases {
public static void main(String[] args) {
double positiveInfinity = Double.POSITIVE_INFINITY;
double negativeInfinity = Double.NEGATIVE_INFINITY;
double nan = Double.NaN;
//The argument is positive infinity, the output is positive infinity
System.out.println(Math.exp(positiveInfinity));
//The argument is negative infinity, the output is zero
System.out.println(Math.exp(negativeInfinity));
//The argument is NaN, the output is NaN
System.out.println(Math.exp(nan));
}
}
出力は次のとおりです。
無限大 0.0 NaN
GO TO FULL VERSION