собственные значения и собственные вектора матрицы или пучка
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)) // случай комплексных чисел | ![]() | ![]() |