用标量零乘法表示矩阵

时间:2014-12-18 10:35:38

标签: c++ boost matrix icc

我正在开发一个c ++项目来进行一些计算。我正在使用boost库来进行这些计算。我有一个奇怪的错误(结果不对或程序冻结)。当我检查发生了什么时,我意识到在创建了一个双打矩阵并将矩阵乘以0之后(确保所有内容都等于零,例如:

matrix<double> *A=new matrix<double>(10,100);
(*A)*=0.0;

我的矩阵并不总是被严格的0填充(这是一个被称为LOT的方法,指针被正确删除,我检查了我没有任何内存泄漏),有时是负零(-0.0)或甚至NaN !! 然后我意识到使用clear()方法会将所有值设置为默认值(对于double,它为0)。即使我确实有解决方案,这也很奇特! 像往常一样,问题是:我做错了什么(更有可能)或者库中是否有错误(不太可能)?

PS:我确实使用了intel编译器(2015版)

1 个答案:

答案 0 :(得分:0)

Boost Libraries中所述,

matrix (size_type size1, size_type size2): Allocates an uninitialized matrix that holds size1 rows of size2 elements.

所以你使用的矩阵没有初始化,导致那些奇怪的错误。 首先创建零矩阵或单位矩阵:

identity_matrix<double> matrix(3); //create a 3x3 identity matrix
zero_matrix<double> matrix(3, 3);  //create a 3x3 zero matrix