Matemáticas Avanzadas

Caso III: Máximos y Mínimos Relativos de una Función sin Restricciones

Encuentre los puntos máximos y mínimos relativos de la función:
f(x,y)=x4+y4-4  x y + 1
Primeramente construiremos tres funciones que podremos utilizar después y que son útiles en el contexto de la optimización en varias variables. La primera de ellas es la que determina el vector gradiente de una función real. Esta función tendrá dos parámetros. El primero de ellos representará la función y el segundo será una lista de las variables. Recuerde que para construir una función usted debe presionar la tecla APPS.
Aplicaciones disponibles
Posteriormente seleccionar la aplicación llamada Program Editor.
Program Editor
Seleccionando la opción del editor de programas, seleccionar la opción New. El tipo debe marcarse como Function. El último campo debe llenarse con el nombre de la función: en nuestro caso grad.
Program Editor
Deberá aparecer un template como el que se ilustra en la siguiente figura.
Templete para la función grad
Habrá que capturar la función como viene en la siguiente pantalla. Note que la d después de seq en el código es el operador de derivación y no sólo la letra d, por tanto, debe ser obtenido con la combinación 2ND 8.
Función para determinar el gradiente
Explicación
En la primera línea del código se declara que tiene dos variables locales: La variable i que se utilizará como índice para correr sobre todas las variables de la función, y la segunda variable n que servirá para determinar el número de variables. En la segunda línea del código se determina el número total de variables declaradas en la lista de variables v : este cálculo se almacena en la variable n. En la tercera línea de código, primero se construye una lista ordenada con las parciales de la función f respecto a todas las variables declaradas en la lista v. Posteriormente, se utiliza el comando list>mat para convertir la lista en un vector columna.

Basta que Ud. regrese al HOME para que la función esté disponible.

Usted puede verificar que la función funciona entregando un vector columna como viene en la siguiente imagen.
Prueba de la función gradiente

La siguiente función a programar es la que determina la matriz Hessiana de una función de valor real. Esta función requiere también dos argumentos: la función f y la lista de variables v. Habrá que repetir las instrucciones como en la definición de la función grad para llegar a capturar la función como viene en la siguiente pantalla.
Función para determinar la matriz hessiana
Explicación
En la primera línea se declaran las variables locales: En la primera línea de código se determina el número de variables declaradas en la lista de variables v. En la segunda línea de código se determina el vector gradiente de la función f; recuerde que esta función fue previamente programada y entrega una matriz n * 1 con las primeras parciales. En la lógica de programación, el vector gradiente de derivará respecto a cada una de las variables y estos resultados se irán concatenando entre sí para obtener la matriz hessiana, que es la matriz de las segundas parciales. Esta concatenación se irá haciendo vector por vector. Iniciaremos con el vector de las segundas parciales con respecto a la primera variable (línea de código 4), posteriormente avanzaremos a cada una de las siguientes segundas derivadas respecto a las variables siguientes. Utilizaremos el comando augment que concatena dos matrices con el mismo número de renglones. Cada una de estas aumentaciones será asigna de nuevo en la misma variable aux. El programa termina entregando la matriz total con las segundas parciales.
Por último, construiremos una función que permite sustituir en una expresión un punto. La función tendrá tres argumentos: f que será la expresión donde se hará la sustitución; v que será la lista de variables y p que será un reglón con los valores correspondientes a las variables que serán sustituidas. La idea de la programación será primero construir la sustitución y después llevarla a cabo. Recordemos que la sustitución deberá ser una expresión de la forma:
v1=val1 and v2=val2 and .... vn=valn
En la primera línea de cógido se declaran las variables locales: En la segunda línea de código se determina el número de variables. En la tercera línea de código se inicia la construcción de la sustitución que será primera variable igualada al primer valor la matriz renglón de datos. El ciclo siguiente toma las variables y los valores siguientes para seguir añadiendolos a la variable aux; note el uso del comando and. El código termina utilizando el comando | para llevar a cabo la sustitución construida en la expresión f.
Función para sustituir en una expresión un conjunto de varlores dados en una matriz reglón
Ya con las funciones programadas podemos pasar a resolver el problema. Primero limpiemos las variables a usar; declaremos la función a optimizar y por conveniencia declaremos en v la lista de variables a usar.
Limpieza de variables a usar y captura de f
Seguido de ello, calculemos el gradiente de f; la hessiana de f y determinemos el sistema que deben satisfacer los puntos críticos.
Cálculo de gradiente, hessiana y sistema para puntos críticos
Ahora determinemos los puntos críticos. Observe que debido a la programación interna del comando solve no es posible invocarlo con segundo argumento v que ya contiene la lista de variables.
Determinación de puntos críticos
Ahora vamos a convertir la salida de solve en algo más fácil de manipular como los renglones de una matriz. De nuevo observe la necesidad de escribir la lista de variables de nuevo pues la dinámica de evaluación del comando exp>list así lo requiere.
Determinación de los puntos críticos
Para determinar si los puntos encontrados con máximos, mínimos o puntos silla utilizaremos el criterio de la matriz Hessiana:
Si la matriz hessiana de f (la matriz con las segundas derivadas parciales) evaluada en el punto es
Utilizaremos directamente el resultado anterior: iremos sustituyendo uno a uno los puntos en la matriz hessiana y determinaremos sus valores propios.
La matriz Hessiana en cada uno de los puntos críticos
Concluimos que