собственные значения и собственные вектора матрицы или пучка
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)
возвращает собственные значения через диагональную матрицу
diagevals
и правые собственные векторы в R
.
См. также bdiag(…)
.
При использовании синтаксиса spec(A)
с единственной матрицей, истинность результатов следующая:
Матрица | Вещественная | Комплексная | ||
---|---|---|---|---|
Симметричная | Несимметричная | Эрмитова | Неэрмитова | |
Собственные значения | вещественные | комплексные | вещественные | комплексные |
Собственные векторы | вещественные | комплексные | комплексные | комплексные |
Комплексная эрмитова матрица равна себе самой комплексно сопряжённой и транспонированной.
evals = spec(A, B)
возвращает собственные значения пучка матриц, то есть корни полиномиальной
матрицы s.B - A
.
[alpha, beta] = spec(A, B)
возвращает обобщённые собственные значения alpha
и
beta
пучка матриц A - s.B
.
Они такие, что обычные собственные значения пучка представляются как
alpha./beta
. Тогда матрица
A - alpha./beta × B
является сингулярной.
Если beta(i) = 0
, то iтое
собственное значение равно бесконечности.
Для B = eye(A)
, alpha./beta
равно
spec(A)
. Обычно представляется как пара
(alpha,beta), поскольку есть разумная интерпретация для
beta=0
, даже когда оба равны нулю.
[alpha, beta, Z] = spec(A, B)
возвращает дополнительно матрицу Z
обобщённых правых
собственных векторов пучка.
[alpha, beta, Q, Z] = spec(A, B)
возвращает дополнительно матрицу Q
обобщённых левых
собственных векторов пучка.
![]() | Для больших плотных или разрежённых матриц может быть использована функция
eigs(). |
Вычисления собственных значений матриц основаны на программах Lapack
DSYEV и ZHEEV, когда матрица симметрична или эрмитова.
DGEEV и ZGEEV, когда матрица ни симметрична ни эрмитова.
Вычисление собственных значений пучка основаны на программах Lapack DGGEV и ZGGEV.
// СОБСТВЕННЫЕ ЗНАЧЕНИЯ МАТРИЦЫ 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) // СОБСТВЕННЫЕ ЗНАЧЕНИЯ ПУЧКА A = rand(3,3); [al, be, R] = spec(A, eye(A)); al ./ be clean(inv(R)*A*R) // распечатка собственных значений (общая матрица) A = A + %i*rand(A); E = rand(A); roots(det(A-%s*E)) // случай комплексных чисел | ![]() | ![]() |