Está en la página 1de 39

Unidad 2: Optimización clásica

Optimización clásica mediante cálculo diferencial, aplicación de la segunda Derivada y empleo de derivadas parciales.
Videoclase 9

EIN6017 - MÉTODOS CUANTITATIVOS Y OPTIMIZACIÓN


EIN6017 Índice
Videoclase 9

Resultados de
Aprendizaje 1 Resultados de Aprendizaje
Introducción
2 Introducción
Derivadas con R

Encontrando 3 Derivadas con R


extremos

Derivadas 4 Encontrando extremos


parciales

5 Derivadas parciales
EIN6017 Resultados de Aprendizaje
Videoclase 9

Resultados de
Aprendizaje
Al finalizar esta unidad, usted será capaz de:
Introducción RAA2 - Aplicar soluciones a problemas de la ingenierı́a en la industria en
sus diversas disciplinas, utilizando conocimientos y herramientas de
Derivadas con R
optimización clásica y optimización estadı́stica.
Encontrando RAA3 - Analizar los procesos productivos operacionales, desde una
extremos perspectiva de mejoramiento continuo y optimización.

Derivadas
RAA5 - Utilizar modelos determinı́sticos que permitan solucionar de
parciales manera óptima y eficiente problemas operacionales en las empresas
manufactureras y de servicio.
EIN6017 Introducción: funciones en R
Videoclase 9

En el Código R #1 se define la función f . Aquı́ el objeto f se ha definido como


Resultados de
4x 5 + 15x 4 − 140x 3 − 430x 2 + 1200x + 1000. En la siguiente lı́nea tenemos
Aprendizaje
f(-4.2), es decir, estamos evaluando la función f en −4.2. En otras palabras
Introducción f (−4.2) = −1812.985.

Derivadas con R Código R #1


# Definiendo y evaluando una función
Encontrando
extremos
f<-function(x){4*x^5+15*x^4-140*x^3-430*x^2+1200*x+1000}
f(-4.2)
Derivadas
[1] -1812.985
parciales
EIN6017 Introducción: funciones en R
Videoclase 9
El Código R #2 provee las lı́neas necesarias para hacer el gráfico de f .
Resultados de Código R #2
Aprendizaje
# Graficando una función
Introducción curve(f,-6,5.5,lwd=2)
grid(NULL,NULL,col="black") #dibuja la grilla
Derivadas con R

Encontrando
extremos

Derivadas
parciales
EIN6017 Introducción: funciones en R
Videoclase 9
En el Código R #3 se ejemplifica cómo instalar el paquete rootSolve, cargarla
Resultados de y a través de la función uniroot.all encontrar las raı́ces de una función.
Aprendizaje Código R #3
Introducción # Instalando el paquete rootSolve
install.packages("rootSolve")
Derivadas con R # Cargando la liberı́a o paquete rootSolve para usarlo
Encontrando
library(rootSolve)
extremos # Encontrando las raı́ces de f en el intervalo -10 a 10
uniroot.all(f,c(-10,10))
Derivadas
parciales [1] -0.7001584 2.5542663 4.8944038
EIN6017 Introducción: funciones en R
Videoclase 9
Podrı́amos comprobar que tenemos raı́ces evaluándolas en la función para ver
Resultados de si el resultado es 0. Hacemos esto en el Código R #4.
Aprendizaje Código R #4
Introducción # Evaluando una función f
f(-0.7)
Derivadas con R
[1] 0.24922
Encontrando En la primera lı́nea del Código R #5 la salida se almacena en f_raices. Para
extremos indicar que queremos sólo la primera raı́z escribimos f_raices[1].
Derivadas Código R #5
parciales # Guardar las raı́ces como variable y mostrar la primera raı́z
f_raices<-uniroot.all(f,c(-10,10))
f_raices[1] # primera raı́z
[1] -0.7001584
EIN6017 Introducción: funciones en R
Videoclase 9
En el Código R #6 se muestra cómo podemos introducir directamente la primera
Resultados de raı́z en la función.
Aprendizaje Código R #6
Introducción
# Evaluando una función con una variable
f(f_raices[1])
Derivadas con R
[1] -0.001181759
Encontrando Notamos que f(f_raices[1])̸= 0. Para los fines de esta asignatura utiliza-
extremos remos la precisión por defecto de uniroot.all. Para mejorar la precisión,
defina la tolerancia en uniroot.all utilizando tol, de la siguiente manera
Derivadas
uniroot.all(f,c(-10,10), tol=0.1^10).
parciales
EIN6017 Introducción: funciones en R
Videoclase 9
En el Código R #7 proporciona la lı́nea de código para añadir un punto en la
Resultados de primera raı́z del gráfico de la función f .
Aprendizaje Código R #7
Introducción # Agregando un punto a un gráfico
points(f_raices[1],f(f_raices[1]),pch=16,col="red", cex=1.25)
Derivadas con R

