| MATLAB Function Reference | ![]() |
Syntax
d = eigs(A) d = eigs(A,B) d = eigs(A,k) d = eigs(A,B,k) d = eigs(A,k,sigma) d = eigs(A,B,k,sigma) d = eigs(A,k,sigma,options) d = eigs(A,B,k,sigma,options) d = eigs(Afun,n) d = eigs(Afun,n,B) d = eigs(Afun,n,k) d = eigs(Afun,n,B,k) d = eigs(Afun,n,k,sigma) d = eigs(Afun,n,B,k,sigma) d = eigs(Afun,n,k,sigma,options) d = eigs(Afun,n,B,k,sigma,options) d = eigs(Afun,n,k,sigma,options,p1,p2...) d = eigs(Afun,n,B,k,sigma,options,p1,p2...) [V,D] = eigs(A,...) [V,D] = eigs(Afun,n,...) [V,D,flag] = eigs(A,...) [V,D,flag] = eigs(Afun,n,...)
Description
d = eigs(A)
回傳一向量其元素為 A 六個較大的特徵值。
[V,D] = eigs(A)
回傳一對角線矩陣 D 其含有 A
的六個較大的特徵值其一矩陣 V 其欄為對應的特徵向量。
[V,D,flag] = eigs(A)
亦回傳收歛旗標。若 flag 為 0
則所有特徵值均收歛;否則並不是所有皆為收歛。
eigs(Afun,n)
接受函數 Afun 以取代矩陣 A。y = Afun(x)
應該回傳 y = A*x,其中 x 為一 n*1 的向量,而 n
即為 A 的尺寸。矩陣 A 藉由 Afun
來表示而且假設為實數且非對稱性。在所有呼叫的序列中,eigs(A,...) 可被 eigs(Afun,n,...)
取代。
eigs(A,B)
解廣義特徵值問題 A*V == B*V*D。B
必須為對稱(或 Hermitian)正向定義且其尺寸等同於 A。eigs(A,[],...)
表示標準的特徵值問題 A*V == V*D。
eigs(A,k) and eigs(A,B,k)
回傳前 k 個大的特徵值。
eigs(A,k,sigma) and eigs(A,B,k,sigma)
根據 sigma 回傳 k
個特徵值,其可為下列值之一:
eigs(A,K,sigma,opts) 及 eigs(A,B,k,sigma,opts)
定義選項的結構:
eigs(Afun,n,k,sigma,opts,p1,p2,...)
及
eigs(Afun,n,B,k,sigma,opts,p1,p2,...)
提供額外的參數其傳送至 Afun(x,p1,p2,...)。
Remarks
d = eig(full(A)) d = sort(d) d = d(end-k+1:end)
但卻最適合用在大型稀疏矩陣。若問題牽扯到記憶體,則其可用 eig(full(A))
以達到較快的運算。
Algorithm
eigs 提供反連結,其需要 Fortran 函式庫 ARPACK 中的程序 DSAUPD, DSEUPD, DNAUPD, DNEUPD, ZNAUPD,
及 ZNEUPD 的支援。
Examples
A = delsq(numgrid('C',15));
d1 = eigs(A,5,'sm');
function y = dnRk(x,R,k) y = (delsq(numgrid(R,k))) * x;
則將傳送 dnRk 額外的參數 'C' 和 15
至 eigs。
n = size(A,1); opts.issym = 1; d2 = eigs(@dnRk,n,5,'sm',opts,'C',15);
範例 2:west0479 為一實數 479*479
稀疏矩陣其含有實數及共軛複數的特微值。eig 計算所有 479 個特徵值,並選擇最大的特徵值。
此平面圖顯示由 eig 和 eigs 計算出來 west0479
其 8 個最大的特徵值。
load west0479
d = eig(full(west0479))
dlm = eigs(west0479,8)
[dum,ind] = sort(abs(d));
plot(dlm,'k+')
hold on
plot(d(ind(end-7:end)),'ks')
hold off
legend('eigs(west0479,8)','eig(full(west0479))')
範例 3:A = delsq(numgrid('C',30))
為一尺寸為 632 的對稱正向定義矩陣其特徵值合理地分配在範圍 (0 8) 之間,但有 18 個特徵值重覆於 4。函數 eig
計算所有 632 個特微值。其計算並繪製 A 的前六大及前六小的特徵值:
A = delsq(numgrid('C',30));
d = eig(full(A));
[dum,ind] = sort(abs(d));
dlm = eigs(A);
dsm = eigs(A,6,'sm');
subplot(2,1,1)
plot(dlm,'k+')
hold on
plot(d(ind(end:-1:end-5)),'ks')
hold off
legend('eigs(A)','eig(full(A))',3)
set(gca,'XLim',[0.5 6.5])
subplot(2,1,2)
plot(dsm,'k+')
hold on
plot(d(ind(1:6)),'ks')
hold off
legend('eigs(A,6,''sm'')','eig(full(A))',2)
set(gca,'XLim',[0.5 6.5])
然而,在 4 重覆的特徵值必須更小心地處理。eigs(A,18,4.0) 計算靠近
4.0 的 18 個特徵值以試著找出 A - 4.0*I 的特徵值。此關係著除法形式 1/(lambda - 4.0),其中 lambda
為 A 特徵值的近似值。當 lambda 接近 4.0 時,eigs
並沒有接近。必須使用 sigma 靠近但不等於 4 以找出那 18 個特徵值。
sigma = 4 - 1e-6 [V,D] = eigs(A,18,sigma)
平面圖顯示經由 eig 計算的 20 個特徵值其接近 4,由 eigs
計算 18 個特微值其靠近 4 - 1e-6。
See Also
References
[1] Lehoucq, R.B. and D.C. Sorensen, "Deflation Techniques for an Implicitly Re-Started Arnoldi Iteration," SIAM J. Matrix Analysis and Applications, Vol. 17, 1996, pp. 789-821.
[2] Lehoucq, R.B., D.C. Sorensen, and C. Yang, ARPACK Users' Guide: Solution of Large-Scale Eigenvalue Problems with Implicitly Restarted Arnoldi Methods, SIAM Publications, Philadelphia, 1998.
[3] Sorensen, D.C., "Implicit Application of Polynomial Filters in a k-Step Arnoldi Method," SIAM J. Matrix Analysis and Applications, Vol. 13, 1992, pp. 357-385.
| eig | ellipj | ![]() |