我有一个使用JAMA的程序,需要测试是否可以反转矩阵。我知道我可以尝试并捕获异常,但这似乎是一个坏主意(在“正常”代码路径中包含catch块似乎是错误的形式)。

最好还返回一个逆运算(或比逆运算运行O()更好的测试)。

最佳答案

通常,如果您不能求解矩阵,则它是单数的(不可逆的)。我相信JAMA这样做的方式是尝试使用LU分解来解决矩阵,如果失败,它将为isSingular()返回“ true”。

确实没有一种通用的方法可以仅查看矩阵的元素并确定其是否为奇异-您需要检查每一列以查看其是否与其他列正交(即,矩阵的零空间为0)。 LU分解非常快,通常...但是,有时需要花费大量的时间。

您是否有要解决的实际速度问题?

08-05 19:43