Dentro de un solucionador de DG (hasta ahora 1D) necesito resolver un sistema lineal de ecuaciones varias veces. El orden del sistema es bastante pequeño ( $N=10..20$ ). Necesito resolver el sistema $Ax=b$ , donde $A$ es la acumulación de la matriz de rigidez y la matriz de masa y otros términos más un componente del flujo de entrada. Por tanto, mi matriz $A$ tiene (hasta ahora) las siguientes propiedades.
- $A+A^T$ es diagonal
- $A_{11}\approx \sum_i \sum_j A_{ij}$
- $A_{11}\approx \frac12 \sum_i \sum_j |A_{ij}|$
Es decir, que $A$ tiene una entrada diagonal que es significativamente mayor que todos los demás valores. Mi lado derecho no tiene propiedades notables, todas las entradas son aproximadamente del mismo orden (o al menos no hay propiedades similares a las de $A$ )
Hasta ahora, simplemente resuelvo la ecuación con
x=A\b
que tiene que hacerse con bastante frecuencia. Muy a menudo, tengo una estimación aproximada de $x$ y también $A$ y $b$ suelen ser similares de una iteración a otra.
Así que esta es mi pregunta: ¿Hay algún método que pueda considerar para acelerar el cálculo? ¿Crees que para sistemas tan pequeños, hay alguna posibilidad de ganar algo, en comparación con la solución estándar de MATLAB? ¿Puedo hacer uso del hecho, que sé que $A = M + E$ , donde $E$ sólo contribuye a $A_{11}$ y $M$ se mantiene igual a lo largo de múltiples iteraciones?
Gracias.