我试图将所有元素乘以对角线。例如,如果我想找到可以使用+=
的总和,但每当我尝试使用*=
时,它都会返回正确的答案。这是我的代码:
std::vector<std::vector<double> > U =
{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
};
double calculateDet(const std::vector<std::vector<double> > matrix )
{
double det = 0.0;
for(unsigned i = 0; (i < matrix.size()); i++)
{
for(unsigned j=0; (j < matrix[i].size()); j++)
{
if(i == j)
{
det *= matrix[i][j];
}
}
}
return det;
}
计算应该是:1*5*6 = 30
但是,我得到的答案是0。
有什么想法吗?
编辑:
我也试过使用求和,所以:det += matrix[i][j] * matrix[i][j]
但是给了我更高的价值。
答案 0 :(得分:10)
在您的代码中
double det = 0.0;
<...>
det *= matrix[i][j];
如果你将任何东西乘以零,你就会得零。您应该使用det
初始化1
。