Salve nas colunas das duas matrizes e todos os vetores aos quais você aplicou a matriz nas iterações anteriores e os resultados .C b j c j = A b jBCbjcj=Abj
Para cada novo sistema (ou , que é o caso especial ), resolva aproximadamente o sistema linear sobredeterminado , por exemplo, selecionando um subconjunto das linhas (possivelmente todas) e usando um método de mínimos quadrados densos. Observe que apenas a parte selecionada do precisa ser montada; então esta é uma operação rápida! A x = b ′ D = 0 ( C + D B ) y ≈ b ′ C + D B(A+D)x′=b′Ax=b′D=0(C+DB)y≈b′C+DB
Coloque . Essa é uma boa aproximação inicial com a qual iniciar a iteração para resolver . Caso outros sistemas precisem ser processados, use os produtos vetoriais de matriz nesta nova iteração para estender as matrizes e no subsistema resultante.( A + D ) x ′ = b ′ B Cx0=By(A+D)x′=b′BC
Se as matrizes e não couberem na memória principal, armazene no disco e selecione o subconjunto de linhas com antecedência. Isso permite manter no núcleo a parte relevante de e necessária para formar o sistema de mínimos quadrados, e o próximo pode ser calculado por uma passagem por com pouco uso da memória do núcleo.BCBBCx0B
As linhas devem ser selecionadas de forma que correspondam aproximadamente a uma discretização grosseira do problema completo. Tomar cinco vezes mais linhas que o número total de multiplicações de vetores de matriz esperadas deve ser suficiente.
Edit: Por que isso funciona? Por construção, as matrizes e são relacionadas por . Se o subespaço estendido pelas colunas de contiver o vetor exato da solução (uma situação rara, mas simples), então terá a forma durante algum . Substituindo isso na equação que define obtém-se a equação . Portanto, neste caso, o processo acima fornece como ponto de partida , que é a solução exata.BCC=ABBx′x′x′=Byyx′(C+DB)y=b′x0=By=x′
Em geral, não se pode esperar que esteja no espaço da coluna de , mas o ponto inicial gerado será o ponto nesse espaço de espaço mais próximo de , em uma métrica determinada pelas linhas selecionadas. Portanto, é provável que seja uma aproximação sensata. À medida que mais sistemas são processados, o espaço da coluna aumenta e é provável que a aproximação melhore muito, de modo que se possa esperar convergir em menos e menos iterações.x′Bx′
Edit2: Sobre o subespaço gerado: Se alguém resolver cada sistema com um método Krylov, os vetores usados para obter o ponto de partida para o segundo sistema abrangem o subespaço Krylov do primeiro lado direito. Assim, obtém-se uma boa aproximação sempre que esse subespaço de Krylov contiver um vetor próximo à solução do seu segundo sistema. Em geral, os vetores usados para obter o ponto de partida para o sistema st abrangem um espaço que contém o subespaço de Krylov dos primeiros lados do lado direito.(k+1)k