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
  Квадратные матрицы вещественных или комплексных чисел одинаковых размеров.

evals
  Вещественный или комплексный вектор: собственные значения.

diagevals
  Вещественная или комплексная диагональная матрица: собственные значения расположены по диагонали.

R
  Вещественная или комплексная обратимая квадратная матрица: матрица правых собственных векторов.

alpha, beta
  Векторы одинаковых размеров: обобщённые собственные значения пучка матрицы `A - s.B` (где `s` - это переменная). `alpha./beta` даёт обычные собственные значения. `alpha` - это вещественные или комплексные значения. `beta` - это вещественные значения.

Q
  Вещественная или комплексная обратимая квадратная матрица: обобщённые левые собственные векторы пучка.

Z
  Вещественная или комплексная обратимая квадратная матрица: обобщённые правые собственные векторы пучка.

## Описание

evals = spec(A) вычисляет собственные значения и возвращает их в векторе `evals`.

[R, diagevals] = spec(A) возвращает собственные значения через диагональную матрицу `diagevals` и правые собственные векторы в `R`. См. также `bdiag(…)`.

При использовании синтаксиса `spec(A)` с единственной матрицей, истинность результатов следующая:

Матрица | Вещественная | Комплексная
| Симметричная | Несимметричная | Эрмитова | Неэрмитова
Собственные значения | вещественные | комплексные | вещественные | комплексные
Собственные векторы | вещественные | комплексные | комплексные | комплексные

Комплексная эрмитова матрица равна себе самой комплексно сопряжённой и транспонированной.

### Пучок матриц A - s.B

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))   // случай комплексных чисел

## Смотрите также

- eigs
- bdiag
- schur
- colcomp
- det
- poly