preacondicionador para un método sin matriz para resolver Ax = b

9

Necesito resolver Ax = b, pero me doy cuenta de que incluso si es escaso, almacenar los coeficientes matriciales de mi problema requerirá demasiada memoria. Así que ahora estoy considerando usar un método sin matriz, porque los mismos coeficientes aparecen mucho tiempo en la matriz, por lo que podría usar mi propio esquema de almacenamiento privado (por cierto, y aumentar la eficiencia de la caché).

Estoy viendo petsc, que proporciona una interfaz para estos operadores lineales sin matriz, pero lo que realmente no entiendo es cómo Petsc calcula el preacondicionador. ¿O debería proporcionar mi propio preacondicionador? Si es así, ¿hay herramientas o recetas disponibles para construir el preacondicionador a partir de un operador lineal sin matriz?

Más información sobre mi operador: es asimétrico, no es diagonalmente dominante, pero está dominado por algunas bandas laterales (pero tampoco es diagonal en bandas)

nat chouf
fuente

Respuestas:

7

Tendrá que rodar su propio preacondicionador. Si conoce la matriz, no debería ser terriblemente difícil implementar algo como un preacondicionador SSOR, por ejemplo. Si sabe algo más sobre el problema, por ejemplo, que proviene de un PDE cuya solución puede aproximarse bien en una malla más gruesa, entonces también puede considerar la construcción de preacondicionadores restringiendo el problema a la malla más gruesa, resolviendo allí y extendiendo el solución de vuelta a la original. La restricción y la prolongación se pueden implementar como operaciones sin matriz.

Wolfgang Bangerth
fuente