Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - 日本語 - Русский
Ajuda do Scilab >> Linear Algebra > Linear Equations > qr

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 ==> 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")

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.

Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Feb 12 19:58:35 CET 2018