[英]Gamma Function in R
我正在尝试使用以下规则从头开始实现伽马函数:
这个条件使我得到以下更简化的条件
我的代码看起来像这样,但我似乎无法使其适用于符合第 8 点标准的值。
gama <-function(z){
fgama <- function(x)
{
x**(z-1)*exp(-x)
}
functie <-integrate(fgama,0,Inf)
if(z==1/2)
{
return (sqrt(pi))
}
if(isNatural(z))
{
return(factorial(z-1))
}
if(z%%2==0.5 || z%%2==1.5){
return((z-1)*gama(z-1))
}
else
{
while(z > 1)
{
n <- (z-1)*gama(z-1)
}
return(functie)
}
}
print(gama(4.3))
它给出了这个错误:
Error in (z - 1) * gama(z - 1) : non-numeric argument to binary operator
你可以试试下面的代码
fg <- function(z) {
integrate(function(x) exp(-x) * x^(z - 1), 0, Inf)
}
你会看到
> fg(10)
362880 with absolute error < 0.025
> gamma(10)
[1] 362880
> fg(1.5)
0.8862265 with absolute error < 2.5e-06
> gamma(1.5)
[1] 0.8862269
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.