Rcpp eig_sym和R的本征未提供相同的结果

时间:2019-04-01 08:00:39

标签: r rcpp eigenvalue

我目前在使用Rcpp计算特征值时遇到问题。尽管在Armadillo的网页上指出,使用Rcpp的app.js不会得到与R的login.js相同的结果(例如,http://gallery.rcpp.org/articles/armadillo-eigenvalues/ )。

我将使用以下Rcpp函数(与在线提供的功能相同):

eig_sym

并使用以下代码行:

eigen

我得到:

#include <RcppArmadillo.h>

// [[Rcpp::depends(RcppArmadillo)]]

// [[Rcpp::export]]
arma::vec getEigenValues(arma::mat M) {
  return arma::eig_sym(M);
}

这种不一致来自何处? Rcpp命令中的虚部也完全缺失,这不会打扰我,因为我只对实部感兴趣。我希望有人能启发我!

最诚挚的问候!

1 个答案:

答案 0 :(得分:4)

您的矩阵不对称,因此eig_sym是不正确的。您可以将以下C ++代码与eig_gen一起使用。

#include <RcppArmadillo.h>

// [[Rcpp::depends(RcppArmadillo)]]

// [[Rcpp::export]]
arma::cx_vec getEigenValues(arma::mat M) {
  return arma::eig_gen(M);
}