UNIVERSIDAD GALILEO - MATEMATICA IV SECCIÓN AN
MAP No. 2 (Mini Aplicacion 2)
−Aplicaciones del Vector
Gradiente
Integrantes:
Fernando Josue Lopez Moore − 22000114.
1
1. Objetivo
El objetivo principal de este trabajo es aplicar el algoritmo de Steepest Descent para resolver
problemas de optimización de funciones multivariables, evaluando su desempeño en términos de
convergencia, comportamiento con diferentes tamaños de paso y capacidad para encontrar mı́nimos
locales o globales.
Implementar el algoritmo de Steepest Descent para minimizar cuatro funciones multivariables
con caracterı́sticas distintas.
Analizar el efecto del tamaño de paso (step-size) en la convergencia del algoritmo, comparando
valores constantes y variables.
Identificar las dificultades que puedan surgir durante la optimización de funciones con múlti-
ples mı́nimos locales o caracterı́sticas no lineales complejas.
Graficar y evaluar el comportamiento del gradiente en cada iteración para visualizar la efi-
ciencia del algoritmo.
2. Marco Teorı́co
Optimización de Funciones Variables: La optimización de funciones multivariables implica
encontrar el valor máximo o mı́nimo de una función que depende de varias variables independientes.
En muchas aplicaciones, los problemas de optimización se centran en minimizar una función de
costo o error, que depende de varios parámetros. Una de las herramientas clave para abordar este
problema es el vector gradiente.
El Vector Gradiente El vector gradiente de una función f (x1 , x2 , ..., xn ) proporciona la dirección
de mayor incremento de la función en un punto dado. Si f es diferenciable, su gradiente ∇f (x) es
un vector cuyas componentes son las derivadas parciales de la función con respecto a cada variable.
Formalmente, el gradiente está dado por:
∂f (r) ∂f (r)
▽f (r) = ( , ..., ) (1)
∂x1 ∂xn
El gradiente se utiliza en métodos de optimización como el descenso por gradiente, ya que propor-
ciona la dirección de mayor incremento de la función, mientras que su opuesto, −∇f (x), señala la
dirección de mayor decremento.
Tamaño de Paso (Step-size)
El tamaño de paso αk es un parámetro crı́tico en el algoritmo de descenso por gradiente. Si el
tamaño de paso es demasiado pequeño, el algoritmo puede tardar muchas iteraciones en converger.
Si el tamaño de paso es demasiado grande, el algoritmo podrı́a oscilar y no converger. Existen
distintas estrategias para elegir el tamaño de paso:
Constante: Un valor fijo para α, como 0.1 o 0.001.
Variable: Se puede reducir el tamaño de paso a medida que avanzan las iteraciones, por
ejemplo, αk = k1 .
2
3. Metodologı́a
En este trabajo, se implementó el algoritmo de Steepest Descent para minimizar cuatro funciones
multivariables, usando distintos valores de tamaño de paso α. Las funciones estudiadas son:
1. f (x1 , x2 ) = 16x21 + 4x22 + 2x1 − 4x2 − 4
2. f (x1 , x2 ) = sin(x1 x2 ) + 81x21 + 16x22
p
3. f (x1 , x2 ) = x21 − 4x1 + x22 − 6x2 + 13 + 4
4. Función de Rosenbrock: f (x1 , x2 ) = (1 − x1 )2 + 400(x2 − x21 )2
Cada función fue graficada para visualizar su forma y posibles mı́nimos. A continuación, se
aplicó el algoritmo de Steepest Descent con un punto inicial x0 = (1.15, 1.15)T y diferentes valores
de α. El algoritmo se detuvo cuando ||∇f (xk )|| < 10−9 o cuando se alcanzaron 1000 iteraciones.
4. Guı́a Práctica
Dentro de este trabajo se realizó el algoritmo por medio de Python, para poder realizar las
gráficas y el análisis matemático, usando librerı́as como numpy, pandas y sympy. La librerı́a pandas,
nos ayuda a realizar las gráficas y representar nuestros resultados, numpy para diversos calculos
matemáticos asi como sympy que nos ayuda a derivar también.
Al realizar el calculo de cada una de las funciones mencionadas en la sección de Metodologı́a,
obtenemos ls resultados en forma de tabla, la primera columna representa el número de iteraciones,
seguido de el punto optimizado, le sigue la dirección de nuestro gradiente y para terminar con
nuestra norma de gradiente obtenido.
4.1. Primera ecuacion
Para la primera ecuación, logramos obtener los siguientes resultados mediante nuestro algoritmo:
Podemos observar que obtenemos el punto mı́nimo, el cual serı́a: (−0.0624999, 0.5002128), de-
mostrando que su punto mı́nimo es este. Para poder verificarlo, graficamos la ecuación para poder
visualizarlo de mejor manera, obteniendo lo siguiente:
3
Adicional, como resultado de nuestro algoritmo conseguimos el comportamiento en gráfica sobre
nuestro recorrido de las iteraciones en la búsqueda de la optimización del punto mı́nimo, obteniendo
como resultado lo siguiente:
Dando como conluida la primera ecuación, obtenemos los resultados, como los puntos y normas
comparados con la tolerancia del algoritmo para poder encontrar el punto mı́nimo de la ecuación
resuelta, a continuación observaremos los demás resultados de las demás ecuaciones, estos resultados
son fueron realizado con α = 0.001.
A continuación se muestran los resultados de los valores de alpha restantes.
4
Resultados con: α = 1
Resultados con: α = 0.1
5
4.2. Segunda Ecuación
Para la segunda ecuación, se realizó el mismo procedimiento, los resultados fueron los siguientes:
Resultados con: α = 0.001
Resultados con: α = 0.1
6
Resultados con: α = 1
7
4.3. Tercera Ecuación
Para la segunda ecuación, se realizó el mismo procedimiento, los resultados fueron los siguientes:
Resultados con: α = 0.001
Resultados con: α = 0.1
8
Resultados con: α = 1
9
4.4. Ecuación de Rosenbrock
Para la segunda ecuación, se realizó el mismo procedimiento, los resultados fueron los siguientes:
Resultados con: α = 0.001
Resultados con: α = 0.1
10
Resultados con: α = 1
5. Uso del algoritmo
Dentro del código Python, adjunto en la carpeta, encontrarán una variable nombrada: ”f sym”,
en esta variable puede ingresar la ecuación la cual deseen realizar las pruebas, adicional, ya están
puestas las 4 ecuaciones, se encuentran comentadas. Seguido de esto, cuenta con con las variables
iniciales, como lo que es alpha, la tolerancia, el número de iteraciones, etc.
En sencillas cuentas, usamos la librerı́a sympy, para poder realizar la derivada de la función, sin
tener que usar uno ya establecido, las función para derivar se llama: çalcular gradiente”, una vez
conseguimos nuestra función nabla o gradiente, procedemos a colocarla en la otra función llamada:
”gradiente númericoçon el fin de poder realizar la gradiente operable o más bien aplicable a los
puntos que iremos encontrando.
La implementación e impresión de los resultados se encuentran en la función llamada: ”steepest
descent”, valga de redundancia, esta función lo que hace es usar las funciones anteriores sucesiva-
mente, junto con el algoritmo de steepest descente, para poder encontrar los puntos mı́nimos de la
ecuación a minimizar.
Como lo he mencionado antes, puede manipular la variable ”f sym”para poder ingresar una
ecuación diferente.
11
6. Análisis de Resultados
6.1. Función 1: f (x1 , x2 ) = 16x21 + 4x22 + 2x1 − 4x2 − 4
Para esta función, se observó que el algoritmo convergió rápidamente cuando se usó α = 0.1,
alcanzando el mı́nimo global en pocas iteraciones. Con un tamaño de paso muy grande (por ejemplo,
α = 1), el algoritmo mostró oscilaciones antes de converger.
6.2. Función 2: f (x1 , x2 ) = sin(x1 x2 ) + 81x21 + 16x22
Esta función, con un término no lineal sin(x1 x2 ), presentó un comportamiento más complejo. Se
observaron múltiples mı́nimos locales, pero el algoritmo de Steepest Descent fue capaz de encontrar
un mı́nimo cercano al punto inicial. El tamaño de paso pequeño ayudó a estabilizar el proceso de
optimización.
p
6.3. Función 3: f (x1 , x2 ) = x21 − 4x1 + x22 − 6x2 + 13 + 4
El comportamiento de esta función fue similar al de un valle estrecho, lo que llevó a que el
algoritmo necesitara más iteraciones para converger a un mı́nimo. Con un tamaño de paso variable
αk = k1 , el algoritmo mostró una mejora notable en su convergencia.
6.4. Función 4: Función de Rosenbrock
La función de Rosenbrock es conocida por tener un mı́nimo global muy profundo y una región
alargada que puede dificultar la convergencia de algunos métodos de optimización. El algoritmo de
Steepest Descent tuvo dificultades con α = 1, pero convergió eficazmente con un α más pequeño.
7. Conclusiones
El algoritmo de Steepest Descent demostró ser una herramienta efectiva para la optimización
de funciones multivariables, logrando converger a mı́nimos locales o globales dependiendo de la
función. No obstante, su eficacia depende en gran medida de la elección del tamaño de paso y de la
naturaleza de la función a optimizar. Funciones con términos no lineales complejos o con regiones
alargadas (como la función de Rosenbrock) pueden requerir un ajuste cuidadoso de los parámetros
para garantizar una convergencia eficiente.
Entre los hallazgos más importantes, se observó que:
Un tamaño de paso adecuado es crucial para evitar oscilaciones o convergencia lenta.
Funciones con mı́nimos locales complejos pueden requerir un análisis adicional para evitar
converger a mı́nimos no deseados.
El método es sencillo de implementar y escalable
12