¿Cuándo Newton-Krylov no es un solucionador apropiado?


16

Recientemente he estado comparando diferentes solucionadores no lineales de scipy y quedé particularmente impresionado con el ejemplo de Newton-Krylov en el Scipy Cookbook en el que resuelven una ecuación de ecuación diferencial de segundo orden con un término de reacción no lineal en aproximadamente 20 líneas de código.

Modifiqué el código de ejemplo para resolver la ecuación de Poisson no lineal ( también llamada ecuación de Poisson-Boltzmann , consulte la página 17 en estas notas) para las heteroestructuras de semiconductores, que tiene la forma,

re2ϕreX2-k(X)(pag(X,ϕ)-norte(X,ϕ)+norte+(X))=0 0

(Esta es la función residual que se pasa al solucionador).

Este es un problema electrostático donde y p ( x , ϕ ) son funciones no lineales para la forma n i ( x ) e - ( E i ( x , ϕ ) - E f ) . Los detalles aquí no son importantes, pero el punto es que la función no lineal varía exponencialmente con ϕ, por lo que la función residual puede variar en un rango enorme ( 10 - 6 - 10 16 )norte(X,ϕ)pag(X,ϕ)norteyo(X)mi-(miyo(X,ϕ)-miF)ϕ10-6 6-10dieciséis)con un ligero cambio en .ϕ

Yo resuelvo numéricamente esta ecuación con el scipy Newton-Krylov, pero nunca convergería (de hecho, siempre informaría un error al calcular el jacobiano). Cambié de un solucionador Newton-Krylov a fsolve (que se basa en el híbrido MINPACK) y funcionó la primera vez.

¿Hay razones generales por las que Newton-Krylov no se adapta bien a ciertos problemas? ¿Las ecuaciones de entrada necesitan ser condicionadas de alguna manera?

Tal vez se necesita más información para comentar, pero ¿por qué crees que fsolve funcionó en este caso?


Tuve el mismo problema con la falla de Newton-Krylov con el jacobiano, y descubrí que cambiar el método de "lgmres" a solo "gmres" ( sol = newton_krylov(func, guess, method='gmres')) solucionó el problema. No estoy seguro de por qué, pero cualquier otra persona con este problema podría considerar hacer lo mismo.
Arthur Dent

Respuestas:


18

Hay dos problemas con los que es probable que te encuentres.

Mal acondicionamiento

Primero, el problema está mal condicionado, pero si solo proporciona un residuo, Newton-Krylov está desechando la mitad de sus dígitos significativos diferenciando finitamente el residuo para obtener la acción del jacobiano:

J[X]yF(X+ϵy)-F(X)ϵ

10dieciséis

Tenga en cuenta que los mismos problemas se aplican a los métodos cuasi-Newton, aunque sin diferencias finitas. Todos los métodos escalables para problemas con operadores no compactos (por ejemplo, ecuaciones diferenciales) deben usar información jacobiana para el preacondicionamiento.

Es probable que fsolveno haya utilizado la información jacobiana o que haya usado un método dogleg o un cambio para avanzar con un método de "descenso de gradiente", a pesar de un jacobiano esencialmente singular (es decir, la diferencia finita tendría mucho "ruido" de aritmética de precisión finita). Esto no es escalable y fsolveprobablemente se vuelve más lento a medida que aumenta el tamaño del problema.

Globalización

Si los problemas lineales se resuelven con precisión, podemos descartar problemas relacionados con el problema lineal (Krylov) y centrarnos en los debidos a la no linealidad. Las características locales mínimas y no suaves convergen lentamente o causan estancamiento. Poisson-Boltzmann es un modelo uniforme, por lo que si comienza con una suposición inicial lo suficientemente buena, Newton convergerá cuadráticamente. La mayoría de las estrategias de globalización implican algún tipo de continuación para producir una suposición inicial de alta calidad para las iteraciones finales. Los ejemplos incluyen la continuación de la cuadrícula (por ejemplo, Multigrid completa), la continuación de parámetros y la continuación de pseudotransitorios. Este último es generalmente aplicable a problemas de estado estacionario, y ofrece algunas teoría de la convergencia global, consulte Coffey, Kelley y Keyes (2003) . Aparece una búsqueda en este documento, que puede serle útil:Shestakov, Milovich y Noy (2002) Solución de la ecuación no lineal de Poisson-Boltzmann utilizando la continuación pseudo-transitoria y el método de elementos finitos . La continuación pseudotransitoria está estrechamente relacionada con el algoritmo de Levenberg-Marquardt.

Otras lecturas

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.