Resolver un sistema disperso no simétrico, no diagonalmente dominante de la mejor manera

8

Recuerdo débilmente de mis primeras conferencias "numéricas" que los solucionadores lineales iterativos para menudo requieren que cuando se descompone comoAAx=bA

A=D+M

donde D es una matriz diagonal y tiene diagonal cero, los elementos de deben ser dominantes sobre las entradas en para que los solucionadores iterativos funcionen bien.D MMDM

¿Qué pasa si ese no es el caso y las entradas de vuelven realmente pequeñas?D

¿Debo usar un solucionador directo entonces?

Para ser más específicos, el sistema lineal que quiero resolver involucra una matriz donde la parte no diagonal es constante pero la parte diagonal depende de un parámetro en algunos manera trivial Hasta ahora, no veo una forma de resolver para cada nuevo.ω A ( ω ) x = b ω

A(ω)=D(ω)+M
ωA(ω)x=bω

Las entradas diagonales son de la forma donde es un número real que depende de la fila en la que nos encontramos, mientras que es un factor de convergencia muy pequeño e es la unidad imaginaria. ¿Podría esto conducir a inestabilidades numéricas cuando ?z j η i ω + z 0Ajj=ω+zj+iηzjηiω+z0

EDITAR: Bueno, tal vez una cosa más sobre la naturaleza de : si uno establece en exactamente, entonces se garantiza que tendrá polos. Esto se debe a que, en última instancia, uso esta matriz para calcular las funciones de Green (muchos cuerpos) en el dominio de la frecuencia, y esas necesitan un factor de convergencia para mover sus polos fuera del eje real. La suma de los valores absolutos de los elementos de matriz fuera de diagonal en cada fila es como máximo , pero la diagonal siempre tendrá algunas entradas cuya parte real es muy cercana o igual a cero.η 0 A ( ω ) η 10A(ω)η0A(ω)η10

Lagerbaer
fuente
@JackPoulson Stokes es quizás el ejemplo canónico de un problema de punto de apoyo PDE. Navier-Stokes incompresible a veces se denomina un problema de punto de silla de montar generalizado porque no es simétrico, pero tiene la misma estructura de restricción.
Jed Brown
@JedBrown: ¡Muy bien, ahora es obvio que no he trabajado en Stokes! Siempre pienso en métodos mixtos para Darcy cuando pienso en saddle point.
Jack Poulson

Respuestas:

4

Aunque impone algunas restricciones sobre qué métodos funcionarán, la falta de dominio diagonal o simetría no es inherentemente catastrófica. Sin embargo, estas propiedades se asocian comúnmente con el problema más difícil de la influencia no local y la dificultad de engrosamiento, y muchos solucionadores de "caja negra" no funcionarán. Para responder a su pregunta de una manera más sustantiva, necesitaríamos conocer los detalles de este sistema en particular (física, discretización, régimen de parámetros).

Mi sugerencia práctica es comenzar con solucionadores directos y profundizar en solucionadores iterativos solo si es necesario. Puede dedicar una carrera a desarrollar soluciones iterativas robustas para un problema difícil en particular.

Jed Brown
fuente
3

Se garantiza que una matriz diagonalmente dominante tiene todos los valores propios positivos (si las entradas de la diagonal son todas positivas) o todas negativas (si las entradas son todas negativas), según el teorema de Gershgorin. La mayoría de los métodos iterativos solo funcionan si los valores propios de la matriz de iteración están en una región particular del plano complejo, por lo que el dominio diagonal asegura que todos los valores propios tengan una parte real estrictamente positiva o estrictamente negativa (o que todos los valores propios se encuentren dentro de un radio particular de algún número).

Si su matriz de iteración tiene valores propios que se encuentran fuera de la región prescrita para un método en particular, generalmente no funcionará correctamente. Hay montones de métodos, pero no puedo elegir un método específico sin saber más sobre el espectro de .A(ω)

Dan
fuente
2

¿Qué tan grande / escaso es su sistema? ¿Realmente necesitas resolver esto de forma iterativa?

Sugeriría tratar de resolverlo en Matlab u Octave usando el solucionador disperso (solo inicialice la matriz usando "disperso" y luego use la barra invertida). Si eso funciona para usted, entonces use UMFPACK directamente, que es lo que Matlab y Octave usan internamente para las soluciones dispersas.

Pedro
fuente
Del orden de a filas con un máximo de 8 entradas por fila. 10 6105106
Lagerbaer
1
La escasez no cuenta toda la historia. Si existen pequeños separadores de vértices, entonces los solucionadores directos deberían encontrarlos y funcionar razonablemente. Si el problema es 2D con esa escasez, entonces un solucionador directo estará bien hasta grados de libertad. Para problemas 3D, el tamaño del problema necesitará bastante memoria y tiempo. 106
Jed Brown
Por lo tanto, mi sugerencia de probarlo primero en Matlab u Octave: verá si el solucionador puede manejarlo de manera eficiente o no. La eficiencia depende en gran medida de la estructura del problema, por lo que no será posible dar recomendaciones definitivas.
Pedro