Slide 1

Slide 1 text

Á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).

Slide 95

Slide 95 text

Tchau, até a próxima aula!