计算java中bigdecimal的sigmoid值

时间:2012-12-09 02:22:31

标签: java

在这里提问,如果你能提供帮助,我们将不胜感激。

我正在尝试使用我用于双值的代码行计算bigdecimal的sigmoid值

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

但是我想对bigdecimal数据类型执行相同的操作,但我找不到为bigdecimal执行此操作的代码

Math.exp(x) 

是否有任何短代码可以在bigdecimal上提供此sigmoid值

提前致谢

2 个答案:

答案 0 :(得分:2)

查看使用BigDecimalUtils.exp()的贝叶斯MCMC Taylor's formula

BigDecimal exponential = BigDecimalUtils.exp(BigDecimal.valueOf(3.2), 4);

答案 1 :(得分:0)

您可以使用Taylor / Maclaurin系列扩展近似指数函数Math.exp(x)

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

add定义了所有必要的操作(dividepowBigDecimal)。

编辑:事实证明Sigmoid函数有自己的Maclaurin series approximation

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