Estoy escribiendo un programa que minimiza una función no lineal de valor real de unas 90 variables reales sujeta a unas 30 restricciones no lineales. He encontrado una explicación práctica en el sitio web del CERN Libro breve de análisis de datos . Lo he puesto en práctica y funciona, pero no soy capaz de deducir cómo han obtenido las ecuaciones del fondo. Podría alguien explicar cómo se puede lograr?
Copiado del enlace:
Tratando de minimizar $f(x_1,...,x_n)$ con sujeción a $c_1(x_1,...,x_n) = ... = c_m(x_1,...,x_n) = 0$ .
Reformular como $$\partial F/\partial x_1 = \dots = \partial F/\partial x_n = \partial F/\partial\lambda_1 = \dots = \partial F/\partial\lambda_m = 0$$ para $$ F(x_1,\dots,x_n,\lambda_1,\dots,\lambda_m) = f(x_1,\dots,x_n) - \lambda^T c(x_1,\dots,x_n) $$
Uso de multiplicadores de Lagrange $\lambda$ y Newton-Raphson, llegan a (1): $$ A\Delta x - B^T\lambda = -a\\ B\Delta x = -c, $$ donde $A$ es el hessiano de $f$ , $a = (\nabla f)^T$ es el gradiente de $f$ y $B=\nabla c$ es el jacobiano de las restricciones.
Parece que no puedo seguirlos. Según entiendo, están aplicando Newton-Raphson para resolver $\nabla F = 0$ . Creo que $$ \nabla F = \left(a - B^T \lambda \atop -c \right) $$ Entonces, tenemos que tomar la derivada de $\nabla F$ para Newton-Raphson. En primer lugar, me parece que sólo están tomando la derivada con respecto a. $x$ y no a $\lambda$ . ¿Por qué?
Aun así, esto llevaría a (1) si la derivada de $\nabla F$ fue $\left(A \atop -B\right)$ . Sin embargo, aunque es cierto que $\nabla a = A$ y $\nabla c = B$ No puedo entender dónde está el término $-B^T\lambda$ se desvaneció.
Muchas gracias a quien pueda arrojar algo de luz sobre esto.