# spec

autovalores de matrizes e 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

  matriz quadrada de reais ou complexos

B

  matriz quadrada de reais ou complexos com as mesmas dimensões que`A`

evals

  vetor de reais ou complexos, os autovalores

diagevals

  matriz diagonal de reais ou complexos (autovalores ao longo da diagonal)

alpha

  vetor de reais ou complexos, al./be fornece os autovalores

beta

  vetor de reais, al./be fornece os autovalores

R

  matriz quadrada de reais ou complexos invertível, autovetores direitos da matriz

Q

  matriz quadrada de reais ou complexos invertível, autovetores esquerdos do feixe

Z

  matriz quadrada de reais ou complexos invertível, autovetores direitos do feixe

## Descrição

evals=spec(A)

  retorna no vetor `evals` os autovalores.

[R,diagevals] =spec(A)

  retorna na matriz diagonal `evals` os autovalores e em `R` os autovetores direitos.

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 `al./be` 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,R] = spec(A,B)

  retorna, ainda, a matriz `R` de autovetores direitos generalizados do feixe.

[al,be,Q,Z] = spec(A,B)

  rretorna ainda a matriz `Q` e `Z` de autovetores esquerdos e direitos generalizados do feixe.

## Referências

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

- DGEEV e ZGEEV quando as matrizes não são simétricas,

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

Uma matriz de complexos simétrica tem termos fora da diagonal conjugados e termos diagonais reais.

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

## Matrizes de reais e de complexos

Deve-se notar que o tipo das variáveis de saída, tais como evals ou R por exemplo, não é necessariamente o mesmo das que das matrizes de entrada A e B. No parágrafo seguinte, análisamos o tipo das variáveis de saída no caso onde nos casos onde se computa os autovalores e autovetores de uma única matriz A.

- Matriz A de reais

  - Simétrica

    Os autovetores e autovalores são reais.

  - Não simétrica

    Os autovetores e autovalores são complexos.

- Matriz A de complexos

  - Simétrica

    Os autovalores são reais, mas os autovetores são complexos.

  - Não simétrica

    Os autovetores e autovalores são complexos.

## 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()-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

- poly
- det
- schur
- bdiag
- colcomp