Search code examples
rintegralnumerical-integration

How to solve "non-numeric argument.." error in numerical integration?


I want to calculate the following integral in R. enter image description here

I tried to use Vectorize and integrate functions but I got error
Error in (log(z)) * (InIntegl2) : non-numeric argument to binary operator

  fxyz= function(x,y,z) { (x*y*z)+z+x+2*y}
  InIntegl1 = Vectorize(function(x) { integrate(fxyz, 0,5)$value})
  InIntegl2 = Vectorize(function(y) { integrate( InIntegl1, 0,3)$value})
  InIntegl3 = Vectorize(function(z) { integrate((log(z))*(InIntegl2), 2,6)$value})
  Integral = integrate(InIntegl3 , 2, 6)$value

Solution

  • The first integral must be parameterized by y and z and the second by z. Then we can perform the final integration.

    int1 <- Vectorize(function(y, z) integrate(fxyz, 0, 5, y = y, z = z)$value)
    int2 <- Vectorize(function(z) integrate(int1, 0, 3, z = z)$value)
    integrate(function(z) log(z) * int2(z), 2, 6)$value
    ## [1] 2071.71