Recuerdo débilmente de mis primeras conferencias "numéricas" que los solucionadores lineales iterativos para menudo requieren que cuando se descompone comoA
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 M
¿Qué pasa si ese no es el caso y las entradas de vuelven realmente pequeñas?
¿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 ω
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 ≈ 0
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 ( ω ) η 10
fuente
Respuestas:
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.
fuente
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(ω)
fuente
¿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.
fuente