【发布时间】:2018-07-22 06:44:26
【问题描述】:
Gamma 函数不应将任何负值作为参数。看看下面发生奇怪事情的代码。这是R的一些问题吗?
我正在使用函数 optim 来优化一些函数,其中包含:
gamma(sum(alpha))
关于alpha。 R 返回负数alpha。
> gamma(sum(alpha))
[1] 3.753+14
>sum(alpha)
[1] -3
gamma(-3)
[1] NaN
Warning message:
In gamma(-3) NaN's produced.
谁能解释一下?或者有什么优化建议?
谢谢!
【问题讨论】:
-
-3 是一个极点,因此当 x 趋向于 -3 时,gamma 函数将是无穷大。请注意
sum(alpha)不是-3只需简单地执行sum(alpha)==-3它会给你错误。由于sum(alpha)在技术上接近-3 但不是-3,identical(sum(alpha),-3) -
看来大家现在都需要阅读
?gamma帮助页面了。 -
来自帮助:
The gamma function is defined by (Abramowitz and Stegun section 6.1.1, page 255) Γ(x) = integral_0^Inf t^(x-1) exp(-t) dt for all real x except zero and negative integers (when NaN is returned). -
R -3 不是整数类型。看起来
sum(alpha)在-3L-0.0000000000000004附近 -
谢谢!所以 Gamma 函数是为负数定义的,除了负整数。
标签: r nan gamma-function