Uniroot Верхнее и Нижнее значения в R

Я пытаюсь найти решение следующего, используя uniroot() в .

      library(rootSolve)
set.seed(2)
y=rgamma(10,5,2)
myfun=function(y,t)as.numeric(integrate(function(x){ ((x^4) * exp(-x/2))/768 },0,upper=2)[1])-t
myfun(y, y)
final_fun=function(y)uniroot(myfun,c(-2, 2),tol=0.01,t=y)
final_fun(y)

Однако я получаю следующие ошибки.

       Error in uniroot(myfun, c(-2, 2), tol = 0.01, t = y) : 
  f() values at end points not of opposite sign 

Я пробовал несколько значений и пределов, но Rдает те же ошибки. У меня вопрос, как найти правильный upper и lowerзначения? Спасибо за помощь.

1 ответ

Я не думал, что аргумент y = t будет работать, поэтому я определил функцию по-другому, сделав ее функцией одной переменной (поскольку аргумент y использовался только для предоставления значения для t внутри этой функции):

      myfun=function(y)as.numeric(integrate(function(x){ ((x^4) * exp(-x/2))/768 },0,upper=2)[1])-y

 final_fun=function(y)uniroot(myfun,interval =c(-2, 2), tol=0.01)
 final_fun(y)
#----------------------
$root
[1] 0.00366

$f.root
[1] -1.7e-16

$iter
[1] 2

$init.it
[1] NA

$estim.prec
[1] 0.005
Другие вопросы по тегам