R中多变量函数的数值积分问题
issues with numerical integration of multi-variable function in 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
我不确定我做错了什么?请帮忙!
提前致谢。
问题出在funk2
里面的f(a-x,b)
,当a
等于x
时,f(0,b)
会产生NaN
。例如,如果您将 lower 修改为 lower = s*1.01
,您将得到:
funk1(10,100,1,1)
[1] 4464.721
所以,我有这个功能;
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
我不确定我做错了什么?请帮忙! 提前致谢。
问题出在funk2
里面的f(a-x,b)
,当a
等于x
时,f(0,b)
会产生NaN
。例如,如果您将 lower 修改为 lower = s*1.01
,您将得到:
funk1(10,100,1,1)
[1] 4464.721