Разреженные линейные системы появляются с возрастающей частотой в приложениях. Для решения этих систем нужно выбирать из множества процедур. На самом высоком уровне существует водораздел между прямым (например, разреженным методом исключения Гаусса или разложением Холецкого, со специальными алгоритмами упорядочения и мультифронтальными методами) и итерационным (например, GMRES, (би-) сопряженным градиентом) методами.
Как определить, использовать ли прямой или итерационный метод? Сделав этот выбор, как выбрать определенный алгоритм? Я уже знаю об использовании симметрии (например, использовать сопряженный градиент для разреженной симметричной положительно определенной системы), но есть ли другие соображения, подобные этому, которые следует учитывать при выборе метода?
Выбор между прямым и итерационным методами зависит от поставленных целей и задач.
Для прямых методов мы можем отметить:
Для итерационных методов мы можем отметить:
Рекомендации, когда использовать прямые или итерационные методы?
источник
Я полностью согласен с уже даными ответами. Я хотел добавить, что все итерационные методы требуют некоторого начального предположения. Качество этого первоначального предположения часто может влиять на скорость сходимости выбранного вами метода. Такие методы, как Jacobi, Gauss Seidel и Successive Over Relaxation, все работают для итеративного «сглаживания» как можно большего количества ошибок на каждом шаге ( подробности см. В этой статье).) Первые несколько шагов довольно быстро уменьшают высокочастотную ошибку, но низкочастотная погрешность требует гораздо больше итераций для сглаживания. Это то, что делает сближение медленным для этих методов. В таких случаях, как это, мы можем ускорить сходимость, решая сначала низкочастотную ошибку (например, решая ту же проблему на более грубой сетке), затем решая ошибку более высокой частоты (например, на более мелкой сетке). Если мы применяем эту концепцию рекурсивно, разделяй и властвуй, мы получим то, что называется многосеточным методом. Даже если линейная система не является симметричной, существуют альтернативные реализации многосеточного метода для любой неособой разреженной матричной системы (например, алгебраический многосеточный метод), которая может ускорить сходимость решателя. Однако их масштабируемость на параллельных системах является предметом множества исследований.,
источник
В вашем вопросе отсутствует важная часть информации: откуда взялась матрица. Структура проблемы, которую вы пытались решить, имеет большой потенциал, чтобы предложить метод решения.
Если ваша матрица возникла из уравнения с частными производными с гладкими коэффициентами, геометрический многосеточный метод будет трудно победить, особенно в трех измерениях. Если ваша задача менее регулярна, алгебраическая многосетка - хороший метод. Оба обычно сочетаются с крыловскими методами. Другие эффективные решатели могут быть получены из быстрых мультипольных методов или быстрого преобразования Фурье.
источник