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:

  1. dx L = 0
  2. dl L >= 0
  3. l * dl L = 0
  4. 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:

  1. dx L <= 0
  2. dl L >= 0
  3. x * dx L = 0
  4. l * dl L = 0
  5. x >= 0
  6. 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}

Entradas relacionadas: