Пожалуйста, Google или Википедия для модных слов ниже.
Во-первых, убедитесь, что вы действительно хотите обратное.Решение системы не требует обращения матрицы.Матричная инверсия может быть выполнена путем решения n систем с единичными векторами базисов в качестве правых частей.Поэтому я сосредоточусь на решении систем, потому что это обычно то, что вы хотите.
Это зависит от того, что означает «большой».Методы, основанные на декомпозиции, обычно должны хранить всю матрицу.После того, как вы разложили матрицу, вы можете решить для нескольких правых частей одновременно (и, таким образом, легко инвертировать матрицу).Я не буду обсуждать здесь методы факторизации, поскольку вы, вероятно, уже знаете их.
Обратите внимание, что когда матрица велика, ее номер условия очень вероятно будет близок кноль, что означает, что матрица является «численно необратимой».Помощь: Предварительное кондиционирование .Проверьте Википедию для этого.Статья хорошо написана.
Если матрица большая, вы не хотите ее хранить.Если в нем много нулей, то это разреженная матрица .Либо у него есть структура (например, диагональ полосы , блочная матрица , ...), и у вас есть специальные методы для решения систем, включающих такие матрицы, либо у него нет.
Когда вы сталкиваетесь с разреженной матрицей без очевидной структуры или с матрицей, которую не хотите хранить, вы должны использовать итерационные методы.Они включают только умножения матрицы на вектор, которые не требуют особой формы хранения: вы можете вычислять коэффициенты, когда они вам нужны, или хранить ненулевые коэффициенты так, как вы хотите, и т. Д.
Методыявляются:
- Для симметричных определенных положительных матриц: метод сопряженных градиентов .Короче говоря, решение Ax = b сводится к минимуму 1/2 x ^ TA x - x ^ T b.
- Метод двухконъюгатного градиента для общих матриц.Нестабильный, хотя.
- Минимальные остаточные методы, или лучше всего, GMRES.Пожалуйста, проверьте статьи в Википедии для деталей.Вы можете поэкспериментировать с количеством итераций перед перезапуском алгоритма.
И, наконец, вы можете выполнить некоторую факторизацию с разреженными матрицами, с помощью специально разработанных алгоритмов, чтобы минимизировать число ненулевыхэлементы для хранения.