On Thu, Aug 23, 2007 at 03:44:36PM -0700, Scott Stark wrote: > Please note clarifications in <<>> below. My apologies for any confusion. > Thanks again, > Scott > > ---------- Forwarded message ---------- > From: Scott Stark <[EMAIL PROTECTED]> > Date: Aug 23, 2007 1:03 PM > Subject: Expedite scalar f(x) evaluation over vectors > To: [EMAIL PROTECTED] > > Dear R community, > > I am trying to code a fairly complex equation for optim(). My current > approach is too slow for optim(). > > I have a function that takes a double integral (hopefully correctly) across > two terms, e.g., > > <<note replacement of example function by hypothetical f(x,y)>> > > doubleint <- function(c1,c2) {integrate(function(y) { > sapply(y, function(y) { > integrate(function(x) {f(x,y)}, boundsx[1], boundsx[2])$value > }) > }, boundsy[1],boundsy[2]) > } > > <<I do not have a closed form for the real function>>
I assume you're trying to find the optimal c1 and c2. You could try varying the tolerance to integrate, initially allowing a rough approximation of your integral for the first steps until you get near an optimum, and then re-running the optimize on a much higher tolerance. For example, set your maximum subdivisions to 10, run the optimize, then set to 20 and run the optimize from the endpoint of the last run. When the optimal point stops moving, call it good?? The next approach I'd try is to be more fancy about your mathematics, by finding an approximate closed form for your function that was analytically integrable, perhaps in a computer algebra system like maxima. -- Daniel Lakeland [EMAIL PROTECTED] http://www.street-artists.org/~dlakelan ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.