Guardar en las columnas de dos matrices y C todos los vectoresBC a los que aplicó la matriz en las iteraciones anteriores y los resultados c j = A b j .bjcj=Abj
Para cada nuevo sistema (o A x = b ′ , que es el caso especial D = 0 ), resuelva aproximadamente el sistema lineal sobredeterminado ( C + D B ) y ≈ b ′ , p. Ej. , seleccionando un subconjunto de las filas (posiblemente todas) y utilizando un método denso mínimo cuadrado. Tenga en cuenta que solo la parte seleccionada de C + D B necesita ser ensamblada; ¡Esta es una operación rápida!(A+D)x′=b′Ax=b′D=0(C+DB)y≈b′C+DB
Pon . Esta es una buena aproximación inicial con la cual comenzar la iteración para resolver ( A + D ) xx0=By . En caso de que se deban procesar más sistemas, use los productos de vector de matriz en esta nueva iteración para extender las matrices B y C en el subsistema resultante.(A+D)x′=b′BC
Si las matrices y C no caben en la memoria principal, almacene B en el disco y seleccione el subconjunto de filas por adelantado. Esto le permite mantener en el núcleo la parte relevante de B y C necesaria para formar el sistema de mínimos cuadrados, y el siguiente x 0 puede calcularse mediante una pasada a través de B con poco uso de la memoria central.BCBBCx0si
Las filas deben seleccionarse de tal manera que correspondan aproximadamente a una discreta discreción del problema completo. Tomar cinco veces más filas que el número total de multiplicaciones esperadas de vectores de matriz debería ser suficiente.
Editar: ¿Por qué funciona esto? Por construcción, las matrices y C están relacionados por C = A B . Si el subespacio atravesado por las columnas de B contiene el vector de solución exacto x ' (una situación rara pero simple), entonces x ' tiene la forma x ' = B y para algunos y . Sustituyendo esto en la ecuación que define x ′ se obtiene la ecuación ( C + D B ) y = b ′siCC= A BsiX′X′X′= B yyX′( C+ D B ) y= b′. Por lo tanto, en este caso, el proceso anterior da como punto de partida , que es la solución exacta.X0 0= B y= x′
En general, no se puede esperar encuentre en el espacio de la columna de B , pero el punto de partida generado será el punto en este espacio nublado más cercano a x ' , en una métrica determinada por las filas seleccionadas. Por lo tanto, es probable que sea una aproximación sensata. A medida que se procesan más sistemas, el espacio de la columna crece y la aproximación probablemente mejorará mucho, por lo que uno puede esperar converger en cada vez menos iteraciones.X′siX′
Edit2: Acerca del subespacio generado: si uno resuelve cada sistema con un método de Krylov, los vectores utilizados para obtener el punto de partida para el segundo sistema abarcan el subespacio de Krylov del primer lado derecho. Por lo tanto, se obtiene una buena aproximación cada vez que este subespacio de Krylov contiene un vector cercano a la solución de su segundo sistema. En general, los vectores utilizados para obtener el punto de partida para el st abarcan un espacio que contiene el subespacio de Krylov de los primeros k lados derechos.( k + 1 )k