Question:

I am trying to solve an integral in R. However, I am getting an error when I am trying to solve for that integral.

The equation that I am trying to solve is as follows:

```
$$ C_m = \frac{{abs{x}}e^{2x}}{\pi^{1/2}}\int_0^t t^{-3/2}e^{-x^2/t-t}dt $$
```

<img alt="enter image description here" class="b-lazy" data-src="https://i.stack.imgur.com/Bka7l.png" data-original="https://i.stack.imgur.com/Bka7l.png" src="https://etrip.eimg.top/images/2019/05/07/timg.gif" />

The code that I am using is as follows:

```
a <- seq(from=-10, by=0.5,length=100)
## Create a function to compute integration
Cfun <- function(XX, upper){
integrand <- function(x)x^(-1.5)*exp((-XX^2/x)-x)
integrated <- integrate(integrand, lower=0, upper=upper)$value
(final <- abs(XX)*pi^(-0.5)*exp(2*XX)*integrated) }
b<- sapply(a, Cfun, upper=1)
```

The error that I am getting is as follows:

```
Error in integrate(integrand, lower = 0, upper = upper) :
the integral is probably divergent
```

Does this mean I cannot solve the integral ?

Any possible ways to fix this problem will be highly appreciated.

Thanks.

Answer1:You could wrap the call to `Cfun`

in a try statement

```
# note using `lapply` so errors don't coerce the result to character
b <- lapply(a, function(x,...) try(Cfun(x, ...), silent = TRUE), upper = 1)
```

If you wanted to replace the errors with `NA`

values and print a warning that the integration threw an error

```
Cfun <- function(XX, upper){
integrand <- function(x)x^(-1.5)*exp((-XX^2/x)-x)
int <- try(integrate(integrand, lower=0, upper=upper), silent = TRUE)
if(inherits(int ,'try-error')){
warning(as.vector(int))
integrated <- NA_real_
} else {
integrated <- int$value
}
(final <- abs(XX)*pi^(-0.5)*exp(2*XX)*integrated) }
```

<hr /><h2>Edit (facepalm moment)</h2>
Your error arises because your function is not defined when `t=0`

(you divide by t within the integrand).

```
Cfun <- function(XX, upper){
integrand <- function(x)x^(-1.5)*exp((-XX^2/x)-x)
# deal with xx=0
if(isTRUE(all.equal(XX, 0)){
warning('The integrand is not defined at XX = 0')
return(NA_real_)
}
# deal with other integration errors
int <- try(integrate(integrand, lower=0, upper=upper), silent = TRUE)
if(inherits(int ,'try-error')){
warning(as.vector(int))
integrated <- NA_real_
} else {
integrated <- int$value
}
(final <- abs(XX)*pi^(-0.5)*exp(2*XX)*integrated) }
```