我有以下问题,我试图找到一种快速的编码方法。基本上就是这个问题(https://math.stackexchange.com/questions/2304623/how-to-easily-obtain-the-quadratic-form-of-an-inverse),我想使用Rcpp和Eigen计算稀疏逆三角系统的大量解。
下面是我对某些代码的第一次尝试。是否有比我目前依靠的solveInPlace
战略更快的方法?
Eigen::VectorXd fast_solution(
const Eigen::MappedSparseMatrix<double> cholL, // Lower Triangular Cholesky.
const Eigen::MappedSparseMatrix<double> Z
){
int size_Z = Z.cols();
Eigen::VectorXd output(size_Z);
for (int i = 0; i < size_Z; i++){
Eigen::SparseVector<double> v_i = Z.col(i);
cholL.triangularView<Eigen::Lower>().solveInPlace(v_i);
output[i] = v_i.squaredNorm();
}
return output;
}