Сохраните в столбцах двух матриц и все векторы к которым вы применяли матрицу на предыдущих итерациях, и результаты .BCbjcj=Abj
Для каждой новой системы (или , что является особым случаем ), приблизительно решить переопределенную линейную систему , например, выбрав подмножество строк (возможно, все) и используя плотный метод наименьших квадратов. Обратите внимание, что только выбранная часть должна быть собрана; так что это быстрая операция!(A+D)x′=b′Ax=b′D=0(C+DB)y≈b′C+DB
Положите . Это хорошее начальное приближение, с которого начинается итерация для решения . В случае, если дальнейшие системы должны быть обработаны, используйте матричные векторные произведения в этой новой итерации, чтобы расширить матрицы и в результирующей подсистеме.x0=By(A+D)x′=b′BC
Если матрицы и не помещаются в основную память, сохраните на диске и заранее выберите поднабор строк. Это позволяет вам хранить в ядре соответствующую часть и необходимую для формирования системы наименьших квадратов, и следующий может быть вычислен за один проход через с небольшим использованием памяти ядра.BCBBCx0B
Строки должны быть выбраны таким образом, чтобы они приблизительно соответствовали грубой дискретизации полной задачи. Достаточно взять в пять раз больше строк, чем общее число ожидаемых умножителей на матрицы.
Редактировать: Почему это работает? По построению матрицы и связаны соотношением . Если подпространство, натянутое на столбцы содержит точный вектор решения (редкая, но простая ситуация), то имеет вид для некоторого . Подставляя это в уравнение, определяющее получаем уравнение . Таким образом, в этом случае вышеуказанный процесс дает в качестве отправной точки , что является точным решением.BCC=ABBx′x′x′=Byyx′(C+DB)y=b′x0=By=x′
В общем, нельзя ожидать, что будет лежать в пространстве столбцов , но сгенерированная отправная точка будет точкой в этом неясном пространстве, ближайшей к , в метрике, определяемой выбранными строками. Таким образом, это, вероятно, разумное приближение. По мере того, как обрабатывается больше систем, пространство столбцов увеличивается, и аппроксимация, вероятно, значительно улучшится, так что можно надеяться на сходимость за меньшее и меньшее количество итераций.x′Bx′
Edit2: О сгенерированном подпространстве: если каждый решает каждую систему методом Крылова, векторы, используемые для получения начальной точки для второй системы, охватывают подпространство Крылова первой правой части. Таким образом, можно получить хорошее приближение всякий раз, когда это подпространство Крылова содержит вектор, близкий к решению вашей второй системы. В общем, векторы, используемые для получения начальной точки -й системы, охватывают пространство, содержащее подпространство Крылова первых правых частей.(k+1)k