spec autovalores, e autovetores de uma matriz ou feixes

## Seqüência de Chamamento

                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)

## Parâmetros

A, B
  Matrizes quadradas de números reais ou complexos, de mesmos tamanhos.

evals
  Vetor de reais ou complexos : os autovalores.

diagevals
  Matriz diagonal de reais ou complexos : autovalores ao longo da diagonal.

R
  Matriz quadrada de reais ou complexos invertível : autovetores direitos da matriz.

alpha, beta
  Vetores dos mesmos tamanhos : autovalores generalizados do feixe de matriz `A - s.B` (s é a variável). alpha./beta fornece os autovalores usuais. `alpha` são valores reais ou complexos. `beta` são valores reais.

Q
  Matriz quadrada de reais ou complexos invertível : autovetores esquerdos do feixe de matriz.

Z
  Matriz quadrada de reais ou complexos invertível : autovetores direitos do feixe de matriz.

## Descrição

evals = spec(A) retorna no vetor `evals` os autovalores.

[R, diagevals] = spec(A) retorna na matriz diagonal `diagevals` os autovalores e em `R` os autovetores direitos. Ver também `bdiag(…)`.

Ao usar uma sintaxe `spec(A)` com uma única matriz, a realidade dos resultados é a seguinte:

matriz A | Real | Complexa
| Simétrica | Não simétrica | Hermitiana | Não hermitiana
Autovalores | reais | complexos | reais | complexos
Autovetores | reais | complexos | complexos | complexos

Uma matriz Hermitiana é igual à sua transposta conjugada.

### Feixe de matriz A - s.B

evals = spec(A, B) retorna o espectro do feixe de matrizes `A - s.B`, i.e. as raízes da matriz de polinômios `s.B - A`.

[alpha, beta] = spec(A, B) retorna o espectro do feixe de matrizes `A - s.B`, i.e. as raízes da matriz de polinômios `A - s.B`. Auto valores generalizados `alpha` e `beta` são tais que a matriz `A - alpha./beta × B` é uma matriz singular. Os autovalores são dados por `alpha./beta` e se `beta(i) = 0` o i-ésimo autovalor está no infinito.

Para `B = eye(A)`, `alpha./beta` é `spec(A)`). É usualmente representado pelo par (alpha,beta), já que há uma interpretação razoável para beta=0, e até mesmo para os dois sendo zero.

[alpha, beta, Z] = spec(A, B) retorna, ainda, a matriz `Z` de autovetores direitos generalizados do feixe.

[alpha, beta, Q, Z] = spec(A, B) rretorna ainda a matriz `Q` e `Z` de autovetores esquerdos e direitos generalizados do feixe.

## Programas usados

As computações de autovalores de matrizes são baseadas nas rotinas Lapack :

- DSYEV e ZHEEV quando as matrizes são simétricas or hermitianas.

- DGEEV e ZGEEV quando as matrizes não são simétricas nem hermitianas.

As computações de autovalores de feixes são baseadas nas rotinas Lapack DGGEV e ZGGEV.

## Exemplos

    // AUTOVALORES DA MATRIZ
    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)

    // AUTOVALORES DO FEIXE
    A = rand(3,3);
    [al, be, R] = spec(A,eye(A));
    al ./ be
    clean(inv(R)*A*R)    // exibindo os autovalores (matriz genérica)
    A = A + %i*rand(A);
    E = rand(A);
    roots(det(A-%s*E))   // caso de complexos

## Ver Também

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