我正在使用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
引用显示如下:
- 乐趣(x,y,...)
- FUN(X,Y)
- .tensor(xmin,xmax,theL,thetaR,phiB,phiT,FUN,phiBvar, phiTvar,矢量化=矢量化,单数=单数)
- integral2(fun2,xmin = 0,xmax = 1,ymin = 0,ymax = 1,a = 1)
我不知道FUN(X,Y)
是什么,但是看起来它的产品...
失去了{{1}}。
这是怎么回事?
答案 0 :(得分:2)
a
与abstol
的{{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
之前放置了点点,那么这将不是问题。 abstol
与integral2a
相同,只不过点点点位于integral2
之后。
ymax