身份负零

问题描述 投票:0回答:1

我需要知道此代码对计算是否有任何不利影响

MatrixXd A = -Matrix<double,20,20>::Identity();

创建带有负数的单位矩阵。打印出上述矩阵对于非对角线元素会产生

-0
,从数学角度来看这是没有意义的。我问这个是因为矩阵需要传递给优化求解器。

c++ floating-point eigen3
1个回答
1
投票

-0.0 和 0.0 具有相同的数学。矩阵中的 -0.0 对于 优化求解器 应该不会造成任何问题。考虑 -0.0 确实会出现在其他微妙的情况下,例如将非常小的负中间数舍入到 0.0(例如

DBL_TRUE_MIN/-3.0
),并且对于优化器来说不太可能是特殊情况。

某些运算使用零符号来形成独特的结果。我可以看到你的优化求解器形成了-无穷大,否则就会出现+无穷大。

将 0.0 添加到数字(可能是 -0.0)通常会去掉总和中的负号,但不会影响数学

© www.soinside.com 2019 - 2024. All rights reserved.