# qr

QR decomposição

## Seqüência de Chamamento

    [Q,R]=qr(X [,"e"])
                [Q,R,E]=qr(X [,"e"])
                [Q,R,rk,E]=qr(X [,tol])

## Parâmetros

X

  matriz de reais ou complexos

tol

  número real não-negativo

Q

  matriz quadrada ortogonal ou unitária

R

  matriz com as mesmas dimensões de `X`

E

  matriz de permutação

rk

  inteiro (posto QR de `X`)

## Descrição

[Q,R] = qr(X)

  pproduz uma matriz triangular superior `R` de mesma dimensão que `X` e uma matriz ortogonal (unitária no caso de matriz de complexos) `Q` tais que `X = Q*R`. `[Q,R] = qr(X,"e")` produz um "economia de tamanho": Se `X` é m-por-n com m > n, então, apenas as primeiras n colunas de `Q` são computadas assim como as primeiras n linhas de `R`.

  De `Q*R = X` , segue que a k-ésima coluna da matriz `X`, é expressa como combinação linear das k primeiras colunas de `Q` (com coeficientes `R(1,k), ..., R(k,k)` ). As k primeiras colunas de `Q` formam uma base ortogonal para o subespaço gerado pelas k priemiras colunas de `X`. Se a coluna `k` de `X` (i.e. `X(:,k)` ) é uma combinação linear das `p` primeiras colunas de `X`, então, as entradas de `R(p+1,k), ..., R(k,k)` são zeros. Neste caso, `R` é trapezoidal superior. Se `X` tem posto `rk`, as linhas `R(rk+1,:), R(rk+2,:), ...` são zeros.

[Q,R,E] = qr(X)

  produz uma matriz de permutação (de colunas) `E`, uma matriz triangular superior `R` com elementos na diagonal decrescentes e uma matriz ortogonal (ou unitaria) `Q` tais que `X*E = Q*R`. Se `rk` é o posto de `X`, as `rk` primeiras entradas ao longo da diagonal de `R`, i.e. `R(1,1), R(2,2), ..., R(rk,rk)` são todas diferentes de zero. `[Q,R,E] = qr(X,"e")` produz uma "economia de tamanho": Se `X` ié m-por-n com m > n, então, apenas as n primeiras colunas de `Q` são computadas tanto quanto as n priemiras linhas de `R`.

[Q,R,rk,E] = qr(X ,tol)

  retorna `rk` = estimativa do posto de `X` i.e. `rk` é o número elementos da diagonal de `R` que são maiores que um dado limiar `tol`.

[Q,R,rk,E] = qr(X)

  retorna `rk` = estimativa do posto de `X` i.e. `rk` é o número de elementos da diagonal de `R` que são maiores que `tol=R(1,1)*%eps*max(size(R))`. Veja `rankqr` para uma fatoração QR que revela o posto usando o número de condicionamento de `R`.

## Exemplos

    // fatoração QR, caso genérico
    // X é alta (posto cheio)
    X=rand(5,2);[Q,R]=qr(X); [Q'*X R]

    //X é gorda (posto cheio)
    X=rand(2,3);[Q,R]=qr(X); [Q'*X R]

    //coluna 4 de X é uma combinação linear das colunas 1 e 2:
    X=rand(8,5);X(:,4)=X(:,1)+X(:,2); [Q,R]=qr(X); R, R(:,4)

    //X tem posto 2, linhas 3 a $ de R são zero:
    X=rand(8,2)*rand(2,5);[Q,R]=qr(X); R

    //Avaliando o posto rk: pivotação por colunas ==&gt; rk primeiras
    //As entradas diagonais de R são não-nulas:
    A=rand(5,2)*rand(2,5);
    [Q,R,rk,E] = qr(A,1.d-10);
    norm(Q'*A-R)
    svd([A,Q(:,1:rk)])    //span(A) =span(Q(:,1:rk)) (span="gerado")

## Ver Também

- rankqr
- rank
- svd
- rowcomp
- colcomp

## Funções Usadas

A decomposição qr é baseada nas rotinas de Lapack DGEQRF, DGEQPF, DORGQR para as matrizes de reais ZGEQRF, ZGEQPF, ZORGQR para as matrizes de complexos.