PHPのlog1p()関数とは?定義・構文・使用例をわかりやすく解説
定義と使い方
「1p」は「1 plus(1+)」を意味しています。log1p()関数は、「1 + 数値」の自然対数(底:e)を計算する関数です。
つまり、log1p(x) = log(1+x) という関係になります。
log1p()の特徴は、xが非常に小さい場合でも正確な値を計算できる点です。通常のlog(1+x)では、xが極端に小さいと「1+x」がほぼ「x」と見なされてしまい、精度が落ちてしまいますが、log1p()はそのような場合でも高精度な計算結果を返します。
構文
log1p ( float $arg ) : float
パラメータ
| 番号 | パラメータと説明 |
|---|---|
| 1 | arg 自然対数を計算する対象の数値 |
戻り値
PHPのlog1p()関数は、引数に1を加えた値の自然対数、すなわち log(1 + arg) を返します。
対応するPHPバージョン
この関数は、PHP 4.x、PHP 5.x、PHP 7.x の各バージョンで利用可能です。
使用例1
次の例では、100のlog1p()を計算し、通常のlog()関数を使った結果と比較しています。
<?php
$arg=100;
echo "using log() to calculate log(1+". $arg.")=" . log(1+$arg) . "\n";
echo "log1p(" . $arg . ")=" . log1p($arg);
?>
出力結果
上記のコードを実行すると、次のような結果になります。
using log() to calculate log(1+100)=4.6151205168413
log1p(100)=4.6151205168413
大きな数値の場合は、どちらの方法でも同じ結果が得られることがわかります。
使用例2
通常のlog(0)は負の無限大(-infinity)を返しますが、log1p(0)は0を返します。
<?php
$arg=0;
echo "log(" . $arg . ")=" . log($arg) . "\n";
echo "log1p(" . $arg . ")=" . log1p($arg);
?>
出力結果
log(0)=-INF
log1p(0)=0
使用例3
非常に小さな数値に対しては、log1p()の方がより正確な結果を返します。
<?php
$arg=0.000005;
echo "log(" . $arg . ")=" . log($arg) . "\n";
echo "log1p(" . $arg . ")=" . log1p($arg);
?>
出力結果
log(5.0E-6)=-12.20607264553
log1p(5.0E-6)=4.9999875000744E-6
この例からも、微小な数値に対してはlog1p()を使うことで数学的に正しい log(1+x) の値が得られることが確認できます。
使用例4
同様に、sqrt(-1)はNAN(非数)を返すため、そのlog1p()もNANを返します。
<?php
$arg=sqrt(-1);
echo "log(" . $arg . ")=" . log($arg) . "\n";
echo "log1p(" . $arg . ")=" . log1p($arg);
?>
出力結果
log(NAN)=NAN
log1p(NAN)=NAN
まとめ
log1p()関数は、特に小さな数値を扱う際の精度面で優れた関数です。金融計算や科学技術計算など、微小な値の対数変換が必要な場面では、通常のlog(1+x)の代わりにlog1p(x)を使用することをおすすめします。
-
PHPのlog1p()関数とは?定義・構文・使用例をわかりやすく解説
定義と使い方「1p」は「1 plus(1+)」を意味しています。log1p()関数は、「1 + 数値」の自然対数(底:e)を計算する関数です。つまり、log1p(x) = log(1+x) という関係になります。log1p()の特徴は、xが非常に小さい場合でも正確な値を計算できる点です。通常のlog(1+x)では、xが極端に小さいと「1+x」がほぼ「x」と見なされてしまい、精度が落ちてしまいますが、log1p()はそのような場合でも高精度な計算結果を返します。構文log1p ( float $arg ) : floatパラメータ番号パラメータと説明1arg自然対数を計算する対象の数値戻り値PH
-
PHPのlog1p()関数とは?使い方とサンプルコードを徹底解説
PHPのlog1p()関数は、log(1 + 数値) を計算するための数学関数です。この関数の大きな特徴は、引数として渡す数値がゼロに近い場合でも、高精度で計算結果を返せる点にあります。通常の log(1+x) の計算では、x が極端に小さい値だと浮動小数点数の精度の関係で誤差が生じやすくなりますが、log1p() を使えばその問題を回避できます。構文log1p(val)パラメータval − 計算対象となる数値を指定します。戻り値log1p() 関数は、log(1 + 数値) の計算結果を返します。数値がゼロに非常に近い場合でも、精度を保ったまま計算されるのが特徴です。使用例まずは、log1p