spec
行列とペンシルの固有値
呼び出し手順
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, B
- AとBは、同じサイズの実数または複素数の正方行列です.
- evals
- 実数または複素ベクトル, 固有値.
- diagevals
- 実数または(対角項に固有値を有する)複素対角行列.
- R
- 可逆な実数または複素正方行列, 行列右固有ベクトル.
- alpha, beta
- 同じサイズのベクトル:行列束の一般化された固有値
A - s.B
(sは変数です). alpha./betaは通常の固有値を与えます.alpha
は実数値または複素数値です.beta
は実数値です. - Q
- 可逆な実数または複素正方行列 : ペンシル左固有ベクトル.
- Z
- 可逆な実数または複素正方行列 : ペンシル右固有ベクトル.
説明
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行列 | 実数 | 複素数 | ||
---|---|---|---|---|
対称 | 非対称 | 対称 | 非対称 | |
固有値 | 実数 | 複素数 | エルミート | 複素数 |
固有ベクトル | 実数 | 複素数 | 複素数 | 複素数 |
. エルミート行列はその共役転置に等しい。
Matrix Pencil A - s.B
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
参照
Report an issue | ||
<< psmall | Eigenvalue and Singular Value | sva >> |