📄 peigs.m
字号:
function [V, d, r] = peigs(A, rmax)%PEIGS Finds positive eigenvalues and corresponding eigenvectors. % % [V, d, r] = PEIGS(A, rmax) determines the positive eigenvalues d% and corresponding eigenvectors V of a matrix A. The input% parameter rmax is an upper bound on the number of positive% eigenvalues of A, and the output r is an estimate of the actual% number of positive eigenvalues of A. The eigenvalues are returned% as the vector d(1:r). The eigenvectors are returned as the% columns of the matrix V(:, 1:r).%% PEIGS calls the function EIGS to compute the first rmax% eigenpairs of A by Arnoldi iterations. Eigenpairs corresponding% eigenvalues that are nearly zero or less than zero are% subsequently discarded.%% PEIGS is only efficient if A is strongly rank-deficient with% only a small number of positive eigenvalues, so that rmax <<% min(size(A)). If A has full rank, EIG should be used in place of% PEIGS.%% See also: EIGS. error(nargchk(2, 2, nargin)) % check number of input arguments [m, n] = size(A); if rmax > min(m,n) rmax = min(m,n); % rank cannot exceed size of A end % get first rmax eigenvectors of A warning off eigsopt.disp = 0; % do not display eigenvalues [V, d] = eigs(A, rmax, 'lm', eigsopt); warning on % output of eigs differs in different Matlab versions if prod(size(d)) > rmax d = diag(d); % ensure d is vector end % ensure that eigenvalues are monotonically decreasing [d, I] = sort(d, 'descend'); V = V(:, I); % estimate number of positive eigenvalues of A d_min = max(d) * max(m,n) * eps; r = sum(d > d_min); % discard eigenpairs with eigenvalues that are close to or less than zero d = d(1:r); V = V(:, 1:r); d = d(:); % ensure d is column vector
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -