Я решаю для огромной разреженной положительно определенной матрицы используя метод сопряженного градиента (CG). Можно вычислить детерминант А, используя информацию, полученную в ходе решения?A
Я решаю для огромной разреженной положительно определенной матрицы используя метод сопряженного градиента (CG). Можно вычислить детерминант А, используя информацию, полученную в ходе решения?A
Ответы:
Вычисление детерминанта разреженной матрицы обычно так же дорого, как и прямое решение, и я скептически отношусь к тому, что CG очень поможет в ее вычислении. Можно было бы запустить CG для итераций (где A - n × n ), чтобы сгенерировать информацию для всего спектра A , а затем вычислить определитель как произведение собственных значений, но это будет как медленно, так и численно нестабильный.
Лучше было бы вычислить разреженную факторизацию Холецкого вашей матрицы, скажем, , где L - нижнетреугольная. Тогда det ( A ) = det ( L ) det ( L H ) = | дет ( L ) | 2 , где det ( L ) является просто произведением диагональных элементов нижней треугольной матрицы L, поскольку собственные значения треугольной матрицы лежат вдоль ее диагонали.
В случае общей неособой матрицы следует использовать развернутое LU-разложение, скажем, , где P - матрица перестановок, так что det ( A ) = det ( P - 1 ) ⋅ det ( L) ) ⋅ дет ( U ) . Поскольку P - матрица перестановок, det ( P ) = ± 1 и, по построению, L
Не вдаваясь (опять же) в то, почему и как детерминанты являются злыми, давайте предположим, что ваш оператор либо не легко разложим, либо просто не доступен как матрица вообще, и вам действительно нужно оценить его детерминант.
Вы можете, вероятно, перепроектировать, как эта оценка детерминанта происходит в стандартной реализации CG, следуя внимательно Разделу 6.7.3 книги.