Encontrando
extremos

Derivadas
parciales
EIN6017 Introducción: funciones en R
Videoclase 9
Usamos la función c, concatenar, para crear un vector con los valores 1, 2, 3 y
Resultados de 4, y luego lo usamos como entrada en f . R evaluará f en cada uno de los valores
Aprendizaje 1, 2, 3 y 4, y devolverá el vector de los cuatro resultados (Código R #8).

Introducción Código R #8
# Evaluar la función f en varios valores
Derivadas con R f(c(1,2,3,4))
Encontrando [1] 1649 928 -863 -2104
extremos

Derivadas
parciales
EIN6017 Introducción: funciones en R
Videoclase 9
Del mismo modo, la función puntos aceptará un vector de valores x e y, se
Resultados de asegurará de que cada uno tenga el mismo número de valores y trazará todos
Aprendizaje los pares de puntos. Hacemos esto en el Código R #9 donde f_raices es el
vector de valores x de raı́ces de f y f(f_raices) es el vector correspondiente
Introducción de valores y.
Derivadas con R Código R #9
Encontrando
# Agregando múltiples puntos a un gráfico
extremos points(f_raices,f(f_raices),pch=16,col="red",cex=1.25)

Derivadas
parciales
EIN6017 Introducción: funciones en R
Videoclase 9

Resultados de
Aprendizaje

Introducción

Derivadas con R

Encontrando
extremos

Derivadas
parciales

Figura: Gráfico de la función f (x ) = 4x 5 + 15x 4 − 140x 3 − 430x 2 + 1200x + 1000 y


sus raı́ces.
EIN6017 Derivadas con R
Videoclase 9
Ejemplo:
Resultados de
Aprendizaje

Introducción

Derivadas con R

Encontrando
extremos

Derivadas
parciales

Figura: CO2(t ) = 0.0134594696825t 2 + 0.520632601929t + 310.423363171 mide la


cantidad media de dióxido de carbono, CO2, en la atmósfera cada año. Modelo
construido con datos de 1950 a 2017, en Mauna Loa.
EIN6017 Derivadas con R
Videoclase 9
Utilizaremos el modelo de la figura anterior, que mide la cantidad media de
Resultados de dióxido de carbono, CO2, en la atmósfera cada año con el modelo construido
Aprendizaje con datos de 1950 a 2017.

Introducción Para entender cómo han cambiado y están cambiando los niveles de CO2 en la
Derivadas con R
figura nos planteamos la siguiente pregunta: ¿A qué velocidad aumentó el CO2
en 2017?
Encontrando
extremos

Derivadas
parciales
EIN6017 Derivadas con R
Videoclase 9
El paquete Deriv en R tiene una función que realiza la diferenciación simbólica.
Resultados de Código R #10
Aprendizaje
# La derivada de la función CO2
Introducción install.packages("Deriv")
library(Deriv)
Derivadas con R CO2<-function(x){0.0134594696825*x^2+0.520632601929*x+
Encontrando
310.423363171}
extremos CO2_p<-Deriv(CO2)
CO2_p
Derivadas
parciales function (x)
0.026918939365 * x + 0.520632601929
EIN6017 Derivadas con R
Videoclase 9
Por ejemplo, el Código R #11 muestra la derivada de CO2 para 2017 con
Resultados de CO2_p(67).
Aprendizaje
Código R #11
Introducción # Evaluando una derivada
CO2_p(67)
Derivadas con R
[1] 2.324202
Encontrando Según este modelo, el promedio anual de CO2 atmosférico de Mauna Loa au-
extremos
mentaba a un ritmo de 2.324202 ppm/año.
Derivadas
parciales
EIN6017 Derivadas con R
Videoclase 9
Ahora, consideremos la función f definida por
Resultados de f (x ) = ex + (2.5)x sin(2π x ) − 10.
Aprendizaje
En el Código R #12 se muestra cómo podemos encontrar f ′ (4.30931).
Introducción
Código R #12
Derivadas con R # Evaluando una derivada
f<-function(x){exp(x)+(2.5)^x*sin(2*pi*x)-10}
Encontrando
f_p<-Deriv(f)
extremos
f_p(4.30931)
Derivadas
[1] 0.006689325
parciales
Observamos que f ′ (4.30931) ≈ 0, pero no igual a 0. El código R #12 propor-
ciona una idea de que x = 4.30931 no es en realidad una raı́z, ya que hemos
redondeado al quinto decimal.
EIN6017 Derivadas con R
Videoclase 9

Resultados de En el código R #13 cargamos el paquete rootSolve y utilizamos la función


Aprendizaje uniroot.all para encontrar las raı́ces de f_p. Recordemos que el segundo
argumento de uniroot.all proporciona un dominio en el que encontrar cual-
Introducción
quier raı́z. En resumen, uniroot.all tiene dos entradas. La primera entrada
Derivadas con R es una función y la segunda es un rango en el que queremos localizar cualquier
raı́z.
Encontrando
extremos Código R #13
# Encontrando las raı́ces de una derivada
Derivadas library(rootSolve)
parciales
options(digits = 22)
uniroot.all(f_p, c(4,4.5))
[1] 4.309312706086655175852
EIN6017 Derivadas con R
Videoclase 9
La combinación de las funciones Deriv y uniroot.all nos permitirá encontrar
Resultados de máximos y mı́nimos locales de funciones. En general, los máximos o mı́nimos
Aprendizaje locales se producen cuando la derivada es cero, por lo que las raı́ces de la
derivada proporcionan información clave sobre la función original. En el código
Introducción R #14 definimos f como la función sin(x ) y establecemos su derivada como f_p.
Derivadas con R
A continuación, encontramos las raı́ces de f_p con uniroot.all en el intervalo
de 0 a 2π . Ud. sabe que las salidas son π/2 ≈ 1.570796 y 3π/2 ≈ 4.712389.
Encontrando
extremos
Código R #14
# Encontrando las raı́ces de una derivada
Derivadas f<-function(x){sin(x)}
parciales options(digits = 7)
f_p<-Deriv(f)
uniroot.all(f_p,c(0,2*pi))
[1] 1.570796 4.712389
EIN6017 Derivadas con R
Videoclase 9
Supongamos ahora que queremos encontrar f ′′ (x ) para
x3
 
Resultados de
Aprendizaje f (x ) = 0.1 + x 2 − 15x − 8.
3
Introducción En el código R #15 calculamos esta segunda derivada. Notemos que sólo fue
necesario agregar n = 2 en la función Deriv para la segunda derivada.
Derivadas con R
Código R #15
Encontrando # Encontrando la segunda derivada de una función
extremos
f<-function(x){0.1*((x^3)/3+x^2-15*x)-4}
Derivadas f_pp<-Deriv(f,n=2)
parciales f_pp
function (x)
0.1 * (2 + 2 * x)
EIN6017 Derivadas con R
Videoclase 9
El último ejemplo, en el código R #16, es la derivada 48 de sin(x ). ¿Por qué
Resultados de obtuvimos sin(x ) como resultado?
Aprendizaje
Código R #16
Introducción # Derivada 48 de una función
g<-function(x){sin(x)}
Derivadas con R Deriv(g,n=48)
Encontrando function (x)
extremos sin(x)
Derivadas
parciales
EIN6017 Derivadas con R
Videoclase 9
Tenga en cuenta que la salida de la derivada de la función en R puede ser difı́cil
Resultados de de leer debido al algoritmo utilizado para calcular las derivadas. Por ejemplo, en
Aprendizaje el código R #17 se calcula la derivada de f (x ) = cos(x ) sin(x 2 ). En la variable
de salida .e1<-x^2 cada .e1 en la lı́nea siguiente debe ser sustituido por x 2 si
Introducción queremos la derivada de la función. En la mayorı́a de los casos esto no es un
Derivadas con R
problema, ya que simplemente utilizaremos f_p para cualquier resultado que
deseemos.
Encontrando
extremos

Derivadas
parciales
EIN6017 Derivadas con R
Videoclase 9
Código R #17
Resultados de # Derivada con una sustitución de salida
Aprendizaje f<-function(x){cos(x)*sin(x^2)}
Introducción
f_p<-Deriv(f)
f_p
Derivadas con R
function (x)
Encontrando {
extremos .e1 <- x^2
2 * (x * cos(x) * cos(.e1)) - sin(x) * sin(.e1)
Derivadas
parciales
}
EIN6017 Encontrando extremos
Videoclase 9
Ejemplo: Una persona lanza una pelota verticalmente al aire a una velocidad
Resultados de de 26.8 m/s (unas 60 mph) y dejando su mano a 1,8 metros (unos 6 pies) del
Aprendizaje suelo. La altura de la pelota se modela en
s(t ) = −4.9t 2 + 26.8t + 1.8288 (metros)
Introducción
t segundos después de que la pelota abandone la mano de la persona. ¿A qué
Derivadas con R
altura llega la pelota? ¿Cuál es la velocidad máxima a la que viaja la pelota?
Encontrando Ambas preguntas se refieren a los extremos de la función. La primera pregunta
extremos se refiere al máximo global de la función, mientras que la segunda se refiere al
máximo global de la derivada. Obsérvese que los máximos o mı́nimos globales
Derivadas pueden darse en máximos o mı́nimos locales o en puntos extremos, lo que se
parciales
establece en el siguiente teorema.
EIN6017 Encontrando extremos
Videoclase 9
Teorema de los valores extremos
Resultados de Una función continua f (x ) en un intervalo cerrado [a, b] tiene un máximo y un
Aprendizaje
mı́nimo global. El máximo y el mı́nimo global pueden darse en un máximo o
Introducción mı́nimo local o en uno de los extremos x = a o bien x = b.
Problema: ¿Cuál es la altura y la velocidad máximas de una pelota lanzada
Derivadas con R
verticalmente si la altura se modela mediante s(t ) = −4.9t 2 + 26.8t + 1.8288
Encontrando metros t segundos después de que la pelota salga de la mano de la persona?
extremos

Derivadas
parciales
EIN6017 Encontrando extremos
Videoclase 9
Con el código R #18 daremos inicio a la solución del problema. Primero necesi-
Resultados de tamos decidir cuál es el intervalo apropiado del problema. Sabemos que t ≥ 0,
Aprendizaje y el mayor valor de t es cuando la pelota toca el suelo o cuando s(t ) = 0. Igno-
ramos la raı́z negativa y ası́ el intervalo para los valores de t es [0, 5.537].
Introducción
Código R #18
Derivadas con R # Encontrando extremos del problema
Encontrando
library(Deriv)
extremos library(rootSolve)
s<-function(t){-4.9*t^2 +26.8*t+1.8288}
Derivadas uniroot.all(s,c(0,10))
parciales
[1] 5.536796
EIN6017 Encontrando extremos
Videoclase 9
La máxima altura de la pelota puede ocurrir en los puntos crı́ticos o en los puntos
Resultados de finales del intervalo. En el código R #19 establecemos los puntos finales del
Aprendizaje intervalo, encontramos la primera y segunda derivada de s y los puntos crı́ticos.

Introducción Código R #19


# Encontrando extremos del problema (continuación)
Derivadas con R
Puntosfinales<-c(0,5.537)
Encontrando s_p<-Deriv(s)
extremos s_pp<-Deriv(s,n=2)
raices_deriv<-uniroot.all(s_p,c(0,5))
Derivadas raices_deriv
parciales
[1] 2.734694
EIN6017 Encontrando extremos
Videoclase 9
En el código R #20 construimos una lista que incluye los valores finales del
Resultados de intervalo y el punto crı́tico.
Aprendizaje Código R #20
Introducción # Encontrando extremos del problema (continuación)
Puntosclaves<-c(Puntosfinales,raices_deriv)
Derivadas con R Puntosclaves
Encontrando [1] 0.000000 5.537000 2.734694
extremos En el código R #21 evaluamos la función s en los puntos claves.
Derivadas Código R #21
parciales
# Encontrando extremos del problema (continuación)
s(Puntosclaves)
[1] 1.8288000 -0.0056081 38.4736980
Ası́, la altura máxima de la pelota es 38.4737 m y ocurre a los 2.735 s.
EIN6017 Encontrando extremos
Videoclase 9
En el código R #22 buscamos las raı́ces de la segunda derivada de s en el
Resultados de intervalo [0, 5.537].
Aprendizaje
Código R #22
Introducción # Encontrando extremos del problema (continuación)
raices_deriv2<-uniroot.all(s_pp,c(0,5.537))
Derivadas con R
raices_deriv2
Encontrando numeric(0)
extremos La salida de root_deriv2 es numeric(0) lo que significa que el vector está
Derivadas vacı́o, es decir, no hay raı́ces de la segunda derivada.
parciales
EIN6017 Encontrando extremos
Videoclase 9
En el código R #23 construimos una lista que incluye los valores finales del
Resultados de intervalo y el punto crı́tico para s′ .
Aprendizaje Código R #23
Introducción # Encontrando extremos del problema (continuación)
Puntosclaves2<-c(Puntosfinales, raices_deriv2)
Derivadas con R Puntosclaves2
Encontrando [1] 0.000 5.537
extremos En el código R #24 evaluamos s′ (t ) en los puntos claves.
Derivadas Código R #24
parciales
# Encontrando extremos del problema (continuación)
s_p(Puntosclaves2)
[1] 26.8000 -27.4626
Lo más rápido que viaja la pelota es −27.4626 m/s, cuando toca el suelo.
EIN6017 Derivadas parciales
Videoclase 9
Ejemplo: Considere la función V (r , h) = π r 2 h que da el volumen de un cilindro
Resultados de como el de la siguiente figura y calculemos sus derivadas parciales.
Aprendizaje

Introducción

Derivadas con R

Encontrando
extremos

Derivadas
parciales

Figura: Un cilindro de altura h y radio r .


EIN6017 Derivadas parciales
Videoclase 9
Resumen de derivadas parciales
Resultados de Sea f (x , y ) una función de dos variables
Aprendizaje
∂f
1. corresponde a la primera derivada de f (x , y ) con respecto a la
Introducción ∂x
variable x. Es la tasa de cambio de la función que se mueve paralela al
Derivadas con R eje eje x.
∂f
Encontrando 2. corresponde a la primera derivada de f (x , y ) con respecto a la
∂y
extremos
variable y . Es la tasa de cambio de la función que se mueve paralela al
Derivadas eje eje y .
parciales ∂2f
3. corresponde a la segunda derivada de f (x , y ) con respecto a la
∂x 2
variable x en ambas derivadas. Es la concavidad de la función que se
mueve paralela al eje x.
EIN6017 Derivadas parciales
Videoclase 9
Resumen de derivadas parciales (continuación)
Resultados de
∂2f
Aprendizaje 4. corresponde a la segunda derivada de f (x , y ) con respecto a la
∂y 2
Introducción variable y en ambas derivadas. Es la concavidad de la función que se
mueve paralela al eje y .
Derivadas con R ∂2f
5. corresponde a la segunda derivada de f (x , y ) con respecto a la
Encontrando ∂y ∂x
extremos
variable x para la primera derivada y luego con respecto a y para la
segunda derivada. Es la tasa de cambio de la pendiente mirando hacia el
Derivadas eje x mientras se mueve paralela al eje y .
parciales
EIN6017 Derivadas parciales
Videoclase 9
Resumen de derivadas parciales (continuación)
Resultados de
∂2f
Aprendizaje 6. corresponde a la segunda derivada de f (x , y ) con respecto a la
∂x ∂y
Introducción variable y para la primera derivada y luego con respecto a x para la
segunda derivada. Es la tasa de cambio de la pendiente mirando hacia el
Derivadas con R eje y mientras se mueve paralela al eje x.

Encontrando
extremos

Derivadas
parciales
EIN6017 Derivadas parciales
Videoclase 9
En el código R #25 se muestra la forma de calcular derivadas parciales con
Resultados de el paquete Deriv. Lo único a agregar al código es una opción en la función
Aprendizaje Deriv especificando la variable. Por ejemplo, Deriv(V, "r") es simplemente
la derivada de la función V con respecto a la variable r.
Introducción
Código R #25
Derivadas con R # Derivadas parciales
Encontrando
library(Deriv)
extremos V<-function(r,h){pi*r^2*h}
Deriv(V,"r")
Derivadas
parciales function (r, h)
2 * (h * pi * r)
EIN6017 Derivadas parciales
Videoclase 9
Continuando, en el código R #26 se muestra la derivada de la función V con
Resultados de respecto a la variable h. En el código R #27 se muestra la segunda derivada de
Aprendizaje V con respecto a r.

Introducción
Código R #26
# Derivadas parciales
Derivadas con R Deriv(V,"h")
Encontrando function (r, h)
extremos pi * r^2
Derivadas Código R #27
parciales
# Derivadas parciales
Deriv(V,"r",n=2)
function (r, h)
2 * (h * pi)
EIN6017 Derivadas parciales
Videoclase 9
En el código R #28 se muestra la segunda derivada de V con respecto a h y en
Resultados de #29 se muestra la segunda derivada de V con respecto a r y luego a h.
Aprendizaje Código R #28
Introducción # Derivadas parciales
Deriv(V,"h",n=2)
Derivadas con R
function (r, h)
Encontrando 0
extremos
Código R #29
Derivadas # Derivadas parciales
parciales resultado<-Deriv(V,"r")
Deriv(resultado,"h")
function (r, h)
2 * (pi * r)
EIN6017 Referencias I
Videoclase 9

Referencias
Brokate, M., Manchanda, P., & Siddiqi, A. H. (2019). Calculus for scientists and
engineers. Springer.
Dobrow, R. P. (2016). Introduction to stochastic processes with R. John Wiley &
Sons.
Hillier, F. S., et al. (2015).Investigación de operaciones.
Kendall, K. E., & Kendall, J. E. (2005). Análisis y diseño de sistemas. Pearson
educación.
Kilty, J., & McAllister, A. (2018). Mathematical modeling and applied calculus.
Oxford University Press.
Larson, R. (2012). Calculus: an applied approach. Cengage Learning.
Pfaff, T. J. (2023). Derivatives with R. En Applied Calculus with R (pp. 185-197).
Springer.
Porto, M. (2022). Introduction to Mathematics for Economics with R. Springer
Nature.
EIN6017 Referencias II
Videoclase 9

Referencias

Pruim, R. J. (2011). Foundations and applications of statistics: an introduction


using R (Vol. 13). American Mathematical Soc.
Spiegel, M. R. S. (2009). Estadı́stica/Murray R. Spiegel y Larry J. Stephens. (inf.
téc.).
Taha, H. A. (2004). Investigación de operaciones. Pearson Educación.
Webster, A. L. (2000). Estadı́stica aplicada a los negocios y la economı́a. McGraw-
Hill,

También podría gustarte