[R] vectorized uni-root?

R. Michael Weylandt michael.weylandt at gmail.com
Thu Nov 8 18:53:06 CET 2012


On Thu, Nov 8, 2012 at 3:05 PM, ivo welch <ivo.welch at gmail.com> wrote:
> dear R experts--- I have (many) unidimensional root problems.  think
>
>   loc.of.root <- uniroot( f= function(x,a) log( exp(a) + a) + a,
> c(.,9e10), a=rnorm(1) ) $root
>
> (for some coefficients a, there won't be a solution; for others, it
> may exceed the domain.  implied volatilities in various Black-Scholes
> formulas and variant formulas are like this, too.)
>
> except I don't need 1 root, but a few million.  to get so many roots,
> I can use a for loop, or an lapply or mclapply.  alternatively,
> because f is a vectorized function in both x and a, evaluations for a
> few million values will be cheap.  so, one could probably write a
> clever bisection search here.
>
> does a "vectorized" uniroot exist already?

Not to my knowledge, but I think you're on track for a nice
quick-and-dirty if your function is cheap like the above. Make a 2D
grid of results with outer() and interpolate to find roots as needed.
For smooth objective functions, it will likely be cheaper to increase
precision than to loop over optimization routines written in R.

Cheers,
Michael




More information about the R-help mailing list