使用Rcpp特征值和Cholesky快速解决下三角系统的问题

时间:2019-06-08 01:49:16

标签: eigen rcpp matrix-inverse

我有以下问题,我试图找到一种快速的编码方法。基本上就是这个问题(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;
}

0 个答案:

没有答案