R积分2函数不接受xmax参数

时间:2019-02-24 04:21:10

标签: r

我正在尝试使用R pracma软件包中的积分2函数对以下双整数进行数值评估。对于那些对上下文感兴趣的人,它与欧拉问题“毕达哥拉斯的蚂蚁”有关。以下是我尝试过的代码段:

library(pracma)

f <- function(x, y) (2*pi - pi/2 - atan((40-y)/x) - atan((30-x)/y))/(2*pi)

xmin <- 0

xmax <- function(y) (30 - 0.75*y)

ymin <- 0

ymax <- 40

prob_integral <- integral2(f, xmin, xmax, ymin, ymax)

它返回以下错误消息:

> Error in integral2(f, xmin, xmax, ymin, ymax) :    is.numeric(xmax) is
> not TRUE

我已经尝试了他们的示例代码,并且可以正常工作。

f <- function(x, y) sqrt(1 -x^2 - y^2)

xmin <- 0; xmax <- 1

ymin <- 0; ymax <- function(x) sqrt(1 - x^2)

I <- integral2(f, xmin, xmax, ymin, ymax)
  

I$Q # 0.5236076 - pi/6 => 8.800354e-06

我想知道我的代码是否由于某些点无法使用积分中的arctan函数进行评估而无法正常工作。例如(0,40),(30,0)。如果是这样,我可以使用什么替代解决方案?

感谢您的帮助!

布莱恩

1 个答案:

答案 0 :(得分:0)

我做了些改动,并且按预期工作。我认为该函数的作用是首先将相对于y的f(x,y)从ymin = 0到ymax = 40 *(30-x)/ 30进行积分。这将提供一个仅取决于x的新函数(例如g(x))。然后,将x的g(x)积分从0到30进行积分。由于只能用函数表示y边界,因此它必须首先对y进行内部积分。请让我知道这是否有意义。谢谢!

library(pracma)

f <- function(x, y) (2*pi - pi/2 - atan((40-y)/x) - atan((30-x)/y))/(2*pi)
xmin <- 0;
xmax <- 30;
ymin <- 0;
ymax <- function(x) 40*(30-x)/30;

prob_integral <- integral2(f, xmin, xmax, ymin, ymax)