Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A SciPy.LinAlg

A SciPy.LinAlg

...

Paulo Bordoni

May 08, 2017
Tweet

More Decks by Paulo Bordoni

Other Decks in Education

Transcript

  1. Aulas atrás, estudamos o básico da NumPy e da MatPlotLib.

    Iniciaremos agora nosso estudo da SciPy – Scientific Python.
  2. E o que é, precisamente, Computação Científica Mestre? É o

    que você aprenderá ao longo deste curso, Loirinha. Vou começar pelo aspecto histórico!
  3. Nosso Mestre já citou Maple, Mathematica e MatLab. Como ele,

    a Wikipedia também indica Python e SciPy!
  4. O 2º que separeifoi o site da INTEL de HPC.

    HPC é High Performance Computation
  5. A SciPy é a 5ª da lista retornada pelo Google.

    E é reconhecida como uma biblioteca fundamental para computação científica! É com ela que trabalharemos Galileu. Atualíssima, veja a seguir:
  6. E agora todos os tópicos tratados na Referência, na última

    versão da SciPy: Assinalei os sub- pacotes que estudaremos.
  7. Antes de mergulharmos fundo nas matrizes, fale um pouco sobre

    Entrada/Saída Manuel. Vou listá-los, mas não entrarei em detalhes!
  8. Vou buscar com Google, Galileu! Surfista, antes disso, para chegarmos

    preparados, faça uma busca na Internet por Álgebra Linear Computacional.
  9. Não deixem de olhar as listas indicadas de software de

    análise numérica e de bibliotecas numéricas. Muita indicações importantes nesta dica!
  10. As primeiras estações da ferrovia, antes de Hogwarts, são paradas

    obrigatórias, chamadas BLAS, LAPACK e NETLIB. Temos que desembarcar para conhecê-las.
  11. Antes quero mostrar a Estação da Luz e a Júlio

    Prestes, na cidade de São Paulo. Hoje também são a sede do Museu da Língua Portuguesa e da Orquestra Sinfônica do Estado de São Paulo, OSESP.
  12. A estação Leopoldina, no Rio. Se a Princesa visse o

    descaso iria chorar! Os responsáveis públicos pelo abandono deveriam ser presos!
  13. A Estação da Central do Brasil, também no Rio. Dias

    depois do comício do Jango, veio o golpe de 64!
  14. • BLAS: Basic Linear Algebra Subprograms, • LAPACK: Linear Algebra

    Package. Repetindo: BLAS e LAPACK, bibliotecas altamente otimizadas que implementam os algoritmos básicos de Álgebra Linear Computacional.
  15. Este é o principal repositório de software científico que a

    comunidade científica mundial dispõe:
  16. Sim, Surfista. Clicando num link, somos encaminhados para a rotina

    correspondente na LAPACK. O código está em FORTRAN.
  17. Agora vamos à biblioteca do Castelo de Hogwarts. É lá

    que encontraremos o Tutorial da scipy.linalg.
  18. Marquei o motivo para usar a linalg da SciPy. Mas

    já tem linalg na NumPy. Por que repetir?
  19. A estrutura do tutorial Linear Algebra é a seguinte: Álgebra

    linear Apresentação Rotinas básicas Decomposições Funções matriciais Matrizes especiais
  20. 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
  21. Vamos começar pelos determinantes, que já vimos na aula passada!

    E indo à referencia do scipy.linalg, nas rotinas básicas, temos:
  22. A resposta à tua pergunta está ao pé da página

    Loirinha: por outro algoritmo. Mas vocês já provaram que o cálculo de determinantes é inviável, na prática. Então, como o pacote scipy faz isto?
  23. E o que é fatoração LU? Mais adiante exploraremos tudo

    o que há na Linalg sobre fatorações. Em particular sobre a fatoração LU.
  24. Respondendo à tua pergunta Loirinha, escrevemos como um produto de

    duas matrizes triangulares e : = ∙ A só tem 1’ na diagonal. Assim det = det ∙ = det ∙ det = det()
  25. Neste programa entramos com uma matriz A, via teclado, e

    em seguida chamamos a função det(A).
  26. Voltando às rotinas básicas da 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
  27. 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.
  28. 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 , ( = ).
  29. 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.
  30. 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.
  31. 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.
  32. Mestre, parece que os valores numéricos das normas estão decrescendo

    ao valor da ∞ . É verdade minha filha. Prove que para ∀ ∈ ℝ temos lim →∞ = ∞
  33. Para cada norma vetorial em ∙ : ℝ → ℝ

    podemos associar um subconjunto do próprio ℝ. Estou me referindo às bolas abertas de raio > 0 com centro num ponto ∈ ℝ ∙ , , = ∈ ℝ . . − <
  34. Para a norma euclidiana em ℝ2, é o conjunto dos

    pontos em ℝ2 satisfazendo: ∙ 2, , = = (, ) ∈ ℝ2 . . − 2 < , sendo = , o centro E como 2 = 2 + 2, temos − 2 = ( − )2 + ( − )2.
  35. Que é o conjunto dos pontos interiores à circunferência 2

    + 2 = 1, de centro na origem e raio 1. Portanto a bola unitária na ∙ 2 , com centro na origem, corresponde ao conjunto definido pelos pontos , ∈ ℝ2 cujas coordenadas satisfazem a desigualdade 2 + 2 < 1
  36. Surfista, não vá jogar bola com 1 ou ∞ .

    Você pode machucar seu pé! É, são bolas que escapam da nossa intuição euclidiana.
  37. Vamos ao tópico “Resolvendo sistemas lineares” de Rotinas básicas. 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
  38. As características particulares da matriz do sistema linear definirão nosso

    roteiro para estudar os métodos de resolução do sistema. Tipo da matriz A em Ax = b: 1. Triangular 2. Genérica 3. De banda 4. Simétrica e definida positiva (hermitiana)
  39. Recordando as definições: Quando todos os seus elementos fora da

    diagonal são nulos: ≠ ⟹ = 0 Diagonal Quando todos os elementos acima da diagonal são nulos: < ⟹ = 0 Triangular inferior Quando todos os elementos abaixo da diagonal são nulos: > ⟹ = 0 Triangular superior
  40. Exemplos: −2 0 0 0 3 0 0 0 6

    Diagonal 3x3 3 0 0 0 0 3 0 0 1 8 4 2 2 0 5 1 Triangular inferior 4x4 1 4 2 5 2 0 3 1 0 7 0 0 0 0 0 0 5 0 0 9 2 0 3 1 4 Triangular superior 5x5
  41. = 1 4 2 5 2 0 3 1 0

    7 0 0 0 0 0 0 5 0 0 9 2 0 3 1 4 det = 120 (= 1 × 3 × 5 × 2 × 4) = −3 0 0 0 −2 0 0 0 2 7 4 2 5 0 5 1 det = 0 (= −3 × 0 × 5 × 1) O determinante de uma matriz triangular é o produto dos termos da diagonal:
  42. Se A é uma matriz ordem n, então det =

    det(). Um sistema linear = possui uma única solução quando, e apenas, quando det() ≠ 0. Os dois teoremas abaixo, são fatos sobejamente conhecidos sobre sistemas lineares e determinantes. Entretanto determinantes conduzem a conclusões erradas sobre sistemas lineares. Vejam a seguir:
  43. Entretanto para = 0.01 temos det = 0.01100 = 10−200,

    um legítimo ZERO em qualquer computador! Então concluiríamos que o sistema não tem solução. 0 ⋮ 0 ⋯ 0 ⋮ ⋱ 0 0 0 0 1 2 ⋮ 100 = 1 1 ⋮ 1 A solução do sistema linear acima é, obviamente 1 = 2 = ⋯ = 100 = 1/
  44. 11 1 = 1 21 1 31 1 41 1

    +22 2 +32 2 +42 2 +33 3 +43 3 = 2 = 3 +44 4 = 4 Surfista, resolva o sisteminha 4x4 aos meus pés, cuja matriz é triangular inferior.
  45. 11 1 = 1 21 1 31 1 41 1

    +22 2 +32 2 +42 2 +33 3 +43 3 = 2 = 3 +44 4 = 4 Mestra, assumindo ≠ 0 para = 1,2,3,4, temos: 1ª eq. ⇒ 1 = 1 /11 2ª eq. ⇒ 2 = (2 − 21 1 )/22 3ª eq. ⇒ 3 = 3 − (31 1 + 32 2 ) /33 4ª eq. ⇒ 4 = 4 − (41 1 + 42 2 + 43 3 ) /44
  46. Surfista, observe no código que o número de multiplicações cresce

    de 1 a n como uma PA de razão 1. Logo, o total de multiplicações é ( + 1)/2. Um algoritmo 2 .
  47. Este programa recebe uma matriz A e um vetor b.

    Em seguida, chama solve(A,b) para resolver o sistema linear Ax = b.
  48. Uma forma de calcular a inversa de uma matriz A

    é resolvendo a equação matricial = usando solve( )
  49. Uma matriz = [ ] possui banda inferior k quando

    = 0 para − > . E possui banda superior k, quando = 0 para − > . = × × 0 0 0 × × × 0 0 × 0 0 × × 0 × × 0 × × × × × × Eis uma matriz A com banda inferior 2 (em laranja) e banda superior 1 (em verde):
  50. = × × 0 0 0 × × × 0

    0 × 0 0 × × 0 × × 0 × × × × × × = ∎ × × × × × × × × × × × × × × × × ∎ ∎ ∎ Se A é uma matriz 100x100 teríamos 10.000 elementos para armazenar. Nesse armazenamento de banda precisaremos apenas de 4x100-4 ∎ ∎ ∎ ∎ A ação para armazenar uma matriz de banda como essa é “esquecer os zeros e deixar cair”! Vejam só:
  51. = × × 0 0 0 × × × 0

    0 × 0 0 × × 0 × × 0 × × × × × × = ∎ × × × × × × × × × × × × × × × × ∎ ∎ ∎ ∎ ∎ ∎ ∎ Mestre, prefiro pensar em “deitar” as diagonais.
  52. Quando é igual à sua transposta: = . Simétrica Quando

    satisfaz: ≠ 0 ⟹ = ෍ ,=1 > 0 Definida positiva Quando sua transposta é a inversa: = −1 ⟺ = = Ortogonal Continuando a visita ao zoológico matricial:
  53. 1. + = + 2. ()= 3. = 4. (

    )= 5. = Observações: • De 1 e 2 decorre que matrizes simétricas constituem um subespaço do espaço de todas as matrizes. • Atenção: a 5. não permite concluir que a matriz produto é uma matriz simétrica. Algumas propriedades da transposição:
  54. De fato, o produto de matrizes simétricas não é uma

    matriz simétrica! E, além disso, o produto também não é comutativo. Vejam os contra-exemplos! 3 2 2 1 0 1 1 −2 = 2 −1 1 0 0 1 1 −2 3 2 2 1 = 2 1 −1 0
  55. A matriz A = 1 0 0 0 −2 0

    0 0 3 não é definida-positiva, pois se = temos: = 1 0 0 0 −2 0 0 0 3 = = −2 3 = 2 − 22 + 32 e escolhendo = 2 1 0 obtemos = 0.
  56. A matriz = 5 −1 2 −1 2 2 2

    2 3 é definida-positiva, pois para = temos: = − 2 + + 2 2 + 2 + 2, uma soma de quadrados, que só se anula para = = 0 0 0 . Surfista, confira essa afirmação da Mestra!
  57. = sen cos 0 −cos sen 0 0 0 1

    sen − cos 0 cos sen 0 0 0 1 = 1 0 0 0 1 0 0 0 1 Loirinha, agora é tua vez de conferir a afirmação da Mestra! A matriz = sen − cos 0 cos sen 0 0 0 1 é ortogonal pois :
  58. Um zoológico bem complexo: A adjunta de = [ ],

    anotada AH, é definida por = [ത ]. É a conjugada da transposta. Adjunta Quando satisfaz: = . É a correspondente de uma matriz simétrica, com elementos complexos, Hermitiana, ou auto-adjunta Quando sua adjunta é a inversa: = −1 ⟺ = = Unitária
  59. As matrizes ortogonais (e as unitárias, no caso complexo) desempenham

    um papel fundamental em Álgebra Linear Computacional. Aguardem!
  60. O exemplo de armazenamento do Tutorial da scipy.linalg. Armazena-se apenas

    a diagonal e a banda superior (ou inferior). Em vez de 36 = 6 × 6 elementos, apenas 15 = 3 × 6 − 3.
  61. Esta 1ª parte do programa recebe uma matriz A (formato

    de banda), um termo independente b e devolve a solução x usando a rotina para matrizes simétricas, positivo-definidas e de banda da scipy.linalg. O nome do programa é: sist_banda_sim_def_pos.py
  62. Esta 2ª parte apresenta a matriz A no formato padrão

    n x n e confere a solução, , verificando se, de fato, = .
  63. Uma execução do programa. Se a matriz A não for

    definida positiva, o programa acusa. Vejam a seguir.
  64. O 4º elemento da diagonal principal é o responsável por

    tornar a matriz A não positiva definida. A linalg acusa o fato! ERRO
  65. Que péssimo exemplo Mestre! Por que não incluiu um tratamento

    de erro, para evitar que seu programa pipocasse assim? Esta 2ª parte apresenta a matriz A no formato padrão n x n e confere a solução, , verificando se, de fato, = .