Documente Academic
Documente Profesional
Documente Cultură
UFRJ
Na aula passada comeamos a olhar para matrizes. Vimos tambm como criar matrizes e efetuar operaes matriciais bsicas com NumPy.
Vamos adiante!
Antes disso, Cardano, no final do sculo XVI, trabalhou com determinantes 2x2. Leibniz usou determinantes em 1693 para resolver sistemas lineares.
A regra de Cramer para resolver um sistema 2x2 como este (prove, Surfista):
O clculo exige 3x2 multiplicaes, 3 adies e 2 divises. Ao todo 11 flops.
3 1 10 = 1 3 = =2 2 1 5 1 3
2 = 1 2 1
3 1 = 5 = 1 1 5 3
A regra de Cramer para resolver um sistema 3x3 como o acima dada por:
Foram necessrias (3/2)3! multiplicaes e 3!-1 adies/subtraes para cada determinante 3x3.
Portanto para resolver um sistema 3x3 pela regra de Cramer so necessrias: (3/2)4! multiplicaes, 4!-4 adies e 3 divises. Notem o fatorial no nmero de flops.
Este um sistema linear constitudo por n equaes lineares n incgnitas. Sendo breve: um sistema n x n
Alis, Lewis Carrol conta num livro, que a notao para matrizes que usamos hoje foi proposta por Leibniz.
Ax = b
O determinante det A de uma matriz A de ordem n definido recursivamente, como na prxima transparncia.
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.
4 mult. 3 adi.
det( 3 )
+
det( 3 )
det( 4 )
det( 3 )
+
det( 3 ) det( 2 )
+
det( 2 )
+
det( 2 )
det( 1 )
4! multiplicaes 3! adies/subtraes
Se = det 0 a soluo dada por 1 2 1 = , = , , = 2 onde o determinante da matriz A com a coluna k subtituda pelo termo independente b.
Portanto, para resolver um sistema linear n x n precisaremos efetuar o clculo de n+1 determinantes de ordem n e n divises.
A tabela a abaixo mostra o tempo gasto por um computador, que faz uma multiplicao em 10-9 segundos, para resolver um sistema n x n:
Para um sistema 25x25 o tempo de 500 milhes de anos. Comparem com a idade do universo!
n 10 15 20 25
Nesta e nas prximas aulas mergulharemos de cabea na lgebra linear computacional. Utilizaremos a SciPy.
Convenes de importao.
hora de embarcar no pacote scipy.linalg. Ele possui a lgebra linear computacional to anunciada.
Antes que voc pergunte, Surfista, v ler o resto desta discusso l no Tutorial!
lgebra linear
Apresentao Rotinas bsicas Decomposies Funes matriciais Matrizes especiais
Rotinas bsicas
Achando a inversa
Achando o determinante Calculando normas Resolvendo problemas lineares de mnimos quadrados e pseudo-inversas Inversa generalizada
Ento, indo ao Reference Guide do pacote Linear Algebra, em Basics, vamos encontrar os detalhes para usar a funo.
Mas se o clculo de determinantes invivel, na prtica, como o pacote scipy faz isto?
A utilizao da funo det( ) trivial e a resposta sua pergunta est marcada no p da pgina, Loirinha.
algo to importante e fundamental em lgebra linear computacional como respirar para a vida! O Mestre informou que ser o assunto da prxima aula.
Neste programa entramos com uma matriz A, via teclado, e em seguida chamamos a funo det(A).
Rotinas bsicas
Achando a inversa
O SciPy possibilita calcular diversas normas. Tanto normas de vetores como de matrizes.
Por enquanto, vamos examinar apenas as normas vetoriais. Veremos as normas matriciais mais adiante. Para elas precisaremos de um pouco mais de teoria.
importantssimo observar que todas aquelas cujo parmetro ord negativo no so normas.
Quando ord = inf temos a norma do mximo. Para ord = 1 temos a norma da soma e para ord = 2 temos norma euclidiana. Elas so anotadas , respectivamente. As outras so anotadas
1
, ( = ).
J provamos que
1 2 + 2 2 + + 2
|1 | + |2 | + + | |
com = 1 .
No vamos provar nenhuma das duas. Porm, se voc estiver interessado, Surfista, j sabe as palavras-chave para buscar as demonstraes.
Na referncia do SciPy encontramos os detalhes dos parmetros para usar a funo norma:
Mestre, parece que os valores numricos das normas esto tendendo ao valor da !
lim
1 .
Ela descreve o conjunto 2 + 2 + 2 1, que nossa intuio entende por uma bola (de futebol) no espao euclidiano 3 . No plano seria como um CD (dos Beatles).
1 .
1 -1 -1
1 .
1 -1 -1
Este livro o clssico dos clssicos sobre lgebra linear computacional. Vamos at reproduzir seu Sumrio.
Este outro clssico peso-pesado em lgebra linear computacional. Tambm vamos reproduzir seu Sumrio.
So livros de cabeceira para quem for fazer ps-graduao em computao cientfica, matemtica aplicada ou anlise numrica.
O contedo desses dois livros a definio mais apropriada de lgebra linear computacional.
Invista em voc.
+ ( + ) = + ,
= (). Tais funes recebem o nome especial de transformaes lineares.
Matrizes definem transformaes lineares de em atravs da multiplicao matriz x vetor. A = Uma matriz 3 x 4 define uma transformao linear 4 3 , atravs da multiplicao: 1 1 11 12 13 14 2 2 = 21 22 23 24 3 3 31 32 33 34 4
Lembrem-se que:
y
x Por exemplo, a matriz 1 0 = faz uma 0 1 reflexo no eixo-x, pois 1 0 = 0 1
O programa da prxima transparncia permitir a visualizao da ao de uma matriz M sobre um tringulo ABC.
Mostraremos alguns exemplos com diferentes matrizes M. Surfista, faa outros exemplos exploratrios.
O programa a seguir mostra a ao de uma matriz M de ordem 2 sobre um tringulo ABC, retngulo em B.
Nas prximas trs transparncias comentaremos alguns detalhes do programa feito pelo Mestre.
So detalhes tcnicos...
A funo plot( ) s funciona com arrays; no produz grficos com matrizes. Vejam:
Face ao exposto na transparncia anterior, precisamos transformar M_Triang[0] e M_Triang[1] em arrays, usando ravel( ).
A funo 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 grfico. Troque .w por +r e execute novamente para entender!
A matriz identidade I uma matriz quadrada de ordem n com 1s na diagonal e 0s fora dela.
I x x
Ix=x
O produto BA de uma matriz B por uma matriz A corresponde aplicao linear composta de A seguida por B:
A x y
B z
BA
Lembrem-se que a multiplicao de matrizes no comutativa. Na aula passada exibimos um programa que mostra que, usualmente, .
A inversa de uma matriz quadrada A de ordem n uma matriz quadrada B de ordem n tal que = =
Existem matrizes que no possuem inversa so no-inversveis. Uma matriz no possui mais que uma inversa. Alm disso, a inversa da inversa a prpria!
Entretanto, verificar se det() 0 para saber se A inversvel uma tcnica nunca utilizada em lgebra linear computacional.
Pela prpria definio, a inversa A-1 de uma matriz A , quando considerada como aplicao linear, desfaz a ao de A.
A A A-1 y
A-1
Rotinas bsicas
Achando a inversa
Pedi ao Mestre para fazer um programa parecido quele que mostra o efeito visual da ao de uma matriz num tringulo. Mas para a matriz inversa!
Surfista, descubra pela Internet o caminho das pedras para Computao Cientfica e lgebra Linear Computacional.
Python e SciPy!
http://history.siam.org/
Repetindo: BLAS e LAPACK, bibliotecas altamente otimizadas que implementam os algoritmos bsicos de lgebra Linear Computacional.
O que a Netlib:
A BLAS na www.netlib.org
Perguntas bsicas:
O que a BLAS:
A LAPACK na Wikipedia: