Supongamos que tenemos una función $J[f] = \int_a^b L(x, f, f') dx$ que intentamos minimizar. Estoy tratando de pensar cuál es la mejor manera de hacer esto numéricamente, con algo así como el descenso de gradiente.
Mi idea es la siguiente:
- Sea $f_0 = [f(x_1), \ldots, f(x_n)]^T$ sea un vector que contenga mi estimación actual de la función (debido a restricciones computacionales, la función se representa por lo que evalúa en un puñado de puntos entre $a$ y $b$ [Por ejemplo $x_1=a, x_2 = a+\epsilon, x_3 = a + 2\epsilon$ etc.])
-
Calcular la dirección $D=[D_1, \ldots, D_n]$ para intervenir
- $D=\left. \frac{\delta J}{\delta f} \right|_{f=f_0,x=x^{(n)}}$ . Es decir, el derivada variacional evaluada en nuestra estimación actual de la función (y en los puntos $x^{(n)}=x_1, \ldots, x_n$ ).
- $D=\left. \nabla_f J \right|_{f=f_0}$ que es el gradiente de $J$ con respecto a $f$ ser tratado como un $n$ -vector dimensional . Este gradiente puede estimarse numéricamente perturbando cada elemento del $f_0$ vector.
- Actualiza la suposición actual para que sea $f_0 \leftarrow f_0 - \eta D$ donde $\eta$ es un tamaño de paso adecuado.
Mi pregunta es, ¿cuál de estos dos métodos (si es que hay alguno) puede lograrlo? ¿O hay una forma mejor?
Nota: al evaluar $J[f_0]$ numéricamente, probablemente utilizaría algo como la interpolación spline para obtener $f'$ y una suma de Reimann para calcular la integral.