首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用apache公共EigenVectors库发出math3问题

使用apache公共EigenVectors库发出math3问题
EN

Stack Overflow用户
提问于 2015-08-27 09:24:12
回答 1查看 859关注 0票数 2

我正在用计算协方差矩阵、特征向量和特征值。所以我的主要功能是(给出了一个双矩阵):

代码语言:javascript
复制
private void coVariance(double[][] matrix) {
        RealMatrix mx = MatrixUtils.createRealMatrix(matrix);
        RealMatrix cov = new Covariance(mx).getCovarianceMatrix();
        System.out.println("***************************************");
        System.out.println("Covariance Matrix");
        for (int i = 0; i < cov.getRowDimension(); i++) {
            for (int j = 0; j < cov.getColumnDimension(); j++) {
                System.out.print(cov.getEntry(i, j) + " ");
            }
            System.out.println();
        }
        System.out.println("***************************************");
        EigenDecomposition e = new EigenDecomposition(cov);
        double[] arrayEigenValue = e.getRealEigenvalues();
        for (int i = 0; i < e.getRealEigenvalues().length; i++) {
            System.out.println("eigenValue with index " + i + " " + arrayEigenValue[i]);
            RealVector arrayEigenVector = e.getEigenvector(i);
            for (int j = 0; j < arrayEigenVector.getDimension(); j++) {
                System.out.print(arrayEigenVector.getEntry(j) + " ");
            }
            System.out.println();
            System.out.println();
        }
        System.out.println("***************************************");
    }

为了理解一切是否正确,我使用了一个已经计算过covariance/eigenValues/eigenVector的例子:

代码语言:javascript
复制
2.5,2.4
0.5,0.7
2.2,2.9
1.9,2.2
3.1,3.0
2.3,2.7
2,1.6
1,1.1
1.5,1.6
1.1,0.9

它具有协方差矩阵eigenVectors和eigenValues的结果:

代码语言:javascript
复制
0,616555556 0.615444444
0.615444444 0.716555556

eigenValues:

代码语言:javascript
复制
0.0490833989
1.28402771

eigenVectors:

代码语言:javascript
复制
1° = -0.735178656 -0.677873309
2° = 0.677873399  -0.735178656

程序的结果:

协方差矩阵

代码语言:javascript
复制
0.6165555555555556 0.6154444444444446 
0.6154444444444446 0.7165555555555555 

eigenValues:

代码语言:javascript
复制
1.2840277121727839 
0.04908339893832714

eigenVectors:

代码语言:javascript
复制
1° = -0.7351786555444081  -0.6778733985280118 
2° = -0.6778733985280118   0.7351786555444081

如你所见,特征向量在第二个0.7351786555444081的第二个值的符号上是不同的。

有人能解释一下为什么吗?

EN

回答 1

Stack Overflow用户

发布于 2016-02-12 06:17:08

Oirc,

如果你不知道矩阵中本征值的数学形式,我们用一个公式来计算它,其中|A-L.I| = 0是矩阵(行数据),L是(λ)或常数,我们在这里说,作为本征值,我是单位矩阵,等于A矩阵阶。

通过这个,我们将得到L值,它可以是正的,也可以是负的,我们将把它放到矩阵方程中来计算向量矩阵。因此,经过计算,矩阵元素可以是正的,也可以是负的。

理论上:"-"/"+"ive符号显示向量值的方向。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32245467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档