Escolar Documentos
Profissional Documentos
Cultura Documentos
1 Resumo
A ideia para a elaboração deste documento é de preparar um material objetivo
e de fácil entendimento para o auxilio na aprendizagem de diciplinas em um curso
de Estatı́stica.
2 Introdução
3 Aspectos teóricos
3.1 QR Decomposition
Este método consiste em transformar uma matriz A em um produto de matri-
zes, sendo uma matriz ortogonal Q, em que QT Q = I, e uma matriz triangular
superior R.
A = QR
Esta decomposição existe no geral tanto para matrizes retangulares quanto para
matrizes quadradas (Numerical Recipes, pag.103). A decomposição QR pode ser
feita de diversas formas, como pelo processo de Gram-Schmidt que é o qual aqui
1
será apresentado o algorı́timo, e outra forma conhecida seria utilizando trans-
formações por Householder, visto que Gram-Schmidt pode gerar matrizes Q não
ortogonais, Householder é uma alternativa para contornar este problema gerando
uma maior estabilidade numérica.
Algoritmo 1: QR Decomposition utilizando Gram-Schmidt( Schlegel.A )
# Matrizes Q e R
q <- matrix ( 0 , m , n )
r <- matrix ( 0 , n , n )
for ( j in 1 : n ) {
# Primeiro passo do processo
# de Gram-Schmidt v1 = a1
v = x[,j]
# Subtrai a projeç~
ao de v que faz com que v
# seja perpendicular a todas as colunas de Q
v <- v - r [i , j ] * q [ , i ]
}
}
# Encontre a norma L2 da j-ésima diagonal de R
r [j , j ] <- sqrt ( sum ( v ^ 2 ))
# O resultado ortogonalizado e
# guardado na i-ésima coluna de Q.
q [ , j ] <- v / r [j , j ]
}
2
# Coleta as matrizes Q e R em uma lista e as retorna
qrcomp <- list ( ’Q ’=q , ’R ’= r )
return ( qrcomp )
}
A = U ΣV ∗
3
res
}
if ( missing ( symmetric ))
symmetric <- isSymmetric . matrix ( x )
if ( symmetric ) {
z <- if (! complex . x ) . Internal ( La _ rs (x , only . values ))
else . Internal ( La _ rs _ cmplx (x , only . values ))
ord <- rev ( seq _ along ( z $ values ))
} else {
z <- if (! complex . x ) . Internal ( La _ rg (x , only . values ))
else . Internal ( La _ rg _ cmplx (x , only . values ))
ord <- sort . list ( Mod ( z $ values ) , decreasing = TRUE )
}
return ( list ( values = z $ values [ ord ] ,
vectors = if (! only . values )
z $ vectors [ , ord , drop = FALSE ]))
}
4
3.4 LU Decomposition
A ideia é transformar uma matriz A em uma matriz triangular superior
U com M x M dimensões, introduzindo zeros abaixo da diagonal, primeiro
na primeira coluna, e depois na segunda, e assim por diante. Isso é feito
subtraindo multiplos de cada coluna das colunas subsequentes. Esse processo
de eliminação é equivalente a multiplicar A por uma sequencia de matrizes
triagulares inferiores:
Lm−1 ...L2 L1 A = U.
| {z }
L−1 (1)
A = LU.
5
if ( im 1 > 0 ) {
for ( k in 1 : im 1 ) {
U [i , j ] <- U [i , j ] - L [i , k ] * U [k , j ]
}
}
}
if ( ip 1 <= n ) {
for ( j in ip 1 : n ) {
L [j , i ] <- x [j , i ]
if ( im 1 > 0 ) {
for ( k in 1 : im 1 ) {
L [j , i ] <- L [j , i ] - L [j , k ] * U [k ,
i]
}
}
if ( U [i , i ] == 0 )
stop ( " o argumento x é uma matriz
singular " )
L [j , i ] <- L [j , i ] / U [i , i ]
}
}
}
result <- list ( L =L , U = U )
return ( result )
}
A = TTT (2)
6
if ( is . complex ( x ) )
stop ( " complex matrices not permitted at present "
)
4 Aplicação
4.1 QR Decomposition
•
4.4 LU Decomposition
•
7
5 Discussão
6 Conclusões
7 Referências
Gentle, J. E.Matrix Algebra Theory, Computations, and Applications in Statistics.
8
blob/master/R/lu.decomposition.R>. Acesso em: 15/11/2019.