Arnoldi方法求特征值:matlab中eigs函数的一个使用示例
2017-07-27 22:11
736 查看
最基本的特征值问题分为三类:
1、标准的线性特征值问题:
Ax=λx,A∈Cn∗n
2、普遍的线性特征值问题:
Ax=λBx,A、B∈Cn∗n
3、普遍的艾米特正定线性特征值问题:
Ax=λBx,A、B∈Cn∗n
A∗=A,B∗=B>0∈Cn∗n
Arnoldi方法求特征值是特别常用的一个方法,matlab的内置函数eigs就是用了这个方法,一起来看看。
其中的RandomWalkProb.m:
1、标准的线性特征值问题:
Ax=λx,A∈Cn∗n
2、普遍的线性特征值问题:
Ax=λBx,A、B∈Cn∗n
3、普遍的艾米特正定线性特征值问题:
Ax=λBx,A、B∈Cn∗n
A∗=A,B∗=B>0∈Cn∗n
Arnoldi方法求特征值是特别常用的一个方法,matlab的内置函数eigs就是用了这个方法,一起来看看。
% demo routine for the usage of MATLAB eigs function. % Example: Compute eigenvalues of a matrix A close to sigma, % using shift and invert spectral transformation. rng(0);%设置随机种子 A = RandomWalkProb(15);%产生随机矩阵 n = length(A);%矩阵长度 sigma = 0.01; %最终是为了找出离sigma最近的特征值 [L, U, P] = lu(A - sigma * eye(n));%LU分解, L*U = P*A,此因A不一定能LU分解 Afun = @(x) U \ (L \ (P*x));%Afun其实就是1/(A-sigmaI) opts.isreal = true;%1 if A or A-sigma*B represented by Afun is real, 0 otherwise. opts.issym = false;%1 if A or A-sigma*B represented by Afun is symmetric, 0 otherwise. opts.disp = 2;%Diagnostic information display level. num = 3; [V, E] = eigs(Afun, n, num, sigma, opts);%调用了eigs函数,对求距离sigma最近的num个矩阵 %结果最后V是特征向量组成的矩阵,E的对角线是特征值 % END
其中的RandomWalkProb.m:
function A = RandomWalkProb(k) % Function A = RandomWalkProb(k) generate a stochastic matrix A % of size n = (k+1)*(k+2)/2. % % References: % Y. Saad, Numerical Methods for Large Eigenvalue Problems, Revised ed. % SIAM, Philadelphia, 2011. pp 36--37. % II = []; JJ = []; VV = []; idx = @(i,j) i*(2*k-i+3)/2+j+1; for i = 0:k for j = 0:k-i % (i,j) --> (i-1, j) if i>0 II = [II, idx(i,j)]; JJ = [JJ, idx(i-1,j)]; VV = [VV, (i+j)/2/k * (1+(j==0))]; end % (i,j) --> (i, j-1) if j>0 II = [II, idx(i,j)]; JJ = [JJ, idx(i,j-1)]; VV = [VV, (i+j)/2/k * (1+(i==0))]; end % (i,j) --> (i+1, j) if j+i<k II = [II, idx(i,j)]; JJ = [JJ, idx(i+1,j)]; VV = [VV, 0.5 - (i+j)/2/k]; end % (i,j) --> (i, j+1) if j+i<k II = [II, idx(i,j)]; JJ = [JJ, idx(i,j+1)]; VV = [VV, 0.5 - (i+j)/2/k]; end end end A = sparse(II,JJ,VV); return;
相关文章推荐
- Rational Krylov Method(克雷洛夫法)求解特征值问题matlab代码示例(和Arnoldi方法比较)
- 使用golang写一个redis-cli的方法示例
- ado多次按条件使用一个记录集中的数据的方法
- windows.ResizeTo()方法使用示例
- window.scrollBy()方法使用示例
- window.resizeBy()方法使用示例
- VB使用堆叠对话框的一个方法
- "操作必须使用一个可更新的查询"错误的解决方法
- 演示事件(Event)怎样使用以及怎样为用户控件添加一个事件(示例代码下载)
- 找到一个无须安装的绿色 IE7 使用方法
- 使用ld的“-Ttext”选项时可能产生的一个问题的解决方法
- 使用'VRM_SET_VALUES'函数在selection屏幕上建一个Combobox控件示例
- 使用'VRM_SET_VALUES'函数在selection屏幕上建一个Combobox控件示例
- 演示事件(Event)怎样使用以及怎样为用户控件添加一个事件(示例代码下载)
- windows.moveBy()函数使用方法示例
- 要将一个数据库的所有表格使用批通信程序取出(BCP OUT),有何较快的方法?
- web.config文件自定义配置节的使用方法的一个简单例子
- 使用VS2005 CTP July调试WinForm的一个问题,解决方法与各位分享。
- 使用ADSI、ASP和一对魔术戏法自动地创立一个虚拟目录的方法
- GROUP BY的另种使用方法:将结果集一列的内容作为一个单元格显示