行列とペンシルの固有値
evals = spec(A) [R, diagevals] = spec(A) evals = spec(A, B) [alpha, beta] = spec(A, B) [alpha, beta, Z] = spec(A, B) [alpha, beta, Q, Z] = spec(A, B)
A - s.B
(sは変数です).
alpha./betaは通常の固有値を与えます.
alpha
は実数値または複素数値です.
beta
は実数値です.
evals = spec(A)
ベクトルevals
に固有値を返します.
[R, diagevals] = spec(A)
対角行列r diagevals
に固有値,
R
に固有ベクトルを返します. See also bdiag(…)
.
When using a spec(A)
syntax with a single matrix,
the realness of results is as it follows:
A行列 | 実数 | 複素数 | ||
---|---|---|---|---|
対称 | 非対称 | 対称 | 非対称 | |
固有値 | 実数 | 複素数 | エルミート | 複素数 |
固有ベクトル | 実数 | 複素数 | 複素数 | 複素数 |
. エルミート行列はその共役転置に等しい。
evals = spec(A, B) 行列ペンシル A - s B のスペクトル,すなわち, 多項式行列 s B - Aの根,を返します.
[alpha, beta] = spec(A, B)
行列ペンシルA- s B
のスペクトル,
すなわち,多項式行列 A - s B
の根を返します.
一般化固有値 alpha と beta は行列
A - alpha./beta × B
が特異行列となる値です.
固有値は alpha./beta
により指定され,
beta(i) = 0
の場合,i番目の固有値は無限大となります.
B = eye(A)
の場合, alpha./beta
は
spec(A)
となります.
通常,beta=0や両方がゼロの場合に関して都合が良い解釈が存在するため,
(alpha,beta)の組み合わせで表されます.
[alpha, beta, Z] = spec(A, B)
一般化右固有ベクトルである行列 Z
を返します.
[alpha, beta, Q, Z] = spec(A, B)
一般化右および左固有ベクトルである行列 Q
および Z
を返します.
![]() | 大きな密行列または疎行列の場合、eigs関数を使用できます. |
行列の固有値計算は Lapack ルーチンに基づいています
行列が対称でない場合, DGEEV および ZGEEV.
行列が対称の場合, DSYEV および ZHEEV.
ペンシル固有値計算は Lapack ルーチン DGGEV および ZGGEVに基づいています.
// MATRIX EIGENVALUES A = diag([1,2,3]); X = rand(3,3); A = inv(X)*A*X; spec(A) x = poly(0,'x'); pol = det(x*eye(3,3)-A) roots(pol) [S,X] = bdiag(A); clean(inv(X)*A*X) // PENCIL EIGENVALUES A = rand(3,3); [al, be, R] = spec(A, eye(A)); al ./ be clean(inv(R)*A*R) // displaying the eigenvalues (generic matrix) A = A + %i*rand(A); E = rand(A); roots(det(A-%s*E)) // complex case | ![]() | ![]() |