[R] Problem to solve an integral equation

David Winsemius dwinsemius at comcast.net
Tue Dec 17 19:58:16 CET 2013


On Dec 17, 2013, at 8:53 AM, Aurélien Philippot wrote:

> Dear R experts,
> 
> I am trying to find numerical solutions for an integral equation.
> 
> 
> Here is an example:
> 
> I started by defining the integrand, as a function of x and C, where x is
> the variable of integration and C is the parameter I am interested in:
> 
> 
> integrand<- function(C,x){-((100000*x)^(-1)-(1000*x+C)^(-1))*
> 1/(0.20*sqrt(2*pi))*exp(-0.5*(x-0.10)/(0.20))^2)}

Error: unexpected ')' in:
"integrand<- function(C,x){-((100000*x)^(-1)-(1000*x+C)^(-1))*
1/(0.20*sqrt(2*pi))*exp(-0.5*(x-0.10)/(0.20))^2)"

Taking out the last parenthesis resulted in a variety of error messages including:

> output(0)
Error in integrate(integrand, C = C, lower = 0, upper = Inf) : 
  extremely bad integrand behaviour
> output(-10)
Error in integrate(integrand, C = C, lower = 0, upper = Inf) : 
  the integral is probably divergent



> Then, I integrate with respect to x, and define an objective function
> (output) with respect to C:
> 
> 
> output<- function(C) integrate(integrand, C=C, lower=0, upper=Inf)$value
> 
> 

Generally these problems are solved with the use of something along the lines of 

    sapply( seq(...), output)  # across an appropriate domain

Or using the `Vectorize` function.

But since you did not supply tested code for the integrand, I am not proceeding further.

-- 
david.


> I would like all the values of C (if any) for which the integral is equal
> to 0.
> 
> I did the following:
> 
> 
> library(rootSolve)
> 
> uniroot.all(output, c(0,1000000))
> 
> 
> but that does not work ("evaluation of function gave a result of wrong
> length"). I cannot either plot the function using plot or curve. I don't
> understand what is going on?
> 
> Thanks in advance for any advice!
> 
> Aurelien
-- 

David Winsemius
Alameda, CA, USA



More information about the R-help mailing list