标签: eigenvector

用于特征向量/特征值计算的Java包?

你推荐哪个java包来计算特征向量/特征值?我知道JMathToolsJAMA ; 你有这些包的赞成还是缺点?其他建议?

java package eigenvalue eigenvector

4
推荐指数
1
解决办法
1万
查看次数

MATLAB中的幂法

我想在MATLAB中实现用于确定矩阵的主导特征值和特征向量的幂方法

到目前为止,这是我写的内容:

%function to implement power method to compute dominant
%eigenvalue/eigenevctor
function [m,y_final]=power_method(A,x);
m=0;
n=length(x);
y_final=zeros(n,1);
y_final=x;
tol=1e-3;
while(1)
    mold=m;
 y_final=A*y_final;
 m=max(y_final);
 y_final=y_final/m;
 if (m-mold)<tol
     break;
 end
end
end
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,这是一个数字示例:

 A=[1 1 -2;-1 2 1; 0 1 -1]

A =

     1     1    -2
    -1     2     1
     0     1    -1

>> x=[1 1 1];
>> x=x';
>> [m,y_final]=power_method(A,x);
>> A*x

ans =

     0
     2
     0
Run Code Online (Sandbox Code Playgroud)

与MATLAB中上述矩阵的特征值和特征向量进行比较时,我做到了:

[V,D]=eig(A)

V =

    0.3015   -0.8018    0.7071
    0.9045   -0.5345    0.0000
    0.3015   -0.2673    0.7071


D …
Run Code Online (Sandbox Code Playgroud)

matlab matrix linear-algebra eigenvector numerical-methods

4
推荐指数
1
解决办法
1万
查看次数

Matlab不返回特征向量的正交矩阵

当我试图在Matlab中找到具有重复特征值但没有缺陷的矩阵的特征分解时,它没有返回eignevectors的标准正交矩阵.例如:

k = 5;
repeats = 1;

% First generate a random matrix of eignevectors that is orthonormal
V = orth(rand(k));

% Now generate a vector of eigenvalues with the given number of repeats
D = rand(k,1);
for i = 1:repeats
    % Put one random value into another (note this sometimes will result in
    % less than the given number of repeats if we ever input the same
    % number)
    D(ceil(k*rand())) = D(ceil(k*rand()));
end

A = V'*diag(D)*V;

% Now test …
Run Code Online (Sandbox Code Playgroud)

matlab matrix linear-algebra eigenvalue eigenvector

4
推荐指数
1
解决办法
1622
查看次数

Julia:eigs()函数在每次评估后返回不同的值

我注意到在多次运行eigs()函数后,每次它给出不同但近似的结果.

有没有办法每次都返回相同的结果?输出有时带有"+"符号或" - "符号.

M的内容:

[2, 1]  =  1.0
[3, 1]  =  0.5
[1, 2]  =  1.0
[3, 2]  =  2.5
[1, 3]  =  0.5
[2, 3]  =  2.5

M = M+M'
(d, v) = eigs(M, nev=1, which=:LR)
Run Code Online (Sandbox Code Playgroud)

我尝试在Python中的相同稀疏矩阵上运行相同的函数,尽管矩阵看起来有点不同,我认为它是相同的.左边的值从0开始编号.在朱莉亚,它们从1开始编号.我不知道这是否有很大差异.Julia和Python中的值大致相同,但在Python中,每次评估后它们总是相同的.此外返回蟒蛇值是复数,在朱莉娅真实.

Python代码:

MT的内容:

from scipy.sparse import linalg

(1, 0)  1.0
(2, 0)  0.5
(0, 1)  1.0
(2, 1)  2.5
(0, 2)  0.5
(1, 2)  2.5

eigenvalue, eigenvector = linalg.eigs(M.T, k=1, which='LR')
Run Code Online (Sandbox Code Playgroud)

知道为什么会发生这种行为吗?

编辑:

这些是对四次评估的结果 …

eigenvalue eigenvector julia

4
推荐指数
1
解决办法
1414
查看次数

用特征向量矩阵对特征值矩阵进行排序

我有列矢量形式的N个特征值.因此,存在与这些特征值对应的N个本征向量,形成特征向量矩阵.

现在,我正在处理的问题要求我按降序对特征值列向量进行排序.如何按照与特征值相同的顺序对特征向量矩阵进行排序以保持对应?

sorting wolfram-mathematica eigenvalue eigenvector

3
推荐指数
2
解决办法
7626
查看次数

仅搜索矩阵的第一(特征)特征值和特征向量 - MATLAB

我想通过有限差分方法解决PDE的特征值问题.因此我的问题被简化为矩阵特征值问题.问题是这个矩阵的大小会非常大,如果我使用该函数,eig它会搜索所有特征值和特征向量,这在我看来是浪费时间.

在找到第一个k特征值后,是否有可能使特征值算法停止?(其中k是一个小的正整数)

matlab eigenvalue eigenvector

3
推荐指数
1
解决办法
1969
查看次数

最大的特征向量和可能的Scipy古怪

不确定这是否是包中的错误或由于其他原因,但我们继续.

我正在使用以下包在相似度得分的对称矩阵(大小为10x10)上找到最大的特征值及其对应的特征向量:

scipy.sparse.linalg.eigen.arpack.eigsh
Run Code Online (Sandbox Code Playgroud)

