返回NaN而不是-1

时间:2014-03-17 10:00:43

标签: r

我正在尝试最大化一个函数,在我的R代码中,我使用以下函数来确保,我得到的值为A,介于-1和1之间:

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

问题在于,当我例如在x = 3000或某个其他极值处评估函数时,它返回NaN而不是-1,它应该是。

有没有办法写这个以确保,这不会发生?

感谢。

2 个答案:

答案 0 :(得分:6)

你可以做一点数学

enter image description here

这样, A = 1 - 2/(exp(x)+1)将完成这项工作。

x很大时,exp(x)等于Inf2/(exp(x)+1)为0。

这是R的一个非常方便的功能,但实现成本太高了。有时,这些都归咎于R的速度慢。

答案 1 :(得分:4)

logitprobit函数将返回01之间的值。您可以考虑使用hyperbolic tangent

(1 - exp(-2*x)) / (1 + exp(-2*x))

将返回-11之间的值。在您的情况下,当INF超过700时,您将除以x,从而返回NAN