我作为一名本科生从事物理研究,为此我必须使用 c++ 将 348x348 的大矩阵相乘。我的老师让我使用较小的矩阵(例如 6x6 和 12x12)测试我的代码,使用这些矩阵,我得到了我想要的东西。但是,当我尝试对 348x348 情况使用相同的确切代码时,我没有得到矩阵乘法的正确输出。我让程序读取一些数据并将数据作为矩阵放置,并且我已经检查以确保所有数据都已正确读取。但是,我仍然没有得到正确的矩阵乘积。我正在使用 c++ 库 Eigen,并且我正在读取矩阵元素的数字作为双精度数。我的老师用她自己的程序完成了计算,她得到了正确的结果。所以,
myOutfile << NormCoord.transpose() * SqrtMass * NormCoord << endl;
这是实际的乘法。我应该得到单位矩阵,但是对于较大的矩阵,对角线元素偏离了 2 倍,并且一些非对角线元素在我希望它们至少在 0.0001 的数量级上有点太大了10^(-6) 的数量级