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

Introdução à SciPy Linalg

Introdução à SciPy Linalg

Paulo Bordoni

May 30, 2019
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. A norma euclidiana de um vetor: = 1 2 …

    ∈ ℝ é: 2 = 1 2 + 2 2 + ⋯ + 2 Outras normas importantes são: • a norma da soma, anotada 1 • a norma do máximo, anotada ∞
  16. 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
  17. 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.
  18. Mestre, parece que os valores numéricos das normas estão decrescendo

    ao valor da ∞ . É verdade minha filha. Prove que para ∀ ∈ ℝ temos lim →∞ = ∞
  19. Já vimos que para cada norma vetorial ∙ : ℝ

    → ℝ podemos associar um subconjunto do próprio ℝ. Estou me referindo às bolas abertas de raio > 0 com centro num ponto ∈ ℝ ∙ , , = ∈ ℝ . . − <
  20. Surfista, não vá jogar bola com 1 ou ∞ .

    Você pode machucar seu pé! É, são bolas que escapam da nossa intuição euclidiana.
  21. 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!
  22. 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 ⋯
  23. 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
  24. Vamos começar pela regra de Cramer. A regra de Cramer

    é um algoritmo para resolver sistemas de lineares que utiliza determinantes.
  25. 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.
  26. 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 .
  27. 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
  28. 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
  29. E o sinal de −, como apareceu ? O sinal

    de cada parcela é dado por (−1)1+
  30. 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.
  31. Ah, Galileu é o computador que fará as contas. É

    rapidinho!!! Confira a quantidade de contas que você fará, Surfista.
  32. É: 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
  33. = 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:
  34. 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
  35. 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:
  36. 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.
  37. 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.
  38. Vou mostrar para vocês porque o Galileu está insistindo tanto

    para que vocês contem a quantidade de operações (as continhas...).
  39. 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.
  40. 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)
  41. 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.
  42. O gráfico em vermelho, aos meus pés, é o da

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

    30. Só para contar o número de dígitos
  44. 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 í
  45. 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.
  46. Vamos examinar como a SciPy permite calcular determinantes. O Galileu

    acabou de provar a inviabilidade do cálculo ! Como a scipy calcula determinantes, Mestra ?
  47. 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 ⋯ .
  48. Neste programa entramos com uma matriz A, via teclado, e

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