如何在一定程度上测试ojalgo中两个MatrixStore的相等性?

时间:2019-03-26 09:18:36

标签: equality ojalgo

ojalgo是否提供一种有效的方法来测试两个矩阵是否相等?

例如,我想知道MatrixStore A是否等于MatrixStore B,直到达到一定的公差水平。

我可以使用嵌套的for循环来实现朴素的测试,但是我想知道在更大的矩阵上是否有更有效的计算方法。

我要实现的目标类似于Python numpy的allclose方法,在该方法中,用户可以指定两个输入numpy数组和一个公差值,以检查两个数组是否等于该范围。

假设我有2个MatrixStores随机填充

storeA = storeFactory.makeFilled(5,5,new Weibull(5.0,2.0));
storeB = storeFactory.makeFilled(5,1,new Weibull(5.0,2.0));

然后我解方程Ax = B

SolverTask linsolv = SolverTask.PRIMITIVE.make(storeA, storeB);
storeX = linsolv.solve(storeA,storeB);

我知道在某种程度上,storeX应该等于storeB,但是如何验证呢?

我期望以下内容或一些允许比较2个矩阵的函数

storeB.equals( storeA.multiply(storeX) );

返回True。

1 个答案:

答案 0 :(得分:0)

NumberContext accuracy = ...
storeB.equals(storeA.multiply(storeX), accuracy);