[R] Integration of two dimension function

Petr Savicky savicky at cs.cas.cz
Fri May 18 08:51:42 CEST 2012


On Thu, May 17, 2012 at 09:43:13PM -0400, li li wrote:
> Dear all,
>    I have a function f <- function(x,y,c){as.numeric(x*y < c) }
>   I need to solve the value of c so that when I take the integral of
> the function f from 0.2 to 0.8 with respect to x and from 0 to 1
> with respect to y, the integral equal some prefixed value, say 0.025.

Hi.

The function f() is a 0/1 function. So, the integral may be 
reformulated as the area of the set of points (x, y) satisfying

  0.2 <= x <= 0.8
  0   <= y <= 1
  x*y <= c

In other words, it is the univariate integral of the function

  g(x) = min(1, c/x)

over the range x \in [0.2, 0.8]. This is 
     
  G <- function(cc) {
    ifelse(cc <= 0.2, cc*log(4), # cc*(log(0.8) - log(0.2))
           ifelse(0.2 < cc & cc < 0.8, (cc - 0.2) + cc*(log(0.8) - log(cc)), 0.8 - 0.2))
  }

What i get is that G(cc) = 0.025 for cc = 0.025/log(4).

I hope there are not too may errors in this calculation.

Petr Savicky.



More information about the R-help mailing list