声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2188|回复: 2

[编程技巧] 【什么原理】一种解决eig求特征向量内存溢出的方案

[复制链接]
发表于 2011-5-12 10:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

使用道具 举报

 楼主| 发表于 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
 楼主| 发表于 2011-5-12 10:26 | 显示全部楼层
显然这个数学模型是
x=((A-k(ii)E)-1)*[1 1 1 ……1 1 1];

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

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

但是为什么这么求??

PS:理论上,特征值向量都应该是一个正弦波,这是模型决定的
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-14 18:36 , Processed in 0.194465 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表