Gradiente Conjugado no lineal
La base para un gradiente conjugado no lineal es aplicar efectivamente el gradiente conjugado lineal, reemplazando el residuo por el gradiente.
El primero de estos métodos fue propuesto por Fletcher and Reeves de la siguiente manera: dada una dirección de paso , se utiliza una búsqueda lineal para encontrar
tal que
. Luego se calcula
![]() | (2) |
Un método alternativo que generalmente (no siempre) funciona mejor en la práctica, es el de Polak y Ribiere, que reemplaza (2) por
![]() | (3) |
En Mathematica el método por defecto es Polak-Ribiere, pero se puede cambiar utilizando la opción: Method→{"ConjugateGradient", Method→"FletcherReeves"}
La ventaja de estos métodos es que utilizan poca memoria para problemas grandes, relativamente, y no necesitan hacer álgebra lineal numérica de forma que cada paso es rápido.
La desventaja es que no tienen ratas de convergencia como Newton o quasi-Newton. Además, los pasos no se escalan correctamente en longitud, de forma que la búsqueda lineal necesita más iteraciones cada vez para encontrar un paso aceptable.
Pasos tomados por el gradiente conjugado no lineal. El camino es menos directo que en el caso de Newton.
opción | valor por defecto | explicación |
''Method'' | ''PolakRibiere'' | puede ser ''PolakRibiere'' o ''FletcherReeves'' |
''RestartThreshold'' | 1/10 | borde para la ortogonalidad del gradiente, por debajo de este se reinicia el método |
''RestartIterarions'' | ∞ | iteraciones permitidas antes de reiniciar el método |
''StepControl'' | ''LineSearch'' | debe ser ser : ''LineSearch'', se puede utilizar para especificar las opciones de este |
Created by Mathematica (August 9, 2004)