R lgamma用户定义函数返回无限值
这将计算x-1的对数!要返回整数的lgamax值,但我的函数log_gamma仅在x=171时工作,对于x>171,它将返回Inf。如何解决此问题R lgamma用户定义函数返回无限值,r,user-defined-functions,factorial,R,User Defined Functions,Factorial,这将计算x-1的对数!要返回整数的lgamax值,但我的函数log_gamma仅在x=171时工作,对于x>171,它将返回Inf。如何解决此问题 log_gamma <- function(x){ y <- 1 if (x < 1)( return("Infinity") ) if (x == 1)( return(0) ) x <- x-1 for (i in 1:x){ y <- y*i } r
log_gamma <- function(x){
y <- 1
if (x < 1)(
return("Infinity")
)
if (x == 1)(
return(0)
)
x <- x-1
for (i in 1:x){
y <- y*i
}
return(log(y))
}
您当前的解决方案首先计算171!这是一个相当大的数字。相反,使用loga*b=loga+logb这一事实将其计算为总和
log_gamma <- function(x){
y <- 1
if (x < 1)(
return("Infinity")
)
if (x == 1)(
return(0)
)
x <- x-1
for (i in 1:x){
y <- y + log(i)
}
return(y)
}
log_gamma(171)
[1] 707.5731
log_gamma(172)
[1] 712.7147
log_gamma(1000)
[1] 5906.22
非常感谢你