这个功能有什么明显的可怕吗?它偶尔会评估为0.0,而它应该给我一个非常小的数字。
#include <Eigen/Core>
typedef Eigen::Matrix< long double, Eigen::Dynamic, 1 > Vec;
typedef Eigen::Matrix< long double, Eigen::Dynamic, Eigen::Dynamic > Mat;
long double evalMultivNorm(const Vec &x, const Vec &meanVec, const Mat &covMat)
{
long double quadform = (x - meanVec).transpose() * covMat.inverse() * (x-meanVec);
long double normConst = pow(inv_sqrt_2pi, covMat.rows()) * pow(covMat.determinant(), -.5);
return normConst * exp(-.5* quadform);
}