¿Cómo establecer que un método iterativo para sistemas lineales grandes es convergente en la práctica?

11

En la ciencia computacional, a menudo encontramos grandes sistemas lineales que debemos resolver por algunos medios (eficientes), por ejemplo, ya sea por métodos directos o iterativos. Si nos centramos en esto último, ¿cómo podemos establecer que un método iterativo para resolver un sistema lineal grande es convergente en la práctica?

Está claro que podemos hacer análisis de prueba y error (cf. ¿Por qué mi solucionador lineal iterativo no converge? ) Y confiar en métodos iterativos que garanticen la convergencia mediante pruebas o tengan una base de experiencia sólida (por ejemplo, métodos de subespacio de Krylov como CG y GMRES para sistemas simétricos y no simétricos, respectivamente).

Pero, ¿qué se puede hacer para establecer la convergencia en la práctica? y que se hace

Allan P. Engsig-Karup
fuente
1
Gran pregunta! Cuando dice 'establecer convergencia', ¿quiere decir 'establecer que la solución está convergiendo' o que 'establecer que ocurrirá la convergencia'? Sé, por ejemplo, que el objeto PETSc KSP tiene algunas técnicas predeterminadas para probar la convergencia (la norma de error está disminuyendo, el número máximo de iteraciones). ¿Es este el tipo de respuesta que estás buscando?
Aron Ahmadia
@aron: Creo que será interesante ver respuestas que aborden ambos problemas.
Allan P. Engsig-Karup

Respuestas:

6

Para muchas ecuaciones diferenciales parciales que surgen en la naturaleza, particularmente con fuertes no linealidades o anisotropías, la elección de un preacondicionador apropiado puede tener un gran efecto sobre si el método iterativo converge rápida, lenta o no. Los ejemplos de problemas que se sabe que tienen preacondicionadores rápidos y efectivos incluyen ecuaciones diferenciales parciales fuertemente elípticas, donde el método de múltiples cuadrículas frecuentemente logra una convergencia rápida. Hay varias pruebas que uno puede usar para evaluar la convergencia; Aquí voy a utilizar la funcionalidad de PETSc como ejemplo, ya que es posiblemente la biblioteca más antigua y madura para resolver de forma iterativa sistemas dispersos de ecuaciones lineales (y no lineales).

PETSc usa un objeto llamado KSPMonitor para monitorear el progreso de un solucionador iterativo y decidir si el solucionador ha convergido o divergido. El monitor utiliza cuatro criterios diferentes para decidir si se detiene. Puede encontrar más detalles sobre la discusión aquí en la página de manual de KSPGetConvergedReason () .

Asumimos que el usuario está resolviendo el siguiente sistema de ecuaciones para : Llamamos la aproximación actual , y definimos el residual en función del estilo de preacondicionamiento:A x = b x rx

Ax=b

x^r^
  1. Precondicionamiento(P1(Axb)) r =P - 1 (A x -b)

    r^=P1(Ax^b)
  2. No / Precondicionamiento derecho(AP1Px=b) r =A x -b

    r^=Ax^b

Criterios de convergencia

  1. Tolerancia absoluta: el criterio de tolerancia absoluta se cumple cuando la norma del residuo es menor que la constante predefinida : atol
    r^atol
  2. Tolerancia relativa: el criterio de tolerancia relativa se cumple cuando la norma del residuo es menor que la norma del lado derecho por un factor de constante predefinida :rtol
    r^rtolb
  3. Otros criterios : la resolución iterativa también puede converger debido a la detección de una pequeña longitud de paso o curvatura negativa.

Criterios de divergencia

  1. Iteraciones máximas : el número de iteraciones que puede tomar un solucionador está limitado por las iteraciones máximas. Si ninguno de los otros criterios se cumple cuando se alcanza el número máximo de iteraciones, el monitor regresa como divergido.

  2. NaN residual : si en algún momento el residual se evalúa como NaN, el solucionador regresa como divergido.

  3. Divergencia de la norma residual El monitor regresa como divergente si en algún momento la norma del residuo es mayor que la norma del lado derecho por un factor de constante predefinida : dtol

    r^dtolb
  4. Desglose del solucionador El método Krylov en sí mismo puede indicar divergencia si detecta una matriz singular o un preacondicionador.

Aron Ahmadia
fuente