[R] using integrate with optimize nested in the integration

Sundar Dorai-Raj sundar.dorai-raj at pdf.com
Thu Jul 28 22:48:53 CEST 2005


Again, not a good example, since f is linear in n so the max will always 
be at 15.

Try this:

f <- function(x, n) -(x - 2.5 * n)^2 # max is at 2.5*n
g <- function(n) {
    o <- vector("numeric", length(n))
    for(i in seq(along = n))
      o[i] <- optimize(f, c(0, 15), maximum = TRUE, n = n[i])$maximum
    n * o
}
integrate(g, lower = 0, upper = 5)

# int_0^5 (2.5 * n^2) dn = 2.5/3 * 5^3 = 104.1667

--sundar


Gregory Gentlemen wrote:
> Thanks for the prompt reply.
> Your right, that was a weak example.
> Consider this one though:
>  
> f <- function(n,x) (x-2.5)^2*n
> g <- function(y) optimize(f,c(0,15), maximum=TRUE,x=y)$maximum*y
>  
> then if you try:
> integrate(g,lower=0,upper=5)
> it produces:
> Error in optimize(f, c(0, 15), maximum = TRUE, x = y) : 
>         invalid function value in 'optimize'
> 
> Any ideas? 
> My problem is a similar more complex function in which optimizaiton depends on the value of the integrator.
> 
> "Huntsinger, Reid" <reid_huntsinger at merck.com> wrote:
> In your example, f is a function, but
> optimize(f,c(0,15),maximum=TRUE)$maximum is just a number (the point at
> which f reaches its maximum value). I'm not sure what you want, but if you
> had say
> 
> f <- function(x,y) x^3 + yx + 1
> 
> and defined
> 
> g <- function(y) optimize(f,c(0,5),maximum=TRUE,y)$maximum
> 
> then g(t) is the x-value at which the function f(x,t) (over x in (0,5))
> reaches its maximum for this fixed t. That could then be integrated. 
> 
> Reid Huntsinger
> 
> -----Original Message-----
> From: r-help-bounces at stat.math.ethz.ch
> [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Gregory Gentlemen
> Sent: Thursday, July 28, 2005 3:58 PM
> To: r-help at stat.math.ethz.ch
> Subject: [R] using integrate with optimize nested in the integration
> 
> 
> Hi guys
> im having a problem getting R to numerically integrate for some function, 
> say f(bhat)*optimize(G(bhat)), over bhat. Where id like to integrate this
> over some finite range, so that here as we integrate over bhat optimize
> would return a different optimum.
> 
> For instance consider this simple example for which I cannot get R to return
> the desired result:
> 
> f <- function(bhat) exp(bhat)
> g <- function(bhat) optimize(f,c(0,15),maximum=TRUE)$maximum*bhat
> integrate(g,lower=0,upper=5)
> which returns:
> 187.499393759 with absolute error < 2.1e-12
> 
> However this is an approximation of : 15*(5^2/2 - 0)=187.5, not what I
> intended on getting. Its not identifying that f is a function of bhat ...
> any advice or ways I can get integrate to not treat this as a constant?
> 
> Any help is appreciated.
> 
> Gregoy Gentlemen
> 
> __________________________________________________
> 
> 
> 
> [[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at 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
> 
> 
> 
> 
> 
> ------------------------------------------------------------------------------
> 
> ------------------------------------------------------------------------------
> 
> __________________________________________________
> 
> 
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at 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




More information about the R-help mailing list