将其他参数传递给pracma :: integral2

时间:2018-10-06 14:49:03

标签: r parameter-passing integral

我正在使用integral2集成有时需要其他参数的函数,但是fun1 <- function(x, y) exp(-x^2 - y^2) fun2 <- function(x, y, a) (1 / a) * exp(-x^2 - y^2) 似乎无法识别我提供的参数。 考虑以下两个功能:

integral2(fun1,
      xmin = 0,
      xmax = 1,
      ymin = 0,
      ymax = 1)$Q

如果我再跑步

   integral2(fun2,
          xmin = 0,
          xmax = 1,
          ymin = 0,
          ymax = 1,
          a = 1)$Q

我得到预期的0.5577463。但是如果我运行:

Error in fun(x, y, ...) : argument "a" is missing, with no default 

我得到:

.tensor

引用显示如下:

  
      
  1. 乐趣(x,y,...)
  2.   
  3. FUN(X,Y)
  4.   
  5. .tensor(xmin,xmax,theL,thetaR,phiB,phiT,FUN,phiBvar,   phiTvar,矢量化=矢量化,单数=单数)
  6.   
  7. integral2(fun2,xmin = 0,xmax = 1,ymin = 0,ymax = 1,a = 1)
  8.   

我不知道FUN(X,Y)是什么,但是看起来它的产品...失去了{{1}}。

这是怎么回事?

1 个答案:

答案 0 :(得分:2)

aabstol的{​​{1}}参数匹配。只需将integral2重命名为a中的其他名称(如下面的解决方案1所示),或者显式指定fun2,这样就不会像下面的解决方案2那样令人困惑。

abstol

请注意,如果积分2在点{em> library(pracma) # solution 1 fun2aa <- function(x, y, aa) (1 / aa) * exp(-x^2 - y^2) integral2(fun2aa, xmin = 0, xmax = 1, ymin = 0, ymax = 1, aa = 1)$Q ## [1] 0.5577463 # solution 2 fun2 <- function(x, y, a) (1 / a) * exp(-x^2 - y^2) # same as in question integral2(fun2, xmin = 0, xmax = 1, ymin = 0, ymax = 1, abstol = 0, # added a = 1)$Q ## [1] 0.5577463 之前放置了点点,那么这将不是问题。 abstolintegral2a相同,只不过点点点位于integral2之后。

ymax