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

Introdução à MatPlotLib

Paulo Bordoni
September 13, 2016

Introdução à MatPlotLib

Veja esta apresentação em www.bordoni.info.

Paulo Bordoni

September 13, 2016
Tweet

More Decks by Paulo Bordoni

Other Decks in Education

Transcript

  1. A MatPlotLib será nossa ferramenta para construir gráficos de funções.

    Mas, antes de apresentá-la reavivaremos a disputa Platão x Aristóteles.
  2. “A criação de Adão” Afresco pintado no teto da Capela

    Sistina por Michelangelo Buonarroti, entorno de 1511. Vou começar pelo dito popular: “Uma imagem vale mais que mil palavras.”
  3. 1637 René Descartes - Francês Nasceu 31/03/1596 Morreu 11/02/1650 A

    formalização do método científico, um século e um quarto de depois...
  4. Reducionismo: estudo do mundo como uma montagem de partes físicas

    que podem ser divididas e analisadas separadamente e recompostas.
  5. M.C. Escher, Relativity (1953), Litogravura Uma imagem vale muito mais

    que mil palavras ... Escher dividiu e depois remontou tudo, harmonicamente, certamente questionando o Reducionismo.
  6. Escher remontou tudo, harmonicamente, quem sabe para mostrar que “o

    todo pode ser maior que a soma das partes”. Holismo ...
  7. Descartes é do mundo das ideias. Onde entra a crítica

    de Escher? Imagens e gráficos são entidades criadas pela nossa percepção euclideana.
  8. Mestre, Mestre ... Eu faço engenharia, não filosofia, nem história!

    Pois é Surfista, Escher usa nossa percepção visual para desconstruir nossa confiança na percepção visual.
  9. Mas Escher vai mais além. A próxima transparência ensina que

    o que você vê depende de como você olha as coisas.
  10. M.C. Escher, Convex and Concave (1955), Litogravura Experimente olhar assim

    ↘, como a mulher descendo com a cesta - canto esquerdo superior. Depois, olhe assim ↖, como o operário subindo a escada - canto direito inferior.
  11. Pode ser muito pior: “O que você vê depende de

    como te mostram as coisas” É ou não é, Escher? Olhar o todo permite detectar contradições; use a Internet criteriosamente para buscar mais informações! Melhore sua formação ética e política.
  12. Surfista, veja mais sobre armadilhas da percepção ao final deste

    conjunto de transparências. Depois volte a refletir sobre a disputa Platão x Aristóteles.
  13. Voltando ao ponto que nos interessa no momento: Descartes (1637)

    e Fermat (1636) amarraram a Geometria de Euclides à Álgebra através do conceito de sistema de coordenadas.
  14. Publicou 1º, 1684/1686 Descobriu antes, 1665/1666 Não deixem de ver

    no Youtube: The Calculus Controversy. Em particular Newton e Leibniz, criaram o Cálculo Infinitesimal (a matemática do contínuo) cerca de 50 anos depois Descartes e Fermat parirem a Geometria Analítica. Aliás é de Newton a frase: “Se enxerguei mais longe é porque estava no ombro de gigantes.”
  15. x y = (, ) x z y = (,

    , ) A algebrização da geometria decorre da possibilidade identificar pontos, tanto do plano euclidiano ℝ2, como do espaço euclidiano ℝ3, a pares , e ternas (, , ) de números.
  16. A partir dela, da geometria analítica, os matemáticos passaram a

    poder descrever entes geométricos como segmentos, retas, planos, triângulos, seções cônicas (e outros lugares geométricos), através da álgebra: com equações e inequações. Circunferência Elipse Parábola Hipérbole 2 + 2 = 1 2 = 4 2 2 + 2 2 = 1 2 2 − 2 2 = 1
  17. A utilização: • do teorema de Pitágoras permite calcular distância

    entre pontos. • da trigonometria possibilita obter o ângulo entre duas retas. • da regra de Cramer permite obter o ponto de interseção entre duas retas. = ( , ) = ( , )
  18. Ihh Mestra! Agora tenho três perguntas: • Afinal, o que

    é Matplotlib? • E Pyplot? • E Pylab? Minha filha, você deve perguntar ao Manoel, não a mim e nem ao Mestre!
  19. Tenho muita coisa a mostrar. É só rolar a janela

    da “Consola” para baixo! Manoel, quero programar!
  20. Apenas, e tão somente, com o início do help da

    função plot( ) já dá para você começar, Surfista.
  21. Lista das coordenadas x Lista das coordenadas y Manoel, plotei

    um segmento com extremidades nos pontos A = (2.0, 1.4) e B = (3.4, 2.8).
  22. Fácil, fácil! Vou plotar 2 segmentos colados um no outro.

    O comando show( ) é para mostrar a figura.
  23. Apressadinho, olhe com atenção! O ponto (2.0, 3.2) está no

    canto superior esquerdo. Só estou vendo dois pontos Loirinha, você errou!!!
  24. 1. Cliquem na “cruz” e desloquem o mouse para a

    área gráfica (a branca); 2. O ponteiro do mouse mudará de “pato” para “ganso”; 3. Clicando como botão da esquerda do mouse, vocês arrastam o gráfico; 4. Clicando como botão da direita do mouse, vocês “dão zoom” no gráfico. Repetindo:
  25. Construí o triângulo abaixo, com dois comandos plot( ) e

    mais alguns comandos de “embelezamento”. Vejam o código:
  26. O CPF resolve o problema de identificação dos José da

    Silva na hora do crediário. “Não sou esse de nome sujo”
  27. Sim Mestre, como faremos para traçar gráficos de funções com

    a MatPlotLib? Até que enfim a prática!
  28. Ora, simplesmente ligamos os pontos 0 , 0 , 1

    , 1 , ⋯ , ( , ), com segmentos de reta, sendo = ( ). O nome técnico da matemática para isto é interpolação linear por partes! Interpolação é um tópico importante de nosso curso.
  29. Depois usamos a difusão para calcular os valores = (

    ), e passamos esse par de vetores para a função plot( ). Vejam na próxima transparência. Operacionalmente, escolhemos o domínio [, ] para construir o gráfico da função f e usamos a vetorização com a linspace( ) para gerar as coordenadas .
  30. Mestre, não gostei! Ficou muito ruim - uma parábola cheia

    de quinas. Grande Surfista! Vou fazer com mais pontos e marcá-los. Ah, Coleguinha, é só colocar mais pontos no vetor X!
  31. Mestre, o aspecto da parábola melhorou, mas faltam os eixos

    x e y, o título do gráfico, etc. Retirei a tabela, e usei 21 pontos, marcados em azul. São 20 sub- intervalos de mesmo tamanho Δ = ( 2.0 − (−2.0))/20 = 0.2.
  32. É o Escher em ação, Mestra! Observe que com muitos

    pontos (51), percebemos uma curva suave.
  33. Vamos fazer um pouco de Cálculo Numérico: construir a regra

    trapezoidal para aproximar a integral definida.
  34. a b f(a) f(b) Para uma função linear (cujo gráfico

    é uma reta), temos ATrap = f a +f b ∗(b−a) 2 . Naturalmente, ׬ = .
  35. b = xn+1 f(x0 ) f(x1 ) f(xn ) f(xn+1

    ) xn a = x0 x1 x2 T0 T1 Tn-1 Tn Podemos aproximar a ׬ somando as áreas dos trapézios, como na figura abaixo: න ≅ 0 + 1 + ⋯ + −1 + Confiram, que fazendo a continha obtemos: න ≅ ℎ 2 0 + +1 + 2 ෍ =1 ( ) onde ℎ = +1 − , para = 0, 1, ⋯ , .
  36. b = xn+1 f(x0 ) f(x1 ) f(xn ) f(xn+1

    ) xn a = x0 x1 x2 T0 T1 Tn-1 Tn Farei um programa para calcular uma aproximação, via regra trapezoidal composta, para a integral definida de uma função usando a NumPy. Quero sua ajuda Manuel!
  37. A ajuda da NumPy sobre uma função para somar os

    elementos de um vetor, a função sum( ).
  38. Primeiramente, vou analisar, passo-a-passo, o código dos cálculos numéricos. Ótimo

    Mestre, assim ficará mais fácil de acompanhar e entender.
  39. Entrando com: 1. o intervalo de integração 2. o número

    de subintervalos para a regra trapezoidal. 1 2
  40. 3. Definindo a função () a integrar. 4. Criando a

    partição do intervalo , e pegando o passo h. 3 4
  41. 5. Calculando os valores = ( ) para ∈ ,

    por difusão. 6. Calculando a aproximação Trap para a integral ׬ ≅ ℎ 2 0 + +1 + 2 σ =1 . 5 6
  42. Dados de entrada (input): 1. O intervalo [, ] de

    integração. 2. O tamanho N+1 da partição [, ]. 3. A função () a integrar. Cálculos efetuados: 4. Geração da partição [, ] (usando a função linspace( ) da NumPy geramos uma partição uniforme, obtendo o vetor X e o passo h). 5. Cálculo dos valores = , ∈ (usando vetorização/difusão, obtendo o vetor Y1). 6. Cálculo da soma ℎ 2 0 + +1 + 2 σ =1 (usando a função sum( ) da NumPy) das áreas dos trapézios. Resultados exibidos: 7. A aproximação Trap para a integral ׬ . 8. O valor exato da integral, dado por ln − ln(). Portanto o algoritmo construído para calcular uma aproximação Trap para a integral ׬ é:
  43. Agora vou analisar, passo-a-passo, o código da parte gráfica. Tornamos

    a agradecer Mestre. Assim nossa vida ficará mais fácil.
  44. 1. Começamos gerando um vetor Y2 como o vetor X

    (e o Y1) com todas as componentes nulas. 2. Depois calculamos uma folga f_h de 5% do tamanho do intervalo [a,b]. 4. usando a função sum() 1 2 f_h f_h
  45. 4. usando a função sum() 3 4 f_v f_v 3.

    Calculamos os valores máximo - M e mínimo - m, do vetor Y1 (usando as funções amax( ) e amin( ) da NumPy). 4. Depois calculamos uma folga f_v de 5% do tamanho do intervalo [m,M].
  46. 4. usando a função sum() 5 6 5. Geramos o

    gráfico (em vermelho) da função f (usando a função plot( ) da MatPlotLib, com o label f(t), conforme já vimos). 6. Pintamos de amarelo a região entre a curva f e o eixo-x, do início ao fim do intervalo (usando a função fill_betwen( ) da MatPlotLib). Veja mais sobre a fill_betwen a seguir.
  47. 4. usando a função sum() 7 8 7. Desenhamos os

    segmentos verticais tracejados e em preto pelos pontos a e b, até a curva f (usando a função plot( ) da MatPlotLib, já vista). 8. Escrevemos o título, posicionamos a legenda e nomeamos os eixos (usando as funções correspondentes da MatPlotLib, já vistas).
  48. 4. usando a função sum() 9 9. Posicionamos e desenhamos

    os eixos x e y(usando as funções correspondentes da MatPlotLib, já vistas). 10. Acrescentamos uma grade ao gráfico(usando a função grid() da MatPlotLib, já vista). 9 10
  49. 4. usando a função sum() 11 11. Calculamos os extremos

    A, B e Ym, YM da região para desenhar o gráfico (para dar um aspecto visual agradável). 12. Desenhamos a região que contém o gráfico. 12 A Ym B YM
  50. Fui buscar ajuda no “site” da MatPlotLib. Escolha a aba

    pyplot e depois clique no que você procura.
  51. Executamos o programa para N = 100 e N =

    200. Uma forma de conferir a precisão obtida, sem conhecer a expressão algébrica da integral.
  52. Aproveitei o programa da Mestra para mostrar a utilização da

    função trap( ) da NumPy. Mudei também o integrando para = (2)
  53. Lembrem-se o operador de integração é linear, assim a integral

    da soma é a soma das integrais: න − = න − න 2ª figura (em ouro) 1ª figura (em canário)
  54. Ilusão induzida pelo claro/escuro . http://www2.uol.com.br/vivermente/ multimidia/galeria_de_ilusoes.html Comece olhando pelo

    balcão superior. Depois desça ao pátio pela corda. Em seguida, suba pela escada.
  55. Pois é, são armadilhas de percepção. Esta revista mostra algumas.

    Escher, desenhou muitas outras. Elas envolvem o famoso “tribar” de Sir Roger Penrose.
  56. Mauritius Cornelius Escher, holandês. Nasceu em 17/06/1898 Morreu em 27/03/1972

    Este é o artista genial que construiu as litogravuras que mostramos. Surfista, procure na internet para ver muito mais!
  57. “Cogito, ergo sum” The Discourse on Method is best known

    as the source of the famous quotation "Je pense, donc je suis" ("I think, therefore I am"), which occurs in Part IV of the work. (The similar statement in Latin, Cogito ergo sum, is found in §7 of Principles of Philosophy.)
  58. Sigmund Freud Nasceu 06/05/1856 Morreu 23/09/1939 "The great question that

    has never been answered, and which I have not yet been able to answer, despite my thirty years of research into the feminine soul, is 'What does a woman want?'" From Sigmund Freud: Life and Work by Ernest Jones O criador da Psicanálise. Aprendi nesse divã que “sinto, logo sou”
  59. Nasceu em o8/o8/1932, na Inglaterra Sir, a consciência é mesmo

    o resultado de interações quânticas dentro dos neurônios?
  60. Tradução para o latin de 1575, por Wilhelm Xylander. Diofanto

    de Alexandria foi, talvez, o primeiro matemático a usar símbolos para incógnitas, em sua Aritmética, ~250 dC. Ele é considerado um dos pais da álgebra. Tradução para o latin de 1621, por Bachet de Méziriac
  61. A edição de 1670 da Aritmética, pelo filho de Fermat,

    com uma chamando a atenção sobre a observação do pai.
  62. Os dois artigos foram aceitos e publicados como na totalidade

    na edição de maio de 1995 do Annals of Mathematics. Estas publicações estabeleceram o teorema de modularidade para curvas elípticas semi-estáveis, o último passo para provar o teorema. Com base na obra de Ken Ribet, Andrew Wiles conseguiu provar o suficiente do teorema de modularidade para provar o Último Teorema de Fermat, com a ajuda de Richard Taylor. Esta realização de Wiles foi noticiado amplamente na imprensa popular, e foi popularizada em livros e programas de televisão.