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

Introdução à SciPy Linalg

Introdução à SciPy Linalg

...

Paulo Bordoni

October 11, 2018
Tweet

More Decks by Paulo Bordoni

Other Decks in Education

Transcript

  1. Antes da SciPy vou mostrar como usamos a NumPy carregar

    arquivos do disco para a RAM e como salvar da RAM para o disco.
  2. Mostre-nos um código que usa as duas rotinas, Mestre Faremos

    um programa que: • recebe via teclado um vetor e uma matriz e, pequenos; • Salva no disco rígido e em arquivos distintos de nome arq_vetor e arq_matriz ; • Carrega e do disco rígido para a RAM, mas com os nomes e ; • Mostra e para comparar com e .
  3. Boa pergunta, Loirinha! Nesse caso você usaria uma das rotinas

    • savez( ) • savez_compressed( ). Confira no código a seguir: Mestre, e seu quisesse guardar o vetor e a matriz num arquivo só?
  4. O código que você pediu, Loirinha. Novamente, o código ficou

    longo porquê ela caprichou na didática!
  5. 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!
  6. Vou buscar com Google, Galileu! Surfista, antes disso, para chegarmos

    preparados, faça uma busca na Internet por Álgebra Linear Computacional.
  7. 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!
  8. As primeiras estações da ferrovia, antes de Hogwarts, são paradas

    obrigatórias, chamadas BLAS e LAPACK . Foram marcadas em verde. Temos que desembarcar para vê-las.
  9. 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.
  10. A estação Leopoldina, no Rio. Se a Princesa visse o

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

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

    Package, • www.netlib.org Repetindo: BLAS e LAPACK, bibliotecas altamente otimizadas que implementam os algoritmos básicos de Álgebra Linear Computacional. Estão na netlib.
  13. Este é o principal repositório de software científico que a

    comunidade científica mundial dispõe:
  14. Por esse motivo, ela é enorme. São 92 rotinas ao

    todo, mas vou listá-las ! A linalg é a biblioteca da scipy sobre Álgebra Linear.
  15. = 1 2 1 2 Para um vetor = 1

    2 ela é anotada 2 calculada através do teorema de Pitágoras 2 = 1 2 + 2 2 A norma euclidiana é a forma natural de calcular o tamanho de um vetor.
  16. A generalização para um vetor = 1 2 … ∈

    ℝ é óbvia: 2 = 1 2 + 2 2 + ⋯ + 2 Outras normas importantes são: • a norma da soma, anotada 1 • a norma do máximo, anotada ∞
  17. Para um vetor = 1 2 … ∈ ℝ essas

    normas são calculadas de forma bem mais simples que a 2 : 1 = 1 + 2 + ⋯ + Norma da soma ∞ = 1 , 2 , , ⋯ , Norma do máximo
  18. Além dessas três existem as , para ∈ ℕ, que

    generalizam a norma euclideana, e são calculadas como = 1 + 2 + ⋯ + Existem também as importantíssimas normas de energia, que utilizam formas quadráticas definidas através de matrizes.
  19. Para provar que todas elas são normas é preciso garantir

    as quatro condições abaixo: Uma função : → ℝ, definida num espaço vetorial é uma norma quando satisfaz as condições: a) ≥ 0, ∈ b) = 0 ⇒ = 0 , ∈ c) ∙ = ∙ , α ∈ ℝ e ∈ d) + ≤ + , , ∈
  20. Mestre, parece que os valores numéricos das normas estão decrescendo

    ao valor da ∞ . É verdade minha filha. Prove que para ∀ ∈ ℝ temos lim →∞ = ∞
  21. 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 ∈ ℝ ∙ , , = ∈ ℝ . . − <
  22. 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.
  23. 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
  24. Surfista, não vá jogar bola com 1 ou ∞ .

    Você pode machucar seu pé! É, são bolas que escapam da nossa intuição euclidiana.
  25. Como já disse, as bolas “crescem’ da ∙ 1 para

    a ∙ ∞ mas o tamanho de um vetor decresce da ∙ 1 para a ∙ ∞ . Convença-se, Surfista, que esses resultados não são contraditórios!
  26. A todo sistema linear está associada uma matriz, a matriz

    dos coeficientes do sistema, e dois vetores coluna, o termo independente e vetor das incógnitas. 11 1 + 12 2 + ⋯ 1 = 1 21 1 + 22 2 + ⋯ 2 = 2 31 1 + 32 2 + ⋯ 3 ⋯ 1 1 + 2 2 + ⋯ = ⋮ = 3 ⋯
  27. 11 1 + 12 2 + ⋯ 1 = 1

    21 1 + 22 2 + ⋯ 2 = 2 31 1 + 32 2 + ⋯ 3 ⋯ 1 1 + 2 2 + ⋯ = ⋮ = 3 ⋯ No caso do sistema acima, temos: = 11 12 ⋯ 1 21 22 ⋯ 2 ⋮ 1 ⋮ 2 ⋱ ⋯ ⋮ Matriz dos coeficientes = 1 2 ⋮ Termo independente = 1 2 ⋮ Vetor das inógnitas
  28. Vamos começar pela regra de Cramer. A regra de Cramer

    é um algoritmo para resolver sistemas de lineares que utiliza determinantes.
  29. Cramer apresentou sua fórmula para resolver sistemas lineares em 1750.

    Hoje conhecida como “a regra de Cramer” Antes disso, Cardano, no final do século XVI, trabalhou com determinantes 2x2. Leibniz usou determinantes em 1693 para resolver sistemas lineares.
  30. Portanto, para utilizar a regra de Cramer precisamos saber como

    calcular determinantes. No caso de matrizes 2x2 é imediato: Se = 11 12 21 22 então det = 11 22 − 21 12 .
  31. Se = 11 12 13 21 22 23 31 32

    33 , uma matriz 3x3, usamos recursividade, isto é, recaímos no cálculo de determinantes 2x2. Mostre o “desenvolvimento pela 1ª linha”, Mestre. Ei-lo: det = 11 det 11 − 12 det 12 + 13 det 13 onde 11 = 22 23 32 33 , 12 = 21 23 31 33 e 13 = 21 22 31 32
  32. Juro que não entendi como esses 11, 12, 13 aparecem,

    Mestre! Fácil, 1 é a matriz que sobra da matriz quando excluímos sua linha 1 e coluna j . Confira com 12: = 11 12 13 21 22 23 31 32 33 ⇒ 21 23 31 33 = 12
  33. E o sinal de −, como apareceu ? O sinal

    de cada parcela é dado por (−1)1+
  34. Conferindo, se = 11 12 13 21 22 23 31

    41 32 42 33 43 41 42 43 44 então: det = 11 det 11 − 12 det 12 + 13 det 13 − 14 det(14) Só que agora 11, 12, 13, 14 são matrizes 3x3.
  35. Ah, Galileu é o computador que fará as contas. É

    rapidinho!!! Confira a quantidade de contas que você fará, Surfista.
  36. É: 1 = 1 , 2 = 2 para ≠

    0. A regra de Cramer para o sistema 2x2 ቊ 11 1 + 12 2 = 1 21 1 + 22 2 = 2 Onde: = det 11 12 21 22 , 1 = det 1 12 2 22 , 2 = det 11 1 21 2
  37. = 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 ቊ 2 + = 3 + 3 = −1 obtemos:
  38. 1 = 1 , 2 = 2 , 3 =

    3 , ≠ 0 A regra de Cramer para resolver o sistema ቐ 11 1 + 12 2 + 12 3 = 1 21 1 + 22 2 + 23 3 = 2 31 1 + 32 2 + 33 3 = 3 é: Só que agora = det onde é a matriz dos coeficientes do sistema linear: = 11 12 13 21 22 23 31 32 33
  39. 1 = 1 12 13 2 22 23 3 32

    33 , 2 = 11 1 13 21 2 23 31 3 33 , 3 = 11 12 21 22 2 31 32 3 E quem são 1 , 2 , 3 ? São os determinantes das matrizes 1 , 2 , 3 obtidas substituindo as colunas 1, 2, 3 pelo termo independente do sistema:
  40. No braço dará muito trabalho. Mas, feito o código, no

    computador é moleza, tudo ocorrerá num milionésimo de piscar de olhos! Insisto que você calcule a quantidade de “continhas”, Surfista.
  41. 1 = 1 , 2 = 2 , 3 =

    3 , 4 = 4 , ≠ 0 Para resolver o sistema 4x4, 11 1 + 12 2 + 12 3 + 14 4 = 1 21 1 + 22 2 + 23 3 + 24 4 = 2 31 1 + 32 2 + 33 3 + 34 4 = 3 41 1 + 42 2 + 43 3 + 44 4 = 4 por Cramer, tudo se repete: Só que agora com matrizes 4x4.
  42. Vou mostrar para vocês porque o Galileu está insistindo tanto

    para que vocês contem a quantidade de operações (as continhas...).
  43. Sim. Confiram que para um determinante 2 × 2 fazemos

    2 multiplicações. E para o determinante de uma matriz 3 × 3, pela fórmula det = 11 det 11 − 12 det 12 + 13 det 13 , fazemos 6 = 3 × 2 multiplicações.
  44. Pensando na fórmula de recorrência para calcular o determinante de

    uma matriz 4 × 4 é imediato que faremos 24 = 4 × 6 multiplicações, pois serão 4 determinantes 3 × 3. = 11 11 − 12 12 + 13 13 − 14 det(14)
  45. Portanto, você fará 24 = 4 × 6 = 4

    × 3 × 2 = 4! multiplicações. Para o determinante de uma matriz de ordem , serão ! multiplicações. Claro Sherlock! Mas as contas serão realizadas pelo computador.
  46. O gráfico em vermelho, aos meus pés, é o da

    função Γ: ℝ+ → ℝ cuja restrição ao conjunto ℕ dos naturais é a função fatorial.
  47. Uma tabela dessas funções para inteiro, variando de 0 à

    30. Só para contar o número de dígitos
  48. Surfista, contei a quantidade de dígitos apenas das multiplicações para

    calcular o determinante de matrizes 20 × 20, 25 × 25, 30 × 30: Veja, são números enormes!!! 20 × 20 → 20! → 19 í 25 × 25 → 25! → 26 í 30 × 30 → 30! → 33 í
  49. Repetindo: O tempo gasto pelo Cray XK7, para calcular o

    determinante de uma matriz n x n na expansão por linhas é: n tempo 20 48,41 min. 25 7,37 séculos 30 1,076 idade univ.
  50. Vamos examinar como a SciPy permite calcular determinantes. O Galileu

    acabou de provar a inviabilidade do cálculo ! Como a scipy calcula determinantes, Mestra ?
  51. Adiantando informação, Loirinha, fatoramos como um produto de duas matrizes

    triangulares e : = ∙ . A matriz L é triangular inferior (o L é de lower) e a U triangular superior (o U é de upper). A só tem 1’ na diagonal. Assim det = det ∙ = = det det = = det = 11 22 ⋯ .
  52. Neste programa entramos com uma matriz A, via teclado, e

    em seguida chamamos a função det(A).