Я разлагаю разреженную матрицу SPD A с помощью Eigen. Это будет либо разложение LLt, либо LDLt (Холецкий), поэтому мы можем предположить, что матрица будет разложена как A = P-1 LDLt P
, где P - матрица перестановок, L - треугольная нижняя и D диагональная (возможно, тождественная). Если я сделаю
SolverClassName<SparseMatrix<double> > solver;
solver.compute(A);
Эффективно ли для решения Lx=b
сделать следующее?
solver.matrixL().TriangularView<Lower>().solve(b)
Точно так же для решения Px=b
эффективно ли сделать следующее?
solver.permutationPinv()*b
Я хотел бы сделать это, чтобы вычислять bt A-1 b
эффективно и стабильно.