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