Есть ли что-то явно ужасное с этой функцией? Время от времени оно будет равняться 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);
}
Задача ещё не решена.
Других решений пока нет …