如何与+inf 进行双重集成?

How to double integrate with +inf?

所以我在 R 中有这段代码试图使用 integral2 对函数 f(x,y) 进行双重积分,其中一个域是 (0.5 , +inf),但是integral2 不支持(因为无限)。我的问题是:你知道让它发挥作用的方法吗?

 fprob8 <- function(a , b)
{
  f <- function(x , y)
  {
    densGamma <- function(x)
    {
      numitor <- b ^ a * fgam(a)
      numarator <- x ^ (a - 1) * exp(-x / b)
      return (numarator / numitor)
    }

    densBeta <- function(x)
    {
      numitor <- fbet(a , b)
      numarator <- (1 - x) ^ (b - 1) * x ^ (a - 1)
      return (numarator/numitor)
    }

    return (densGamma(x) * densBeta(y)) 
  }

  ymin <- function(x) # limita superioara pentru cea de-a doua integrala
  {
    return (min(x - 0.5),1)
  }

  I <- integral2(f, 0.5 , Inf , ymin , 1)
  return(I)
}

使用 cubature 包。它计算多个积分,允许无限边界。

这是一个例子:

library(cubature)
f <- function(x) exp(-x[1]-x[2])
pcubature(f, c(0,0), c(Inf,Inf))$integral
# 1

library(pracma)
f2 <- function(x,y) f(c(x,y))
integral2(f2, 0, 1000, 0, 1000, vectorized = FALSE)$Q
# 1