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

Introdução à MatPlotLib

Introdução à MatPlotLib

Paulo Bordoni

May 12, 2015
Tweet

More Decks by Paulo Bordoni

Other Decks in Education

Transcript

  1. “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.”
  2. 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...
  3. Reducionismo: estudo do mundo como uma montagem de partes físicas

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

    que mil palavras ... Escher remontou tudo, harmonicamente, certamente, questionando o Reducionismo.
  5. Escher remontou tudo, harmonicamente, quem sabe para mostrar que “o

    todo pode ser maior que a soma das partes”. Holismo ...
  6. M.C. Escher, Convex and Concave (1955), Litogravura O que você

    vê depende do seu modo de olhar, do seu ponto de vista! Olhar o todo pode permitir detectar contradições. 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.
  7. Mestre, Mestre ... Eu faço engenharia, não filosofia, nem história!

    É Surfista, este é meu tributo aos construtores de nossa civilização. Por falar nisso, aprendiz de engenheiro, traga na próxima aula além da história, uma explicação sobre a aerodinâmica das pranchas de surfe. Valendo nota!
  8. 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.
  9. Voltando ao ponto que nos interessa no momento: Descartes (1637)

    e Fermat (1636) amarraram a Geometria de Euclides à Álgebra com o conceito de sistema de coordenadas.
  10. 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.”
  11. 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.
  12. 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
  13. 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. = ( , ) = ( , )
  14. 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!
  15. Tenho muita coisa a mostrar. É só rolar a janela

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

    função plot( ) já dá para você começar, Surfista.
  17. 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).
  18. Fácil, fácil! Vou plotar 2 segmentos colados um no outro.

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

    canto superior esquerdo. Só estou vendo dois pontos Loirinha, você errou!!!
  20. 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:
  21. Construí o triângulo abaixo, com dois comandos plot( ) e

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

    Silva na hora do crediário. “Não sou esse de nome sujo”
  23. 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.
  24. 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 x k .
  25. Ah, Coleguinha, é só colocar mais pontos no vetor x!

    Mestre, não gostei! Ficou muito ruim - cheio de quinas, não é nada parecido com uma parábola. Grande Surfista! Vou fazer com mais pontos e marcá-los.
  26. Usei os 21 pontos marcados em azul. Ao todo são

    20 sub-intervalos de mesmo tamanho Δ = ( 2.0 − (−2.0))/20 = 0.2. Mestre, realmente melhorou, mas faltam os eixos x e y, o título do gráfico, etc.
  27. É o Escher em ação, Mestra! Observe que com muitos

    pontos (51), percebemos uma curva suave.
  28. 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, = .
  29. 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, ⋯ , .
  30. b = xn+1 f(x0 ) f(x1 ) f(x n )

    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!
  31. A ajuda da NumPy sobre uma função para somar os

    elementos de um vetor, a função sum( ).
  32. 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.
  33. Entrando com: 1. o intervalo de integração 2. o número

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

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

    por difusão. 6. Calculando a aproximação Trap para a integral ≅ ℎ 2 0 + +1 + 2 =1 . 5 6
  36. 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 é:
  37. Agora vou analisar, passo-a-passo, o código da parte gráfica. Tornamos

    a agradecer Mestre. Assim nossa vida ficará mais fácil.
  38. 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
  39. 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].
  40. 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.
  41. 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).
  42. 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
  43. 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
  44. Fui buscar ajuda no “site” da MatPlotLib. Escolha a aba

    pyplot e depois clique no que você procura.
  45. 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.
  46. Aproveitei o programa da Mestra para mostrar a utilização da

    função trap( ) da NumPy. Mudei também o integrando para = (2)
  47. 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)
  48. Apresento a seguir um histórico brevíssimo da álgebra desde seu

    nascimento até a matemática simbólica nos computadores...
  49. Alguns tabletes cuneiformes do Período Antigo na Babilônia (1800- 1600

    a.C.) descrevem soluções para equações algébricas do 1º e 2º graus. Mas eles já conheciam a Álgebra que aprendemos no 2º grau?
  50. Não Loirinha, apresentavam receitas descrevendo como resolver problemas. Este é

    o famoso tablete YBC 7289 da Yale Babylonian Collection.
  51. Tradução latina 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
  52. Tradução para o latim de 1621, por Claude Gaspard Bachet

    de Méziriac Uma equação diofantina é uma equação polinomial a coeficientes inteiros. Resolvê-la significa buscar (apenas) as soluções inteiras. As famosas equações diofantinas!
  53. “O simbolismo que Diofanto introduziu pela primeira vez mostrou-se, indubitavelmente

    , uma forma breve, e de compreensão imediata, de expressar uma equação ... Como empregou também uma abreviação para a palavra "iguais", Diofanto deu um passo fundamental na transformação da álgebra verbal na álgebra simbólica.” Kurt Vogel, em Diophantus of Alexandria, em Complete Dictionary of Scientific Biography, Encyclopedia.com, 2008, escreveu:
  54. Loirinha, à pg. 83 deste seu livro, Ian Stewart mostra

    uma tabela comparando a notação de Diofanto com a atual. Não deixe de ver!
  55. Abu Abdullah Muhammad ibn Musa al-Khwarizmi Nasceu: 780 dC, Khwarizm

    Morreu: 850 dC, Bagdá E no cap. 4, você vai descobrir muito mais. Por exemplo que Mohammed ibn Musa al- Khwarizmi, ~820 d.C., no livro Hisab al-jabr wa’l muqabala, dá regras gerais para resolver todas as equações lineares e quadráticas, mas sem usar símbolos.
  56. Circunferência Elipse Parábola Hipérbole No mesmo cap. 4, você verá

    que os gregos usaram seções cônicas para resolver algumas equações cúbicas.
  57. Circunferência Elipse Parábola Hipérbole E que, Omar Khayyan, em seu

    livro Sobre as provas dos problemas de Álgebra e Muqabala, ~1075 dC, classificou as cúbicas em 14 tipos e mostrou como resolvê-las usando seções cônicas, novamente, sem usar símbolos. Omar Kayyam Nasceu: 18/05/1048 Morreu: 4/12/1131
  58. Ainda no cap. 4 do livro de Ian Stewart: “Os

    matemáticos da renascença italiana fizeram um dos maiores avanços na álgebra...” Em 1535 Tartaglia ficou famoso após vencer uma disputa, sobre soluções de equações cúbicas, algo em voga na Itália, na época, e muito lucrativo. Niccolo Fontana, Tartaglia Nasceu: 1499, Bréscia Morreu: 1557, Veneza
  59. Após essa disputa, Cardano pediu a Tartaglia para revelar seus

    métodos, que aceitou com a condição de não torná-los públicos. Cardano publicou-os em seu livro e foi acusado de plágio por Tartaglia ... Leia o resto da história no livro do Ian Stewart!
  60. Foi na Renascença que a notação simbólica ganhou força. François

    Viète, foi o 1ºdos grandes algebristas a usar símbolos – mas sua notação diferia consideravelmente da atual.
  61. Euclides Diofanto al-Kowarizmi Viète Mestres, vejam o que achei na

    rede, sob o título: “Matemáticos que ajudaram a desenvolver a álgebra”
  62. À pg. 84 do livro do Stewart descobriremos que o

    sinal de “=“ foi inventado por Robert Recorde e apresentado em 1557 em seu livro A pedra de amolar do espírito. A diferença de hoje é que ele usava duas linhas paralelas bem longas: E também que Viete usou a palavra “aequalis” e depois o símbolo ~. Já Descartes usava o símbolo ∝.
  63. Sim, ele reporta também quando começaram a ser usadas letras

    como símbolos para representar constantes e incógnitas. Surfistas e Loirinhas, não deixem de ler este livro do Stewart!
  64. Mestre, imploro por um pouquinho de computação! Surfista seu caráter

    prático é desanimador, este é o contexto histórico do nascimento da álgebra. Faz parte de sua formação!
  65. A SymPy é uma biblioteca de computação algébrica em Python.

    Ok, impaciente! Vamos chamar a Spyder para colocar computação simbólica na jogada.
  66. 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.
  67. Pois é, são armadilhas de percepção. Esta revista mostra algumas.

    Escher, desenhou muitas outras. Elas envolvem o famoso “tribar” de Sir Roger Penrose.
  68. 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!
  69. “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.)
  70. 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”
  71. Nasceu em o8/o8/1932, na Inglaterra Sir, a consciência é mesmo

    o resultado de interações quânticas dentro dos neurônios?
  72. 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
  73. A edição de 1670 da Aritmética, pelo filho de Fermat,

    com uma chamando a atenção sobre a observação do pai.
  74. 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.