Optimización Matemática: Convexidad, Kuhn-Tucker y Métodos Numéricos
Enviado por Programa Chuletas y clasificado en Matemáticas
Escrito el en
con un tamaño de 4,24 KB
Convexidad y Matriz Hessiana
Para analizar la convexidad, utilizamos la Matriz Hessiana: hessiana[2x^4+y^2-3xy,{x,y}].
- Evaluación en el punto (0,0):
hessiana[2x^4+y^2-3xy,{x,y}]/.{x->0,y->0} - Cálculo de Autovalores:
Eigenvalues[hessiana[2x^4+y^2-3xy,{x,y}]/.{x->0,y->0}] - Evaluación en el entorno:
Eigenvalues[hessiana[2x^4+y^2-3xy,{x,y}]/.{x->0.001,y->0}] - Autovalores con variables: En caso de que los autovalores resulten con variables, se utiliza:
InequalitySolve[{z<=0,2z<=0},z]
Resolución Gráfica
Para determinar si un conjunto es acotado:
co1 = InequalityPlot[{x+y<=9, x+y^2>=0, x>=0, y>=0}, {x}, {y}]
Teorema L-G (Lagrange-Gauss)
- Definición de la función:
fun1 = f1[x_,y_] = x^2 + 4(y-2)^2; - Curvas de nivel:
cn1 = curvasNivel[fun1[x_,y_] = x^2 + 4(y-2)^2]; - Dirección de gradientes:
cg1 = campoGradientes[fun1, {x,-6,6}, {y,-6,6}] - Visualización conjunta:
Show[co1, cn1, cg1]
Método Clásico de Optimización
Condición de Primer Orden
Dada la función fun = x + 2y + yz - x^2 - z^2;
Para hallar los puntos candidatos a óptimo: Solve[gradiente[fun, {x,y,z}] == {0,0,0}, {x,y,z}]
Condición de Segundo Orden
Calculamos los autovalores de la Hessiana: Eigenvalues[hessiana[fun, {x,y,z}]/.{x-> , y-> , z-> }]
Clasificación de los resultados: Semidefinida negativa (SD-), Semidefinida positiva (SD+), Indefinida (I), Definida positiva (D+), Definida negativa (D-).
Método Numérico
Las condiciones de primer y segundo orden se mantienen como en el caso anterior. Para la resolución gráfica:
curvasNivelCampoGradiente[fun, {x,0,4}, {y,0,4}, 20];
Para obtener los Máximos y Mínimos absolutos:
NMaximize[fun, {x,y}]NMinimize[fun, {x,y}]
Funciones de Mateco (Algoritmos de Optimización)
- Descenso del Gradiente:
fun = (x-2)^2 + (x-2y)^2;
des = descensoGradiente[fun, {x,y}, {0,0}, 0.00001];
camino2D[fun, {x,-1,3}, {y,-1,3}, des] - Método de Newton:
new = newton[fun, {x,y}, {0,0}, 0.00001];
camino2D[fun, {x,-1,3}, {y,-1,-3}, new] - Algoritmo DFP (Davidon-Fletcher-Powell):
dfp = dfp[fun, {x,y}, {0,0}, 0.00001];
camino2D[fun, {x,-1,3}, {y,-1,3}, dfp]
Punto Estacionario y Multiplicadores de Lagrange
Condiciones requeridas:
- dx L = 0
- dl L >= 0
- l * dl L = 0
- l >= 0
Definimos la función Lagrangiana: lag = x + y - l(x^2 + y^2 - 1);
Condiciones 1 y 3: Solve[{D[lag,x]==0, D[lag,y]==0, l*D[lag,l]==0}, {x,y,l}]
Seleccionamos el punto admisible y comprobamos la Condición 2: D[lag,l]/.{l-> , x-> , y-> } (Si el resultado es 0, es un candidato a Máximo).
Condiciones de Kuhn-Tucker
Requisitos fundamentales:
- dx L <= 0
- dl L >= 0
- x * dx L = 0
- l * dl L = 0
- x >= 0
- l >= 0
Primero, verificamos si el conjunto es cerrado, acotado y convexo mediante la Hessiana: hessiana[fun_obj, {x,y}].
Definimos la Lagrangiana: lag = 3x^2 + 2y^2 - l(x + y - 3);
Condiciones 3 y 4: Solve[{x*D[lag,x]==0, y*D[lag,y]==0, l*D[lag,l]==0}, {x,y,l}]
Una vez obtenidos los puntos admisibles, para cada uno comprobamos que verifican las condiciones 5 y 6: gradiente[lag, {x,y,l}]/.{x->0, y->0, l->0}