Álgebra linear
computacional
Prof. Paulo R. G. Bordoni
UFRJ
Slide 2
Slide 2 text
Aulas atrás começamos a examinar
matrizes.
Vimos como criar matrizes e
efetuar operações matriciais básicas
com NumPy.
Vamos adiante!
Slide 3
Slide 3 text
Cramer apresentou sua
fórmula para resolver
sistemas lineares em 1750.
Antes disso, Cardano, no final do
século XVI, trabalhou com
determinantes 2x2.
Leibniz usou determinantes em 1693
para resolver sistemas lineares.
Slide 4
Slide 4 text
Um determinante de 2ª ordem, é
denotado e definido por:
Notem que o cálculo exige 2
multiplicações e 1 subtração.
No computador serão 3 flops.
Slide 5
Slide 5 text
≠
A regra de Cramer para
resolver um sistema 2x2 como
este é (prove, Surfista):
O cálculo exige 3x2
multiplicações, 3 adições e 2
divisões.
Ao todo 11 flops.
Slide 6
Slide 6 text
=
2 3
1 −1
2 1
1 3
=
−5
5
= −1
=
3 1
−1 3
2 1
1 3
=
10
5
= 2
Aplicando a regra de Cramer para
resolver o sistema 2x2
+ =
+ = −
obtemos:
Slide 7
Slide 7 text
Um determinante de 3ª ordem, é
definido por:
Desenvolvendo os
determinantes de 2ª ordem,
obtemos:
Slide 8
Slide 8 text
A regra de Cramer para
resolver um sistema 3x3 como
o acima é dada por:
Slide 9
Slide 9 text
Portanto para resolver um sistema 3x3 pela
regra de Cramer são necessárias:
(3/2)4! multiplicações, 4!-4 adições e 3
divisões.
Notem o fatorial no número de flops.
Foram necessárias (3/2)3!
multiplicações e 3!-1
adições/subtrações para cada
determinante 3x3.
Slide 10
Slide 10 text
Este é um sistema linear constituído
por n equações lineares à n
incógnitas.
Sendo breve: um sistema n x n
Slide 11
Slide 11 text
Ax = b
Aliás, Lewis Carrol
conta num livro, que
a notação para
matrizes que usamos
hoje foi proposta por
Leibniz.
Na forma matricial esse
sistema se reescreve:
Slide 12
Slide 12 text
O determinante det A de uma
matriz A de ordem n é definido
recursivamente, como na próxima
transparência.
Slide 13
Slide 13 text
Para n > 1, o desenvolvimento pela − é linha
do det é dado por
det = 1
1
+ 2
2
+ ⋯ +
onde
= (−1)+
e
é o determinante de ordem n-1 obtido a
partir da matriz A excluindo-se sua − é
linha e − é coluna.
Há um desenvolvimento semelhante a partir da
− é coluna.
Para n = 1, det A = a
11
.
Slide 14
Slide 14 text
det (ℴ 4 )
α det (ℴ 3 )
β det (ℴ 3 )
γ det (ℴ 3 )
δ det (ℴ 3 )
+ −
+ −
+ −
α det (ℴ 2 )
β det (ℴ 2 )
γ det (ℴ 2 )
det (ℴ 3 )
+ −
+ −
α det (ℴ 1 )
β det (ℴ 1 )
det (ℴ 2 ) + −
2 mult.
1 adiç.
3 mult.
2 adiç.
4 mult.
3 adiç.
O cálculo de um
determinante de
ordem 4 envolve:
4 × 3 × 2 × 1 = 4! multiplicações
3 × 2 × 1 = 3! adições/subtrações
Slide 15
Slide 15 text
A regra de Cramer para
resolver um sistema
linear n x n como este é:
Se = det ≠ 0 a solução é dada por
1
=
1
, 2
=
2
, ⋯ ,
=
onde
é o determinante da matriz A com a
coluna k subtituída pelo termo independente b.
Slide 16
Slide 16 text
Portanto, para resolver um sistema
linear n x n precisaremos efetuar o
cálculo de n+1 determinantes de
ordem n e n divisões.
Assim, o total de operações
envolvidas é:
• + 1 ! multiplicações
• da ordem de n! adições
• n divisões
Slide 17
Slide 17 text
Bobagem!
Para o Titan – Cray
XK7 é mole!
O tempo gasto, por qualquer
computador, para resolver sistemas
30 x 30 é inimaginável !
Slide 18
Slide 18 text
A tabela mostra o tempo gasto
pelo Cray XK7, para resolver um
sistema n x n:
n tempo
20 48.41 min.
25 7.37 séculos
30 1.076 idade univ.
Surfista querido, para um
sistema 30x30 ele demora um
pouco mais que a idade do
universo!
Slide 19
Slide 19 text
O programinha que
fez os cálculos.
Slide 20
Slide 20 text
Definitivamente, é inviável
resolver sistemas lineares
pela regra de Crammer!
Jamais esqueça de contar o
número de operações
envolvidas num algoritmo!
Slide 21
Slide 21 text
Nesta e nas próximas aulas
mergulharemos de cabeça na
Álgebra linear computacional.
Utilizaremos a SciPy.
Slide 22
Slide 22 text
SciPy.org é o site da SciPy
que é um codinome para
Scientific Python.
Slide 23
Slide 23 text
SciPy é uma
biblioteca construída
a partir de NumPy.
Já vem instalada
com Python(x,y).
Slide 24
Slide 24 text
Na página de abertura da
SciPy.org uma homenagem
merecida ao criador da
MatPlotLib.
Slide 25
Slide 25 text
Palestras no
congresso,
agora em 2013.
Slide 26
Slide 26 text
Mais palestras
do congresso.
Slide 27
Slide 27 text
Um dos tutoriais
do Congresso.
Slide 28
Slide 28 text
O Guia de referência
da SciPy.
Slide 29
Slide 29 text
Todos os tópicos
tratados na última
versão da SciPy:
Slide 30
Slide 30 text
Clicando em Tutorial
somos conduzidos a uma
repetição do seu índice.
De imediato vamos
olhar para
Introduction
Slide 31
Slide 31 text
Uma breve
descrição de SciPy.
Convenções de
importação.
Slide 32
Slide 32 text
Em nosso curso
trabalharemos com
os sub pacotes que
marquei.
Slide 33
Slide 33 text
É hora de embarcar no pacote
scipy.linalg.
Ele possui a álgebra linear
computacional tão anunciada.
Slide 34
Slide 34 text
Tudo começa
aqui.
Já, já entrarei em mais
detalhes sobre as BLAS
e LAPACK.
Slide 35
Slide 35 text
Eis o motivo para usar
a linalg da SciPy.
Mas já tem linalg na NumPy.
Por quê repetir?
Slide 36
Slide 36 text
Antes que você pergunte,
Surfista, vá ler o resto desta
discussão lá no Tutorial!
Slide 37
Slide 37 text
A estrutura do tutorial Linear
Algebra, (scipy.linalg), é a seguinte:
Álgebra linear
Apresentação
Rotinas básicas
Decomposições
Funções matriciais
Matrizes especiais
Slide 38
Slide 38 text
Os tópicos em rotinas
básicas são :
Rotinas básicas
Achando a inversa
Resolvendo sistemas lineares
Achando o determinante
Calculando normas
Resolvendo problemas lineares de
mínimos quadrados e pseudo-inversas
Inversa generalizada
Vamos começar
pelos
determinantes.
Slide 39
Slide 39 text
O texto é um resumo
do que já vimos no
início da aula.
Slide 40
Slide 40 text
Então, indo ao Reference Guide do
pacote Linear Algebra, em Basics,
vamos encontrar os detalhes para
usar a função.
Mas se o cálculo de
determinantes é inviável, na
prática, como o pacote scipy faz
isto?
Slide 41
Slide 41 text
A utilização da função det( ) é
trivial e a resposta à sua
pergunta está marcada no pé da
página, Loirinha.
Slide 42
Slide 42 text
E o que é fatoração
LU?
É algo tão importante e fundamental
em Álgebra linear computacional
como respirar é para a vida!
O Mestre informou que será o
assunto da próxima aula.
Slide 43
Slide 43 text
Neste programa entramos com
uma matriz A, via teclado, e em
seguida chamamos a função
det(A).
Slide 44
Slide 44 text
Voltando às rotinas básicas do
Scipy, vejamos o que há no
tópico “Calculando normas”.
Rotinas básicas
Achando a inversa
Resolvendo sistemas lineares
Achando o determinante
Calculando normas
Resolvendo problemas lineares de
mínimos quadrados e pseudo-inversas
Inversa generalizada
Slide 45
Slide 45 text
O SciPy possibilita calcular
diversas normas.
Tanto normas de vetores como
de matrizes.
Slide 46
Slide 46 text
Por enquanto, vamos examinar apenas as
normas vetoriais.
Veremos as normas matriciais mais adiante.
Para elas precisaremos de um pouco mais
de teoria.
É importantíssimo observar que
todas aquelas cujo parâmetro
ord é negativo não são normas.
Slide 47
Slide 47 text
Surfista, apresente alguns
contra-exemplos que justifiquem
a última afirmação do Mestre!
Quando ord = inf temos a norma do máximo.
Para ord = 1 temos a norma da soma e para
ord = 2 temos norma euclidiana.
Elas são anotadas ∞
, 1
e 2
respectivamente.
As outras são anotadas
, ( = ).
Slide 48
Slide 48 text
Já provamos que 2
= 1
2 + 2
2 + ⋯ +
2
define uma norma. A verificação que
1
= 1
+ 2
+ ⋯ +
é uma norma é óbvia.
Da mesma forma, a comprovar que
∞
= max { 1
, 2
, ⋯ ,
} define uma
norma também é fácil.
Slide 49
Slide 49 text
Para prová-la precisamos da
desigualdade de Hölder:
, ≤ ′ com ′ =
−1
.
A dificuldade para provar que
= |1
| + |2
| + ⋯ + |
|
é uma norma está na desigualdade triangular:
+
≤
+
.
Ela é conhecida na literatura como desigualdade
de Minkowski.
Slide 50
Slide 50 text
Observem que a desigualdade de
Hölder desempenha um papel
análogo ao da desigualdade de
Cauchy-Schwarz.
Não vamos provar nenhuma das duas.
Porém, se você estiver interessado,
Surfista, já sabe as palavras-chave para
buscar as demonstrações.
Slide 51
Slide 51 text
Na referência do SciPy
encontramos os detalhes dos
parâmetros para usar a função
norma:
Slide 52
Slide 52 text
Por enquanto só veremos
normas de vetores.
Atenção para a referência!
Slide 53
Slide 53 text
Um exemplo de utilização da
função norm( ) para vetores.
Slide 54
Slide 54 text
Mestre, parece que os valores
numéricos das normas estão
tendendo ao valor da ∞
!
É verdade minha filha.
Prove que para ∀ ∈ ℝ temos
lim
→∞
= ∞
Slide 55
Slide 55 text
1 y
x
A bola unitária no espaço
euclidiano ℝ é o conjunto
2
= ∈ ℝ | 2
≤ 1 .
Ela descreve o conjunto
2 + 2 + 2 ≤ 1,
que nossa intuição entende por uma bola (de
futebol) no espaço euclidiano ℝ3.
No plano seria como um CD (dos Beatles).
Slide 56
Slide 56 text
1
1
-1
-1
y
x
A bola unitária no espaço ℝ com
a norma da soma é o conjunto
1
= ∈ ℝ | 1
≤ 1 .
No ℝ2 ela corresponde ao conjunto
definido pela desigualdade
+ ≤ 1, mostrado na figura.
Slide 57
Slide 57 text
1
1
-1
-1
y
x
A bola unitária no espaço ℝ com
a norma do máximo é o conjunto
∞
= ∈ ℝ | ∞
≤ 1 .
No ℝ2 ela corresponde ao conjunto
definido pela desigualdade
max { , } ≤ 1, mostrado na figura.
Slide 58
Slide 58 text
Surfista, não vá jogar
bola com 1
ou ∞
.
Você pode se machucar!
É, são bolas que escapam
da nossa intuição
euclidiana.
Slide 59
Slide 59 text
Este livro é o clássico dos
clássicos sobre álgebra linear
computacional.
Vamos até reproduzir seu
Sumário.
Slide 60
Slide 60 text
No content
Slide 61
Slide 61 text
Este é outro clássico peso-pesado
em álgebra linear computacional.
Também vamos reproduzir seu
Sumário.
Slide 62
Slide 62 text
São livros de cabeceira para
quem for fazer pós-graduação
em computação científica,
matemática aplicada ou análise
numérica.
Slide 63
Slide 63 text
O conteúdo desses dois livros é a
definição mais apropriada de Álgebra
linear computacional.
Invista em você.
Adquira os dois livros!
Slide 64
Slide 64 text
Um pouco mais de teoria.
Vamos recordar o conceito de
transformação linear.
Slide 65
Slide 65 text
O conceito de função é, com certeza,
o mais importante da matemática.
Elas são o objeto do Cálculo
diferencial e integral.
Em particular, vamos considerar funções
de um espaço vetorial U em um outro
espaço vetorial V :
: → , ∈ ⟼ = () ∈ .
Slide 66
Slide 66 text
Em outras palavras, funções
: → tais que:
• + ⟼ ( + ) = + ,
• ⟼ = ().
Tais funções recebem o nome especial de
transformações lineares.
Particularizando ainda mais:
funções : → de um espaço
vetorial U para outro V que preservam
as operações nativas de U e V.
Slide 67
Slide 67 text
=
A
ℝ
ℝ
Matrizes × definem
transformações lineares de ℝ
em ℝ através da multiplicação
matriz x vetor.
Uma matriz 3 x 4 define uma
transformação linear
∶ ℝ4 → ℝ3, através da multiplicação:
1
2
3
=
11
12
13
14
21
22
23
24
31
32
33
34
1
2
3
4
Slide 68
Slide 68 text
Lembrem-se que:
Se A é uma matriz m x n então:
• + = + , ∀, ∈ ℝ
• = , ∀ ∈ ℝ , ∀ ∈ ℝ
Que são as condições
de linearidade.
Slide 69
Slide 69 text
Um exemplo simples de ℝ2 em ℝ2 é
1
2
=
−1 2
2 −3
1
2
que corresponde ao par de igualdades
1
= −1
+ 22
2
= 21
− 32
Slide 70
Slide 70 text
−
y
x
Em ℝ2 e em ℝ3 podemos visualizar o
efeito de uma matriz como
transformação linear.
Por exemplo, a matriz
=
1 0
0 −1
faz uma
reflexão no eixo-x, pois
− =
1 0
0 −1
Slide 71
Slide 71 text
O programa da próxima
transparência permitirá a
visualização da ação de uma matriz
M sobre um triângulo ABC.
Mostraremos alguns exemplos
com diferentes matrizes M.
Surfista, faça outros exemplos
exploratórios.
Slide 72
Slide 72 text
O programa a seguir mostra a
ação de uma matriz M de
ordem 2 sobre um triângulo
ABC, retângulo em B.
Slide 73
Slide 73 text
Em todos os exemplos
estaremos usando a
mesma escala nos
dois eixos.
A matriz M
escolhida faz uma
reflexão no eixo-y.
Slide 74
Slide 74 text
A matriz M escolhida faz
uma contração no eixo-x e
uma dilatação no eixo-y.
Slide 75
Slide 75 text
Já a ação desta matriz
M é complicada de
descrever.
Slide 76
Slide 76 text
Surfista, ajude a Loirinha.
Vá ao programa que mostra a ação da
matriz M sobre o triângulo ABC e
marque os vértices correspondentes
com o mesmo símbolo.
Mestre, seu programa não
mostra a correspondência
entre os vértices originais e
suas imagens!
Slide 77
Slide 77 text
Nas próximas três
transparências comentaremos
alguns detalhes do programa
feito pelo Mestre.
São detalhes técnicos...
Slide 78
Slide 78 text
A função plot( ) só
funciona com arrays; não
produz gráficos com
matrizes. Vejam:
Slide 79
Slide 79 text
Face ao exposto na transparência
anterior, precisamos transformar
M_Triang[0] e M_Triang[1] em
arrays, usando ravel( ).
Slide 80
Slide 80 text
A função fill( ) da MatPlotLib preenche
uma poligonal fechada com a cor
definida em rgb pela “string”
hexadecimal ‘#rrggbb’.
Assinalei um truque “sujo” do
Mestre para centralizar o
gráfico.
Troque ‘.w’ por ‘+r’ e execute
novamente para entender!
Slide 81
Slide 81 text
x x
I
A matriz identidade I é uma
matriz quadrada de ordem n
com 1’s na diagonal e 0’s fora
dela.
A identidade,
como
transformação
linear não faz
nada!
ℝ ℝ
I x = x
Slide 82
Slide 82 text
Uma matriz M muito
próxima da identidade
=
1 0
0 1
.
Se M fosse a
identidade I veríamos
apenas o triângulo rosa,
cobrindo o azul.
Slide 83
Slide 83 text
x y
A
z
B
ℝ ℝ
ℝ
BA
O produto BA de uma matriz B por uma
matriz A corresponde à aplicação linear
composta de A seguida por B:
Slide 84
Slide 84 text
Lembrem-se que a multiplicação de
matrizes não é comutativa.
Na aula passada exibimos um programa
que mostra que, usualmente,
≠ .
Por exemplo, para
=
1 2
1 2
e =
−1 1
1 −1
temos
=
1 −1
1 −1
e =
0 0
0 0
.
Slide 85
Slide 85 text
A inversa de uma matriz
quadrada A de ordem n
é uma matriz quadrada B
de ordem n tal que
∙ = ∙ =
Existem matrizes que não possuem
inversa – são não-inversíveis.
Uma matriz não possui mais que uma
inversa. Além disso, a inversa da
inversa é a própria!
Slide 86
Slide 86 text
Prova-se que A é inversível quando, e
apenas quando, é não-singular, i.é,
det () ≠ 0
Entretanto, verificar se
det () ≠ 0 para saber se A é
inversível é uma técnica nunca
utilizada em Álgebra linear
computacional.
Slide 87
Slide 87 text
x y
A
A-1
ℝ ℝ
x y
A
x
A-1
ℝ ℝ
ℝ
I
Pela própria definição, a inversa
A-1 de uma matriz A , quando
considerada como aplicação
linear, desfaz a ação de A.
Slide 88
Slide 88 text
Voltando às rotinas básicas do
foquemos nossa atenção no
tópico “Achando a inversa”.
Rotinas básicas
Achando a inversa
Resolvendo sistemas lineares
Achando o determinante
Calculando normas
Resolvendo problemas lineares de
mínimos quadrados e pseudo-inversas
Inversa generalizada
Slide 89
Slide 89 text
Vejam o que Tutorial do
scipy.linalg informa sobre
a inversa de uma matriz:
Slide 90
Slide 90 text
Indo à Referência e clicando
em inv( )
obtive as informações abaixo:
Slide 91
Slide 91 text
Obtendo a inversa de
uma matriz A e
conferindo.
Slide 92
Slide 92 text
Pedi ao Mestre para fazer um
programa parecido àquele que mostra
o efeito visual da ação de uma matriz
num triângulo.
Mas para a matriz inversa!
Ele fará Loirinha, você é a
queridinha dele!
Slide 93
Slide 93 text
O seu pedido
satisfeito, Loirinha!
Slide 94
Slide 94 text
Verificando as ações de
uma matriz e sua inversa,
como transformações
lineares.
O deslocamento é um
artifício para
enxergarmos o efeito
da inversa (em verde).