1

ここで質問します。お役に立てば幸いです。

double 値に使用するこのコードの行に沿って何かを使用して、bigdecimal のシグモイド値を計算しようとしています。

double a = 1 / (1 + Math.exp("a"));

ただし、bigdecimal データ型に対して同じ操作を実行したいのですが、bigdecimal に対してこれを行うコードが見つかりません。

Math.exp(x) 

bigdecimal でこのシグモイド値を提供する短いコードはありますか

前もって感謝します

4

2 に答える 2

2

テイラーの公式を使用するBayesian MCMC BigDecimalUtils.exp()を見てください。

BigDecimal exponential = BigDecimalUtils.exp(BigDecimal.valueOf(3.2), 4);
于 2012-12-09T02:31:35.147 に答える
0

Math.exp(x)Taylor/Maclaurin 級数展開を使用して指数関数を近似できます。

exp(x) = sum_n=0^infinity x^n / (n!)これは次のようになります:

exp(x) = 1 + x + (x^2)/2! + (x^3)/3! + (x^4)/4! + ...

これは無限に多くの項の合計ですが、最初のいくつかの項で停止して近似解を得ることができますが、項を追加すればするほど、答えは近くなります。

上記の式で、x!は の階乗を意味しxます。x! = x * (x - 1) * (x - 2) * ... * 1

に必要なすべての操作 ( adddividepow) が定義されていBigDecimalます。

編集:シグモイド関数には独自のマクローリン級数近似があることがわかりました:

1/(1 + exp(-x)) = 1/2 + 1/4 * x - 1/48 * x^3 + 1/480 x^5 - ...

于 2012-12-09T02:27:29.653 に答える