Normas, condicionamento
e fatorações
Prof. Paulo R. G. Bordoni
UFRJ
Slide 2
Slide 2 text
Vamos começar analisando o
conceito de norma, para
matrizes.
Slide 3
Slide 3 text
Uma norma num espaço
vetorial é uma função
∙ ∶ → ℝ satisfazendo:
Para , ∈ e ∈ ℝ:
I. ≥ 0,
II. = 0 se e somente se = 0,
III. = ,
IV. + ≤ + .
Slide 4
Slide 4 text
Portanto é possível definir uma norma
para matrizes em ℳ×
.
Basta garantir as quatro propriedades
relacionadas pelo Galileu.
Já conferimos que o conjunto ℳ×
das
matrizes × com a adição de matrizes e
a multiplicação por fator de escala é um
espaço vetorial.
Slide 5
Slide 5 text
A norma de Frobenius é definida por:
=
,=1
2
= ()
Surfista, prove que
é uma norma.
Operacionalmente é como se fosse a
norma euclidiana para um vetor de 2
componentes.
Slide 6
Slide 6 text
Na realidade nosso foco estará
na aplicação linear associada à
uma matriz ∈ ℳ×
.
Pensar na aplicação linear : ℝ → ℝ
associada à matriz envolverá três
normas: uma em ℝ outra em ℝ e
uma terceira em ℳ×
.
Slide 7
Slide 7 text
Vamos provar que: se é uma norma vetorial,
então a função ∶ ℳ×
→ ℝ definida por
⟼ = sup
≠0
é uma norma.
É uma norma matricial denominada
norma matricial induzida (pelas
normas em ℝ e ℝ).
Slide 8
Slide 8 text
Sim, basta considerar o supremo
sobre a bola unitária, isto é:
= sup
=1
.
Antes, vamos mostrar que não
precisamos tomar o supremo sobre
todos os vetores ≠ 0 de ℝ.
Slide 9
Slide 9 text
Observe, Surfista, que para
todo ∈ ℝ, temos
∙ = = ()
Considerando o caso particular em que
= Τ
1 , para ∈ ℝ e ≠ 0, temos
∙=
1
= Τ
e, obviamente, = 1 para = Τ
.
Slide 10
Slide 10 text
Portanto
= sup
≠0
= sup
=1
E isso vale para qualquer uma
das três bolas unitárias, nas
∙ 1
, ∙ ∞
e ∙ 2
.
Slide 11
Slide 11 text
Fantástico, Surfista.
Pela interpretação geométrica fornecida pela
decomposição SVD segue daí que
2
= sup
2=1
2
= 1
,
o maior valor singular de .
1
= 2
Slide 12
Slide 12 text
É o que nossos
alunos farão!
Senhores, essa afirmação que
= sup
≠0
= sup
=1
é uma norma é tão importante que
merece ser provada!
Slide 13
Slide 13 text
A condição I da definição de
norma é imediata:
= sup
=1
≥ ≥ 0.
A condição III também:
= sup
=1
= sup
=1
= .
Slide 14
Slide 14 text
A parte ⇐ da exigência II da
definição de norma é trivial.
Se = 0, claramente = 0.
Mostre a parte ⇒, Cabelos de Fogo!
Se = 0 então sup
≠0
= 0 e portanto
= 0, ∀ ∈ ℝ.
Logo = 0, ∀ ∈ ℝ e assim = 0.
Slide 15
Slide 15 text
Só falta a condição IV, a
desigualdade triangular.
Antes de prová-la, vamos provar
que
≤ , ∀ ∈ ℝ,
uma desigualdade importante em
si mesma.
Slide 16
Slide 16 text
Ora, Cabelos de Fogo, sua afirmação decorre
da definição de supremo:
= sup
≠0
≥
, ∀ ∈ ℝ, ≠ 0
Claro, pois daí temos
≤ , ∀ ∈ ℝ.
Slide 17
Slide 17 text
Para vetores , ∈ ℝ temos
+ ≤ + ,
portanto ∀ ∈ ℝ, segue daí que
+ = + ≤ + .
Então, para na bola unitária, da
desigualdade que acabamos de provar,
temos
+ ≤ + ≤ +
Slide 18
Slide 18 text
Notem que + ≤ + , ∀ ∈ ℝ
com = 1.
Consequentemente
+ = sup
=1
+ ≤ + .
Brilhante Cabelos de Fogo!
Assim é válida a exigência IV, a
desigualdade triangular:
+ ≤ + , ∀, ∈ ℳ×
.
Slide 19
Slide 19 text
Agora vamos examinar as normas
induzidas 1
e ∞
de uma
matriz .
Slide 20
Slide 20 text
Sim Surfista, basta aplicarmos aos
vetores dos vértices , , , tanto
da
1
(1) como da
∞
(1).
Mestra, essas duas bolas
unitárias são quadrados.
Obter o efeito de uma matriz
sobre elas é imediato, não?
Slide 21
Slide 21 text
Por exemplo, a imagem por
=
1.1 0.6
0.4 1.8
da
∞
(1) é:
Slide 22
Slide 22 text
E a imagem pela mesma matriz
=
1.1 0.6
0.4 1.8
da
1
(1) é:
Slide 23
Slide 23 text
Por inspeção visual, o vetor de tamanho máximo
da imagem por A da
∞
(1) é ∗ .
Temos ∗ ∞
= max{1.7, 2.2} = 2.2.
Portanto ∞
= 2.2.
Slide 24
Slide 24 text
Já, examinando a imagem por da
1
(1),
vemos que o vetor de tamanho máximo é ∗ .
Temos ∗ 1
= 0.6 + 1.8 = 2.4.
Portanto 1
= 2.4.
Slide 25
Slide 25 text
Entretanto, não precisamos gerar as imagens
por das bolas
∞
(1) e
1
(1) para
calcular as ∞
e 1
.
Basta calcularmos a matriz nos vértices
, , , das bolas.
Como, Mestre?
Repetindo, para =
11
12
21
22
:
• 1
= max{ 11
+ 21
, 12
+ 22
}
• ∞
= max{ 11
+ 12
, 21
+ 22
}
Por esses dois resultados:
• 1
é referida como norma (...) das colunas de e
• ∞
como norma (...) das linhas de .
(...) = (do máximo da soma dos valores absolutos)
Slide 31
Slide 31 text
Conferindo, para =
1.1 0.6
0.4 1.8
tenho:
• 1
= 2.4 (colunas de ),
• ∞
= 2.2 (linhas de ).
Slide 32
Slide 32 text
Apresento novamente a
scipi.linalg.norm().
Slide 33
Slide 33 text
Agora vamos
calcular normas
matriciais.
Slide 34
Slide 34 text
Especificamente, vamos calcular as
normas
∙
, ∙ 2
, ∙ 1
, ∙ ∞
de uma matriz e conferir a
igualdade 2
= 1
.
Slide 35
Slide 35 text
Vejam:
Slide 36
Slide 36 text
Passaremos a analisar a sensibilidade
da multiplicação matricial. Isto porque
ela está diretamente associada à
resolução de sistemas lineares.
Slide 37
Slide 37 text
No início do curso estudamos
o número de condicionamento
de um problema/função.
Sim Mestre. Tanto o
condicionamento absoluto
, = ()
como o condicionamento relativo
, =
, ∙ Τ
() .
Slide 38
Slide 38 text
Nosso interesse imediato é calcular os
números de condicionamento de funções
∶ ℝ → ℝ dadas por
↦ ∈ ℝ, ∈ ℝ.
O 1º passo da generalização é imediato:
substituímos os módulos por normas.
Assim eles serão os números dados por:
, = ()
e
, =
, ∙ Τ
()
Slide 39
Slide 39 text
Para funções ∶ ℝ → ℝ a () é a
matriz jacobiana,
= Τ
()
O 2º passo envolve o
entendimento do que é
().
Slide 40
Slide 40 text
Claro e a é a multiplicação
de matriz por vetor, de forma que cada
é
definido por
=
(1
, 2
, ⋯ ,
) = 1
1
+2
2
+ ⋯ +
Lembrem-se colegas, sistemas lineares são
descritos por funções lineares
: ℝ → ℝ:
=
1
2
⋮
∈ ℝ ⟼ =
1
2
⋮
∈ ℝ, onde = .
Portanto para a : ℝ3 → ℝ3 do sistema
linear do Surfista teremos
Τ
()
=
2 −1 4
−1 5 3
6 −2 1
.
Claro, Loirinha!
A matriz jacobiana dela é
constante, e igual à própria matriz
do sistema!
Slide 43
Slide 43 text
Portanto o número de
condicionamento absoluto para
sistemas lineares é
= , = .
Resumindo, se ∶ ℝ → ℝ é a
multiplicação matricial, = , seu
número de condicionamento absoluto é
, = .
Slide 44
Slide 44 text
Claro que não colega!
A solução de um sistema linear =
é dada por = −1.
Assim, a função é : ↦ = −1.
Brilhante Cabelos de Fogo.
O número de condicionamento para o
problema da resolução de sistemas
lineares é, portanto
, = −1 .
Slide 45
Slide 45 text
Assim, o número de condicionamento
absoluto
( = , ) de um sistema
linear só está definido quando é
inversível.
E independe tanto do termo
independente quanto da incógnita .
Só depende da matriz .
Slide 46
Slide 46 text
O número de condicionamento
relativo é dado por
, =
, Τ
∙ () .
Bem, só falta entender o
termo Τ
() .
Mestre, se
= () = −1
é claro que = .
Slide 47
Slide 47 text
Sim Cabelos de Fogo e portanto
Τ
() = Τ
≤ .
Assim o condicionamento relativo
da resolução de sistemas lineares
satisfaz
, ≤ −1 ∙
Slide 48
Slide 48 text
Quando é ortogonal a igualdade em
, ≤ −1 ∙
é atingida.
Claro Mestra, pois nesse caso a
: ↦ = −1
não altera o tamanho de , não importa a
forma de medir tamanho.
Slide 49
Slide 49 text
Conclusão: o número de condicionamento
relativo de um sistema linear = é
= , = −1 ∙
Portanto os números de condicionamento absoluto
e relativo para sistemas lineares
= dependem apenas da matriz (e da −1):
•
= , = ,
•
= , = ∙ −1 .
Slide 50
Slide 50 text
Assim suprimiremos a indicação do sistema
= e de , escrevendo apenas
() e
().
Slide 51
Slide 51 text
Quando não é inversível, é usual
escrever
= +∞ e
= +∞
Quando é inversível de ∙ −1 =
decorre que
1 = = ∙ −1 ≤ −1 .
Portanto
≥ 1, para toda matriz
inversível .
Slide 52
Slide 52 text
Como antes, quando os números de
condicionamento forem pequenos o problema
de resolução de sistemas lineares é bem
condicionado; caso contrário é mal
condicionado.
Slide 53
Slide 53 text
Na numpy.linalg temos a
função cond( ):
Slide 54
Slide 54 text
Fiz este programinha, que recebe
uma matriz A e devolve os
números de condicionamento
oferecidos pela numpy.linalg.con():
Slide 55
Slide 55 text
Surfista, observe que:
• 2
=
- o maior valor singular de A ,
• −1
2
= Τ
1
- o menor valor singular de A .
Assim
= Τ
Em outras palavras
= Τ
,
é a excentricidade do hiper-elipse que
é a imagem por A da circunferência
unitária.
Slide 56
Slide 56 text
Os teoremas 12.1 e 12.2 do livro de
Trefethen & Bau, exibidos a seguir,
mostram a importância dos números de
condicionamento de uma matriz A.
Slide 57
Slide 57 text
No content
Slide 58
Slide 58 text
Eis como estimar o número de casas
decimais confiáveis na solução de um
sistema linear:
Slide 59
Slide 59 text
A paisagem é magnífica; há
muita coisa a ser vista!
Slide 60
Slide 60 text
Álgebra linear
Apresentação
Rotinas básicas
Decomposições
Funções matriciais
Matrizes especiais
Agora vamos explorar as
fatorações (Decompositions)
existentes na scipy.linalg.
Slide 61
Slide 61 text
A famosa
fatoração LU.
Slide 62
Slide 62 text
Rotinas existentes na
Referência da
scipy.linalg para a
fatoração LU.
Slide 63
Slide 63 text
Sim, de = , segue que
det() = det det det().
Veremos que L só possui 1’s na diagonal e
que P é ortogonal.
Assim,
det = ± det = ±11
22
⋯
A fatoração =
permite calcular det().
Slide 64
Slide 64 text
Mestre, que outras
vantagens Maria Loirinha
leva com essa tal de
fatoração LU?
Antes do Mestre te responder,
jovem, proponho que discuta com
seus colegas sobre essa cultura
de levar vantagem em tudo.
Grande Filósofo!
Slide 65
Slide 65 text
Respondendo tua pergunta, Loirinha:
Tendo a fatoração = , resolver o sistema
linear = é equivalente a resolver = .
Então resolvemos primeiro o sistema = e
depois o = .
Note que esses dois são sistemas triangulares,
facílimos de resolver!
Conforme já vimos, o maior trabalho
reside em fatorar (i.é, efetuar o
processo de eliminação).
Slide 66
Slide 66 text
Os detalhes para usar
a linalg.lu( ):
Slide 67
Slide 67 text
O que linalg.lu( )
retorna:
Slide 68
Slide 68 text
A rotina pode efetuar o pivotamento por
linha (ou não). Ela retorna:
• as três matrizes P, L e U
• ou apenas duas, a PL que é a
triangular inferior permutada e a U.
Slide 69
Slide 69 text
Conferindo a
fatoração LU:
Slide 70
Slide 70 text
Um 1º exemplo em
que não necessidade
de trocas de linhas,
Slide 71
Slide 71 text
Já neste exemplo é evidente a
necessidade de permutar
a L0 com a L2 e depois a L2
com a L3.
Atente para as matrizes A e P.
Slide 72
Slide 72 text
Uma outra forma de chamar a
fatoração LU da SciPy.
Como no 1º exemplo, não houve
a necessidade de pivotamento.
Slide 73
Slide 73 text
Chamando a 2ª forma da
fatoração LU da SciPy.
Agora com pivotamento.
Slide 74
Slide 74 text
Esta é lu_factor( ) que efetua a fatoração .
Ela recebe a matriz A e retorna uma matriz
contendo a fatoração LU e um vetor P
contendo os índices de pivoteamento.
Slide 75
Slide 75 text
Os parâmetros
retornados. Esta rotina
usa a LAPACK.
Slide 76
Slide 76 text
Esta rotina recebe a fatorada LU e o
vetor piv fornecidos pela lu_factor( ).
Recebe também o termo independente
b e retorna a solução x.
Slide 77
Slide 77 text
Resolvendo um sistema
linear Ax = b
via fatoração LU com
pivotamento.
Slide 78
Slide 78 text
Ela é boa para resolver
sistemas Ax=b com muitos
b’s, mas a mesma A.
Slide 79
Slide 79 text
Vejam, entrei com uma matriz
4x4 e 2 termos independentes.
Poderiam ser muitos: 10, 50, etc.
Slide 80
Slide 80 text
Uma brevíssima
explicação do que é a
fatoração de Cholesky.
Slide 81
Slide 81 text
É essa a ideia Surfista.
Além disso, vale a volta; veja
na próxima transparência!
Confirmando, se A é simétrica e
positiva definida está garantida a
existência de uma matriz triangular
superior tal que = .
É como se U fosse a raiz quadrada de
A, Mestre, pois = .
Slide 82
Slide 82 text
Suponha que uma matriz
não-singular A possa ser
fatorada na forma = ,
com U triangular superior.
Então A será simétrica e
definida positiva.
É difícil provar isto
Mestra?
Slide 83
Slide 83 text
E também que A é definida positiva, isto é
≠ 0 ⟹ > 0.
De fato assumindo ≠ 0 e = teremos ≠ 0, devido
à não-singularidade de U. Então
= () = = = 2 > 0.
Bem, minha querida, de = segue que:
• A é simétrica, pois
= ()= ()= =
• U é não-singular, pois
det()2 = det() = det() ≠ 0.
Slide 84
Slide 84 text
As rotinas do SciPy para
a fatoração de Cholesky.
Slide 85
Slide 85 text
A explicação para
passagem de parâmetros.
Slide 86
Slide 86 text
Surfistas e Loirinhas, fiz
este programa usando a
fatoração de Cholesky.
Slide 87
Slide 87 text
Uma execução.
Deixo a cho_fator() e a
cho_solve() para vocês.
Slide 88
Slide 88 text
Esta rotina só efetua a
fatoração. Deve ser usada
com a cho_solve().
Slide 89
Slide 89 text
Fácil, fácil.
Só troquei o nome da rotina
e acrescentei o parâmetro
de retorno Eh_inf.
Slide 90
Slide 90 text
Fácil nada, você errou.
O apressado come cru!
Repeti os dados da Mestra
e não conferiu.
Slide 91
Slide 91 text
Errou porque não
prestou atenção no
aviso:
Vou corrigir!
Slide 92
Slide 92 text
Foi só aplicar a rotina
triu() na Cho. Vejam o
resultado a seguir:
Slide 93
Slide 93 text
Como você disse
Surfista, fácil, fácil!
Slide 94
Slide 94 text
Esta rotina resolve o
sistema após fatorado pela
rotina cho_factor().
Slide 95
Slide 95 text
Vou resolver o sistema linear abaixo.
A matriz do sistema é a do exemplo
anterior.
5 2 1 0
2 7 3 1
1
0
3
1
6
−1
−1
2
=
1
2
3
4
Slide 96
Slide 96 text
O Mestre chamou a Cho_fator() e
depois a Cho_solve().
Percebam que ele não precisou zerar a
parte inferior da matriz Cho.
Além disso, b entrou como vetor-linha e
foi transformado em vetor-coluna.
Slide 97
Slide 97 text
A execução, com
conferência a resposta.
Slide 98
Slide 98 text
Esta é específica para
matrizes de banda. Só
fatora.
Slide 99
Slide 99 text
Esta resolve o sistema
linear, após a fatoração pela
cholesky_banded().
Slide 100
Slide 100 text
Façam um programa para resolver um
sistema linear = no qual , além
de ser simétrica e positiva-definida,
também é de banda.
Vai cair na prova
Mestra?