2016-08-09 3 views
0

Итак, у меня есть эта функция;вопросов с численным интегрированием функции с несколькими переменными в R

f <- function(a, b, q=1, f0=1000) { 
#calculate R: 
R <- (f0 - (a*b))*((q+1)/(a^(q+1))) 
return(ifelse(a<=100,(R * a^q) + b, 0)) } 

Я использую его в другой функции, funk2

funk2 <- function(a,x,b,l,r) { 
f(a-x,b) * exp(-(l/r)*(exp(-r*a)*(exp(r*x)-1))) } 

funk2 затем используется для оценки другой мульти-переменной функции funk1 с помощью интеграции;

funk1 <- function(x,b,l,r) { 
sapply(x, function (s) { 
integrate(funk2, lower = s, upper = s+56, x=s, b=b, l=l, r=r)$value }) } 

когда я пытаюсь оценить funk1

funk1(10,100,1,1) 

{или помещая любые другие значения} я получаю ошибку о том, что

Error in integrate(funk2, lower = s, upper = s + 100, x = s, b = b, 
non-finite function value 

Я не уверен, что я делаю неправильно Вот? Пожалуйста помоги! Спасибо заранее.

ответ

1

Проблема заключается в f(a-x,b) внутри funk2, когда a равно x тогда f(0,b) будет производить NaN. Например, если вы измените свой нижний уровень на lower = s*1.01, вы получите:

funk1(10,100,1,1) 
[1] 4464.721 
Смежные вопросы