R中多变量函数的数值积分问题

时间:2016-08-09 19:55:49

标签: r functional-programming integration

所以,我有这个功能;

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 个答案:

答案 0 :(得分:1)

f(a-x,b)等于funk2时,问题出现在a x内,f(0,b)将产生NaN。例如,如果您将下限修改为lower = s*1.01,则会获得:

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