JulianChin 发表于 2011-5-12 10:19

【什么原理】一种解决eig求特征向量内存溢出的方案

众所周知,eig能求所有特征向量,但是大矩阵容易内存溢出
eigs速度快,但是只能求前六个
最近发现了一个老外写的已知所有特征值求所有特征向量方法,但是原理怎么也想不通
模型是这样的
Ax=xK,A是一个稀疏阵,x是特征向量,K是特征值对角阵,现在要求所有的x元素,程序如下:

JulianChin 发表于 2011-5-12 10:22

本帖最后由 JulianChin 于 2011-5-12 10:22 编辑

k= eig( A ); %求特征值
k = flipud( sort( k ) ); %按大小排列
m=length(k);
% inverse iteration for eigenfunctions
B=speye( size( A ) );%生成E矩阵

for ii = 1:m
   x(:,ii) = ( A - k( ii ) * speye( size( A ) ) ) \ ones( m, 1 );
end

JulianChin 发表于 2011-5-12 10:26

显然这个数学模型是
x=((A-k(ii)E)-1)*;

而实际上我们要求的是Ax=k(ii)x

我知道这个算法的目的,这段老外的程序,求的就是Ax=k(ii)x

但是为什么这么求??

PS:理论上,特征值向量都应该是一个正弦波,这是模型决定的
页: [1]
查看完整版本: 【什么原理】一种解决eig求特征向量内存溢出的方案