2016-08-09 56 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)內部funk2a等於x然後f(0,b)會產生NaN。例如,如果將您的更低版本更改爲lower = s*1.01,您會得到:

funk1(10,100,1,1) 
[1] 4464.721