Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R Gamma函数返回不稳定值?_R_Nan_Gamma Function - Fatal编程技术网

R Gamma函数返回不稳定值?

R Gamma函数返回不稳定值?,r,nan,gamma-function,R,Nan,Gamma Function,Gamma函数不应将任何负值作为参数。看看下面发生奇怪事情的代码。这是R的问题吗 我使用functionoptim优化了一些函数,包括: 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. 有人能解释一下吗?或者对优化有什么建议

Gamma函数不应将任何负值作为参数。看看下面发生奇怪事情的代码。这是R的问题吗

我使用function
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.
有人能解释一下吗?或者对优化有什么建议

谢谢

Gamma函数在负整数参数值处“未定义”,因此R不返回数字(
NaN
)。“奇怪”行为的原因是R中数字的十进制表示形式。如果数字与最接近的整数相差不大,则在打印过程中R将其四舍五入(事实上,当您键入
alpha
时,R调用的是
print(alpha)
。请参见下面的此类行为示例

gamma(-3)
# [1] NaN
# Warning message:
#  In gamma(-3) : NaNs produced
x <- -c(1, 2, 3) / 2 - 1e-15
x
# [1] -0.5 -1.0 -1.5
sum(x)
# [1] -3
gamma(sum(x))
# [1] 5.361428e+13
curve(gamma, xlim = c(-3.5, -2.5)) 
gamma(-3)
#[1]南
#警告信息:
#γ(-3):产生的NaN

x-3是一个极点,因此当x趋向于-3时,伽马函数将是无穷大。请注意,
sum(alpha)
不是
-3
只要简单地做
sum(alpha)=-3
它就会给你假。因为
sum(alpha)
在技术上接近-3,但不是-3,
相同(sum(alpha),-3)
现在似乎每个人都需要阅读
?gamma
帮助页面。在帮助中:
gamma函数由(Abramowitz和Stegun第6.1.1节,第255页)Γ(x)=整数_0^Inf t^(x-1)exp(-t)dt定义,适用于所有实x,零整数和负整数除外(返回NaN时)R-3中的。
不是整数类型。看起来
sum(alpha)
接近
-3L-0.0000000000000004
谢谢!所以伽玛函数是为负数定义的,除了负整数。