Skip to content

Fatoração QR se utilizando de algoritmos de Gram-Schmidt e Reflexões de Householder.

Notifications You must be signed in to change notification settings

Potalej/fatoracao-QR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fatoração QR

Quando se trabalha com matrizes, é frequente a dificuldade de se resolver problemas quando as matrizes são cheias (ou bastante recheadas, pelo menos), gerando problemas tanto teóricos quanto técnicos. As fatorações oferecem matrizes alternativas mais simples para esses casos, e uma delas é conhecida como Fatoração QR.

Na fatoração QR, uma matriz $A$ é repartida em duas outras matrizes: $Q$, uma matriz ortogonal, e $R$, uma matriz triangular superior. As propriedades oferecidas por esses dois tipos de matrizes podem ser bastante úteis em muitos casos, como na aproximação de retas via Mínimos Quadrados, por exemplo.

O programa contido neste repositório objetiva oferecer as matrizes $Q$ e $R$ se utilizando de três métodos diferentes: Gram-Schmidt Clássico, Gram-Schmidt Modificado e Reflexões de Householder.

Foi feita uma versão Web utilizando PyScript, que pode ser acessada aqui

Rodando

Para encontrar as matrizes, basta chamar alguma das funções GSClassico, GSModificado ou QR_Householder, disponíveis em seus respectivos arquivos. Todas recebem como parâmetro uma matriz $A_{m \times n}$ e retornam uma tupla (Q, R), com $Q_{m \times m}$ e $R_{m \times n}$, todas do tipo MatrizDict.

Há também disponível uma função que mesura e exibe em tabela os erros obtidos, bastando passar como parâmetros $A$, $Q$, $R$ e as normas matriciais desejadas num formato de dicionário. Por exemplo:

A = [...]
Q, R = ...

tabelaMargens(A, Q, R, normas={
  "norma 1": func1,
  "norma 2": func2,
  ...
})

Serão exibidas as normas $\Vert A-QR \Vert$ e $\Vert I-Q^tQ \Vert$, medindo a precisão da fatoração e a precisão da ortogonalização, respectivamente.

Matrizes e funções auxiliares

Para trabalhar com matrizes, foi utilizada uma classe disponível aqui, e no arquivo matrizes_exemplos.py pode-se encontrar alguns geradores de matrizes, como quadrados mágicos e matrizes de Hilbert.

Também foi utilizado o cálculo de norma vetorial (norma 2) disponível em normas.py, normas matriciais (p-ésima, infinito e de Frobenius) em normas_matriciais.py e número de condicionamento em condicionamento.py.

About

Fatoração QR se utilizando de algoritmos de Gram-Schmidt e Reflexões de Householder.

Topics

Resources

Stars

Watchers

Forks

Languages