逆逻辑函数/反向Sigmoid函数

sch*_*anq 10 java math fuzzy-logic

我目前正在用java编写一个模糊逻辑库.我找到了所有标准函数的方程 - Grade,inverseGrade,Triangle,Trapezoid,Gaussian.但是,我找不到sigmoid/logistic函数的反函数.

我编写逻辑函数的方式是java是:

//f(x) = 1/(1+e(-x))
public double logistic(double x){

   return (1/(1+(Math.exp(-x)));

}
Run Code Online (Sandbox Code Playgroud)

但我无法解决或在任何地方找到逆.我的代数/微积分能力相当有限,因此我无法解决函数的反函数.

任何提示或指示都将是一个很大的帮助.

谢谢

tom*_*m10 19

如果

y = 1/(1+exp(-x))
Run Code Online (Sandbox Code Playgroud)

然后

x = ln(y/(1-y))
Run Code Online (Sandbox Code Playgroud)

  • @Ethan:它们是一样的,因为 -ln(x)=ln(1/x) 。 (4认同)
  • 不应该是“x = -ln((1-y)/y)”吗? (3认同)
  • 是的,`ln`是自然对数,所以`ln(e)= 1`.我认为在Java中,这是Math.log,虽然你想要验证,因为我不是Java专家(要么检查文档,要么只检查`Math.log(e)= 1`就足够了) . (2认同)

小智 16

只需完成以下步骤:

y = 1/(1 + exp(-x))

1 + exp(-x) = 1/y

exp(-x) = 1/y - 1

exp(-x) = 1/y - y/y

exp(-x) = (1 - y)/y

ln(exp(-x)) = ln((1 - y)/y)

-x = ln((1 - y)/y)

x = -ln((1 - y)/y)

x = ln(y/(1 - y))
Run Code Online (Sandbox Code Playgroud)