[R-es] Como puedo calcular un maximo de alguna funcion?

Carlos J. Gil Bellosta cgb en datanalytics.com
Vie Sep 18 14:47:38 CEST 2009


Hola, ¿qué tal?

Podríais hacer algo así como:

f <- "20*x*(1-x)^3"

find.max <- function( foo, min, max ){
   foo <- parse( text = foo )
   df <- D( foo, "x" )
   ddf <- D( df, "x" )

   dfoo <- function( x ) eval( df )
   ddfoo <- function( x ) eval( ddf )

   ceros <- uniroot.all( dfoo, c(min, max) )
   ceros <- ceros[ ddfoo( ceros ) < 0 ]
   ceros
}

Le faltan cosas, como la comprobación de errores, etc., pero contiene
las ideas principales sobre cómo manipular los elementos básicos del
lenguaje.

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com

El día 18 de septiembre de 2009 02:18, Manuel Arriaza Guiñez
<manu3_16 en hotmail.com> escribió:
>
> Nos gustaria conocer alguna alternativa para realizar una funcion, a la que le entreguemos una funcion y nos entregue el maximo luego de evaluar la segunda derivada
> nuestro principal problema es que no conocemos como trabajar con la derivada ya que es de tipo call o expresion
>
> aqui esta nuestro algoritmo
>
>
>
>
> f<-expression(20*x*(1-x)^3)
> f
>
> #Primera derivada
>
> derivada<-D(f,"x")
> derivada
> mode(derivada)
>
>
> #Segunda derivada
>
> segundaderivada<-D(derivada,"x")
> segundaderivada
>
>
>
> #Instale y cargue el paquete rootsolve
> #Puntos criticos para la primera derivada
>
> fun <- function (x)20*(1-x)^3-60*x*(1-x)^2
> curve(fun(x),0,10,main="uniroot.all")
> All <- uniroot.all(fun,c(0,10))
> points(All,y=rep(0,length(All)),pch=16,cex=2)
>
> ceros<-All    #Guardamos los puntos criticos en el vector llamado ceros
> ceros
>
>
>
> #Evaluando los puntos criticos en la segunda derivada
>
> fun <- function (x)-120*(1-x)^2+120*x*(1-x)
>
> i=1
> while(i<=length(ceros))
> {
> if (eval(fun(ceros[i]))<0)
> {
> cat(ceros[i])
> cat(" es maximo\n")
> }
> i<-i+1
> }
>
>
>
>
>
> _________________________________________________________________
> [[elided Hotmail spam]]
>
>        [[alternative HTML version deleted]]
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>



Más información sobre la lista de distribución R-help-es