单元测试3X3或4X4行列式

时间:2014-03-28 00:46:22

标签: c++ unit-testing math

是否存在类似于A * A -1 = I的任何数学属性,可用于测试单位测试中格式的行列式的计算?

3 个答案:

答案 0 :(得分:3)

手动计算已知数组(或数组)的行列式,并将结果与​​该数字进行比较。

尝试不同大小,排列等的数组。

顺便说一下,我不会使用A * A -1 = I作为反向或乘法的确定性测试。单元测试通常针对特定的常量结果测试一件事。测试两个抵消操作可能会导致误报 - 例如你的“乘法”代码只能返回常量标识数组,你的测试不会失败。

答案 1 :(得分:1)

您可能需要查看http://en.wikipedia.org/wiki/Determinant#Properties_of_the_determinant。 其中一些在单元测试中非常简单(例如det(I)= 1,det(A T )= det(A),det(cA)= c n det(A)),直接或用于推导特定的“极端情况”。

还有其他属性依赖于其他矩阵操作的正确实现。这可能会使它们对于单元测试目的而言不那么有趣,因为您无法轻易确定测试失败。

答案 2 :(得分:0)

你可以使用Sylvester's theorem获得一些测试用例在链接的符号中,如果你将A作为列向量而将B作为行向量,那么右边是标量的行列式,这就是那个标量。

更明确地我说如果A和B是向量而M是矩阵

M[i,j] = I[i,j] + A[i]*B[j]

(我是单位矩阵)然后

det( M) = 1 + Sum{ i | A[i]*B[i]}