【发布时间】:2012-10-05 06:02:59
【问题描述】:
我正在使用 Apache Commons Library 进行一些基本计算,并且我有一个 2x2 对称 RealMatrix,我需要为其计算 EigenDecomposition。矩阵如下:
{{10.387035702893005, 0.14862451664049367},
{0.14862451664049442, -5.1952457826500815}}
double 类型的右上角和左下角元素应该是相同的,您会注意到它们几乎相同。但是,当我将矩阵传递给 EigenDecomposition 的新实例时,我会遇到异常。 isSymmetric() 计算结果为 false,并且因为构造函数将“true”作为参数传递,所以 isSymmetric() 方法会引发异常。我基本上需要绕过这个检查。我有哪些选择?谢谢!
public EigenDecomposition(final RealMatrix matrix,
final double splitTolerance) {
if (isSymmetric(matrix, true)) {
transformToTridiagonal(matrix);
findEigenVectors(transformer.getQ().getData());
}
}
注意分裂容差参数,人们可能认为它指定了一个容差水平,只是一个虚拟参数。
【问题讨论】:
-
你是如何构建这个矩阵的?
-
它来自一点计算。取一个大矩阵,找到它的最大非对角线行和列,然后从 [[ii, ij],[ji, jj]] 形成 2x2 矩阵。我想,通过后面涉及一些突变的计算步骤,较大矩阵 ij 和 ji 中的数字略有不同。
标签: java math inheritance apache-commons