Rational Krylov Method(克雷洛夫法)求解特征值问题matlab代码示例(和Arnoldi方法比较)
来源:互联网 发布:sql统计用户投稿数量 编辑:程序博客网 时间:2024/04/28 17:00
最基本的特征值问题分为三类:
1、标准的线性特征值问题:
2、普遍的线性特征值问题:
3、普遍的艾米特正定线性特征值问题:
不妨做一个程序将RKM方法和Arnoldi方法做一个比较。
% demo routine for Rational Krylov vs Arnoldi with shift-invertclcclearn = 1000;m = 40; % subspace sizeA = diag([1:1:n]); % testing matrix A of eigenvalues 1, 2, .., n% shifts: define more shift as you likesigma1 = 101.5;sigma2 = 121.5;% -- Rational Krylov with shifts SIGMAm1 = floor(m/2); m2 = m-m1;SIGMA = [repmat(sigma1, m1, 1); repmat(sigma2, m2, 1)];%SIGMA = repmat([sigma1; sigma2], m/2, 1); % even number m[Q1, K, L] = rarnoldi(A, SIGMA, m);[V1, E1] = eig(L(1:m,:), K(1:m,:));% pick eig of relative residual norm < toltol = 1.0E-6;nA = norm(A,1);e1 = [];for i = 1:m lam = E1(i,i); v = Q1*(K*V1(:, i)); res = norm(A*v-lam*v)/norm(v)/nA; if res<tol, e1 = [e1, lam]; endend% -- shift invert Arnoldi with shift sigma1 sigma = sigma1;[LL, UU, PP] = lu(A-sigma*speye(n));Afun = @(x) UU \ (LL \ (PP*x));[Q2, H] = arnoldi(Afun, n, m);[V2, E2] = eig(H(1:m,:)); E2 = 1./E2 + sigma;% pick eig of relative residual norm < toltol = 1.0E-6;nA = norm(A,1);e2 = [];for i = 1:m lam = E2(i,i); v = Q2(:,1:m)*V2(:, i); res = norm(A*v-lam*v)/norm(v)/nA; if res<tol, e2 = [e2, lam]; endend% -- display resultsfigureplot(real([sigma1, sigma2]), imag([sigma1, sigma2]), 'or', 'DisplayName', 'shifts', 'MarkerSize', 8)hold on;plot(real(e2), imag(e2), 'xb', 'DisplayName', 'Arnoldi', 'MarkerSize', 8);plot(real(e1), imag(e1), '+k', 'DisplayName', 'Rational Krylov', 'MarkerSize', 8);legend showxlabel('real'); ylabel('imag')title('approximate eigenvalues')% END
用到的一些子函数就一起列在下面了:
function [V, H] = arnoldi(Afun, n, m)% function [V, H] = arnoldi(Afun, n, m) produce an Arnoldi decomposition% of order m for a square matri A. % Afun(v) = A*v% n = dim of A%v = randn(n,1);v = v / norm(v);V = v;H = zeros(m+1, m);for i = 1:m w = Afun(v); h = V'*w; w = w - V*h; gamma = norm(w); if gamma==0 return end v = w/gamma; V = [V, v]; H(1:i,i) = h; H(1+i, i) = gamma; endfunction [V, K, L] = rarnoldi(A, SIGMA, m)% function [V, K, L] = rarnoldi(Afun, n, m) produce an rational Krylov% decomposition of order m for a square matri A. % SIGMA: length m vector containing shifts%n = size(A,1);v = randn(n,1);v = v / norm(v);V = v;K = zeros(m+1, m);L = zeros(m+1, m);for i = 1:m sigma = SIGMA(i); if sigma ~= inf w = (A-sigma*speye(n))\v; h = V'*w; w = w - V*h; gamma = norm(w); v = w/gamma; V = [V, v]; K(1:i, i) = h; K(i+1, i) = gamma; L(1:i+1, i) = sigma*K(1:i+1, i); L(i, i) = L(i, i) + 1; else w = A*v; h = V'*w; w = w - V*h; gamma = norm(w); v = w/gamma; V = [V, v]; K(i, i) = 1; L(1:i, i) = h; L(i+1, i) = gamma; end % breakdown case L(i+1, i) = K(i+1,i) = 0 is not treated.end
阅读全文
0 0
- Rational Krylov Method(克雷洛夫法)求解特征值问题matlab代码示例(和Arnoldi方法比较)
- Arnoldi方法求特征值:matlab中eigs函数的一个使用示例
- Matlab遗传算法优化问题求解的示例代码
- 使用MATLAB自带函数求解二次特征值问题
- [matlab] eig函数求解矩阵特征值和特征向量
- 求解特征值和特征向量
- 特征值问题的有限元MATLAB程序(一维)
- 随机梯度下降法求解SVM(附matlab代码)
- 特征值求解器的效率比较
- 矩阵特征分解介绍及雅克比(Jacobi)方法实现特征值和特征向量的求解(C++/OpenCV/Eigen)
- matlab求特征值和特征向量
- QEP(二次特征值问题)的SOAR和TOAR解法
- 加速子空间迭代法(Accelerated Subspace Iteration)求特征值问题matlab程序
- 矩阵特征值和特征向量求解——特征值分解
- MATLAB求解线性规划(含整数规划和0-1规划)问题
- MATLAB求解线性规划(含整数规划和0-1规划)问题
- Matlab和LINGO求解线性规划问题
- 关于广义特征值问题的求解[泛化特征值问题][扩展特征值问题]
- JavaScript内存泄漏
- 提交数据的三种方式
- 基于FFmpeg的开源项目small-video-record2
- hdu 2032 杨辉三角
- 屏幕适配
- Rational Krylov Method(克雷洛夫法)求解特征值问题matlab代码示例(和Arnoldi方法比较)
- 利用properties进行属性配置
- Chapter03 国际化(五) 消息格式化
- 丢失的修改、不可重复读、读脏数据、幻影读
- CDN
- mybatis基于Dao层开发(四)
- 分享一个PHP PDO 的工具类,采用预编译有效防止SQL注入
- IAR中map文件全解析
- Python3 函数