Salida de matriz hessiana
Los solvers fminunc y fmincon devuelven una matriz hessiana aproximada como una salida opcional.
[x,fval,exitflag,output,grad,hessian] = fminunc(fun,x0)
% or
[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)Esta sección describe el significado de la matriz hessiana devuelta y la precisión que cabe esperar.
También puede especificar el tipo de matriz hessiana que utilizan los solvers como argumentos hessianos de entrada. Para obtener más información sobre fminunc, consulte Incluir gradientes y matrices hessianas. Para obtener más información sobre fmincon, consulte Matriz hessiana como entrada.
Matriz hessiana de fminunc
La matriz hessiana de un problema sin restricciones es la matriz de segundas derivadas de la función objetivo f:
Algoritmo quasi-Newton:
fminuncdevuelve una matriz hessiana estimada en la solución.fminunccalcula la estimación por diferencias finitas, de modo que la estimación suele ser precisa.Algoritmo de región de confianza:
fminuncdevuelve una matriz hessiana en la penúltima iteración.Si proporciona una matriz hessiana en la función objetivo y establece la opción
HessianFcnen'objective',fminuncdevuelve esta matriz hessiana.Si proporciona una función
HessianMultiplyFcn,fminuncdevuelve la matrizHinfodesde la funciónHessianMultiplyFcn. Para obtener más información, consulteHessianMultiplyFcnen la seccióntrust-regionde la tablafminuncoptions.De lo contrario,
fminuncdevuelve una aproximación desde un algoritmo de diferencias finitas dispersas en los gradientes.
Esta matriz hessiana es precisa para la penúltima iteración. Sin embargo, es posible que la penúltima iteración no esté cerca del punto final.
El algoritmo
trust-regiondevuelve la matriz hessiana en la penúltima iteración por eficiencia.fminuncutiliza la matriz hessiana internamente para calcular su siguiente paso. Cuandofminuncalcanza una condición de detención, no necesita calcular el paso siguiente y, por lo tanto, no calcula la matriz hessiana.
Matriz hessiana de fmincon
La matriz hessiana para un problema restringido es la matriz hessiana del lagrangiano. Para una función objetivo f, un vector de restricción de desigualdad no lineal c y un vector de restricción de igualdad no lineal ceq, el lagrangiano es
Los λi son multiplicadores de Lagrange; consulte Medida de optimalidad de primer orden y Estructuras de multiplicadores de Lagrange. La matriz hessiana del lagrangiano es
fmincon tiene varios algoritmos, con varias opciones para matrices hessianas, como se describe en Algoritmo fmincon trust-region-reflective, Algoritmo fmincon Active-Set y Algoritmo interior-point de fmincon.
Algoritmo
active-set,sqposqp-legacy:fmincondevuelve la aproximación hessiana que calcula en la penúltima iteración.fminconcalcula una aproximación quasi-Newton de la matriz hessiana en la solución en el curso de sus iteraciones. En general, esta aproximación no coincide con la matriz hessiana real en cada componente, sino solo en determinados subespacios. Por lo tanto, la matriz hessiana que devuelvefminconpuede ser imprecisa. Para obtener más detalles sobre el cálculo deactive-set, consulte Implementación de SQP.Algoritmo
trust-region-reflective:fmincondevuelve la matriz hessiana que calcula en la penúltima iteración.Si proporciona una matriz hessiana en la función objetivo y establece la opción
HessianFcnen'objective',fmincondevuelve esta matriz hessiana.Si proporciona una función
HessianMultiplyFcn,fmincondevuelve la matrizHinfodesde la funciónHessianMultiplyFcn. Para obtener más información, consulte Algoritmo región de confianza reflectante enfminconoptions.De lo contrario,
fmincondevuelve una aproximación desde un algoritmo de diferencias finitas dispersas en los gradientes.
Esta matriz hessiana es precisa para la penúltima iteración. Sin embargo, es posible que la penúltima iteración no esté cerca del punto final.
El algoritmo
trust-region-reflectivedevuelve la matriz hessiana en la penúltima iteración por eficiencia.fminconutiliza la matriz hessiana internamente para calcular su siguiente paso. Cuandofminconalcanza una condición de detención, no necesita calcular el paso siguiente y, por lo tanto, no calcula la matriz hessiana.Algoritmo
interior-pointSi la opción
HessianApproximationes'lbfgs'o'finite-difference', o si proporciona una funciónHessianMultiplyFcn,fmincondevuelve[]para la matriz hessiana.Si la opción
HessianApproximationes'bfgs'(la predeterminada),fmincondevuelve una aproximación quasi-Newton a la matriz hessiana en el punto final. Esta matriz hessiana puede ser imprecisa, similar a la matriz hessiana del algoritmoactive-setosqp.Si la opción
HessianFcnes un identificador de función,fmincondevuelve esta función como la matriz hessiana en el punto final.