Estrategias para el método de Newton cuando el jacobiano en la solución es singular

12

Estoy tratando de resolver el siguiente sistema de ecuaciones para las variables y x 2 (todo lo demás son constantes):P,x1x2

A(1P)2k1x1=0AP2k2x2=0(1P)(r1+x1)4L1P(r1+x2)4L2=0

Puedo ver que puedo convertir este sistema de ecuaciones en una sola ecuación de una sola variable resolviendo las ecuaciones 1 y 2 para x 1 y x 2 respectivamente y sustituyéndolas en la ecuación 3. Al hacerlo, puedo use el comando de matlab para encontrar la solución. Usando los parámetros k 1 = k 2 = 1 , r 1 = r 2 = 0.2 y A = 2 , encontré que la verdadera solución es P = x 1 = x(P)x1x2fzerok1=k2=1r1=r2=0.2A=2 .P=x1=x2=0.5

Sin embargo, cuando uso el método de newton aplicado al sistema de ecuaciones original de 3 variables - 3, las iteraciones nunca convergen a la solución, no importa cuán cerca comience a la solución verdadera . x=(P,x1,x2)=(0.5,0.5,0.5)

Al principio, sospeché que era un error en mi implementación del método de newton. Después de revisar varias veces, no encontré ningún error. Luego intenté usar una conjetura inicial , y he aquí: el jacobiano es singular. Sé que un jacobiano singular puede reducir el orden de convergencia, pero no creo que necesariamente evite la convergencia a la solución verdadera. x0=x

Entonces, mi pregunta es, dado que el jacobiano del sistema en la verdadera solución es singular:

  1. ¿Qué otras condiciones son necesarias para demostrar que el método de newton no convergerá a la raíz?

  2. ¿Una estrategia de globalización (por ejemplo, búsqueda de línea) garantizaría la convergencia a pesar del singular jacobiano?

Paul
fuente

Respuestas:

4

(1): Esto depende del comportamiento de los derivados del jacobiano (¡sic!) En el espacio nulo del jacobiano en la solución. En la práctica, nadie calcula estos derivados, y ni siquiera me molesté en recordar las condiciones precisas.

(2) funciona, aunque la convergencia es solo lineal.

Para obtener una convergencia superlineal (al menos en la mayoría de los casos), uno puede usar métodos tensoriales. Ver, por ejemplo,
https://cfwebprod.sandia.gov/cfdocs/CCIM/docs/SAND2004-1944.pdf
http://www.jstor.org/stable/10.2307/2156931
http://www.springerlink.com/ index / X5G827367G548327.pdf

Arnold Neumaier
fuente
3

En lugar de una búsqueda de línea, puede intentar modificar el método de Newton al algoritmo Levenberg-Marquardt . La implementación es lo suficientemente simple si está usando Matlab.

Leo Uieda
fuente