,像这样:

scipy.sparse.linalg.eigen.arpack.eigsh(mymatrix, 1, which='LM')
Run Code Online (Sandbox Code Playgroud)

现在的问题是,当我运行它几次(使用相同的矩阵,设置等)时,有时特征向量中的值是正的,有时是负的(参见运行3).

有谁知道为什么会这样,或者它是一个错误?似乎没有一种模式,但它只发生在每次迭代后运行代码而不关闭Python时(即每次运行后点击F5).

### Run 1: ###
[[-0.31056873]
[-0.31913092]
[-0.3149287 ]
[-0.32262921]
[-0.32190688]
[-0.31292658]
[-0.32424732]
[-0.31885208]
[-0.31808024]
[-0.298174  ]]

### Run 2: ###
[[-0.31056873]
[-0.31913092]
[-0.3149287 ]
[-0.32262921]
[-0.32190688]
[-0.31292658]
[-0.32424732]
[-0.31885208]
[-0.31808024]
[-0.298174  ]]

### Run 3:###
[[ 0.31056873]
[ 0.31913092]
[ 0.3149287 ]
[ 0.32262921]
[ 0.32190688]
[ 0.31292658]
[ 0.32424732]
[ 0.31885208]
[ 0.31808024]
[ 0.298174  ]]

### Run 4: ###
[[-0.31056873]
[-0.31913092]
[-0.3149287 ]
[-0.32262921]
[-0.32190688]
[-0.31292658]
[-0.32424732] …
Run Code Online (Sandbox Code Playgroud)

python scipy eigenvalue eigenvector

3
推荐指数
1
解决办法
391
查看次数

主成分使用Matlab中的不同函数计算

我试图理解Matlab中的主成分分析,

似乎至少有3种不同的功能可以做到这一点.

我在下面的代码中有一些问题:

  1. x是否正确使用一个特征向量(对应于最大特征值的特征向量)创建近似值?我认同??

  2. 为什么PCV哪些都是(x'x)表示不同的载荷?列顺序是相反的,因为eig不会首先排序具有最大值的特征值,但为什么它们彼此为负?

  3. 为什么这些eig值不是与特征向量一致的,与第一列中最大的特征值相对应?

  4. 使用下面的代码,我回到输入矩阵x使用时svdeig,但是从princomp的结果似乎是完全不同的?我需要做些什么来使princomp与其他两个函数相匹配?

码:

x=[1 2;3 4;5 6;7 8 ]

econFlag=0;

[U,sigma,V] = svd(x,econFlag);%[U,sigma,coeff] = svd(z,econFlag);

U1=U(:,1);
V1=V(:,1);
sigma_partial=sigma(1,1);

score1=U*sigma;
test1=score1*V';

score_partial=U1*sigma_partial;
test1_partial=score_partial*V1';



[PC, D] = eig(x'*x)

 score2=x*PC;
test2=score2*PC';

PC1=PC(:,2);
score2_partial=x*PC1;
 test2_partial=score2_partial*PC1';

[o1 o2 o3]=princomp(x);
Run Code Online (Sandbox Code Playgroud)

matlab svd eigenvector pca

3
推荐指数
1
解决办法
2772
查看次数

iOS - GPU加速矩阵转置,乘法和特征分解困境

我正在开发一个需要在iOS平台上使用向量和矩阵的库.我决定研究OpenGLES,因为我计划进行的矩阵和矢量操作(主要是转置,矩阵乘法和特征分解)肯定会受益于GPU加速.

问题是我不熟悉OpenGLES,老实说可能不是最好的选择.如果我要使用OpenGLES,我是否必须手动编写执行矩阵转置,乘法和特征分解的算法?或者是否有另一个Apple或第三方框架可以帮助我完成这些任务.

然而,主要的分歧是我希望这些操作是GPU加速的.


我将使用Accelerate Framework和矢量化算法实现我的程序,然后测试它是否足够快以达到我的目的,如果不是,那么尝试GPU实现.

opengl-es matrix eigenvector ios accelerate-framework

3
推荐指数
1
解决办法
1558
查看次数

Hermitian 矩阵的特征向量

埃尔米特矩阵是一个复方矩阵,等于其共轭转置。其矩阵元素满足以下条件:

$$a_{ij} = \bar{a}_{ji}$$

每次,我使用 Python 计算 Hermitian 矩阵的特征向量时,特征向量的第一个系数都是纯实数。这是 Hermitian 矩阵的属性吗?

我附加了一个代码片段来生成埃尔米特矩阵,计算其特征向量并打印与最低特征值相对应的特征向量。

import numpy as np
from numpy import linalg as LA
N = 5   # Set size of a matrix
# Generate real part of the matrix at first
real_matrix = np.random.uniform(-1.0, 1.0, size=(N,N))
real_matrix = (real_matrix + real_matrix.T)/2
# Generate imaginary part of the matrix
imaginary_matrix = np.random.uniform(-1.0, 1.0, size=(N,N))
imaginary_matrix = (imaginary_matrix + imaginary_matrix.T)/2
imaginary_matrix = imaginary_matrix.astype(complex) * 1j
for row in range(N):
    for column in range(row,N):
        if row == …
Run Code Online (Sandbox Code Playgroud)

python numpy matrix linear-algebra eigenvector

3
推荐指数
1
解决办法
813
查看次数