【发布时间】:2021-06-17 20:09:54
【问题描述】:
我正在尝试使用uniroot() 函数查找以下函数的根(基于 Gamma (gamma()) 函数):
cv = 0.056924/1.024987^2
fx2 = function(theta, eta){
p1 = 1 - 2/(theta*(1-eta))
p2 = 1 - 1/(theta*(1-eta))
return(( gamma(p1)/(gamma(p2))^2 ) - (cv+1) )
}
这个函数给了我下面的情节:
v = seq(0, 1, 0.01)
plot(v, fx2(3.0, v), type='l' )
在我看来这个函数的根接近0.33,但是uniroot()函数没有找到根,返回如下结果:
uniroot(fx2, interval = c(0,0.3), theta=3 )
uniroot(fx2, interval = c(0, 0.3), theta = 3) 中的错误: f() 端点的值不是相反的符号
如何找到这个函数的根?还有其他算法更准确的包吗?
【问题讨论】:
-
我认为这是一个极,而不是一个根。
-
那个“根”似乎是由
plot()连接垂直渐近线上的点造成的错觉。 -
fx2(3.0, 1/3) == NaN