Slide 1

Slide 1 text

Introdução à MatPlotLib Prof. Paulo R. G. Bordoni UFRJ

Slide 2

Slide 2 text

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.

Slide 3

Slide 3 text

“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.”

Slide 4

Slide 4 text

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...

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Reducionismo: estudo do mundo como uma montagem de partes físicas que podem ser divididas e analisadas separadamente e recompostas.

Slide 7

Slide 7 text

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.

Slide 8

Slide 8 text

Escher remontou tudo, harmonicamente, quem sabe para mostrar que “o todo pode ser maior que a soma das partes”. Holismo ...

Slide 9

Slide 9 text

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.

Slide 10

Slide 10 text

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.

Slide 11

Slide 11 text

Mas Escher vai mais além. A próxima transparência ensina que o que você vê depende de como você olha as coisas.

Slide 12

Slide 12 text

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.

Slide 13

Slide 13 text

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.

Slide 14

Slide 14 text

Pensem nas imagens de Escher quando virem estes destaques:

Slide 15

Slide 15 text

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.

Slide 16

Slide 16 text

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.

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

Pierre Fermat ...

Slide 19

Slide 19 text

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.”

Slide 20

Slide 20 text

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.

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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. = ( , ) = ( , )

Slide 23

Slide 23 text

Surfista impaciente, vou chamar o Spyder para colocar computação gráfica na jogada. Mestre, esqueceu meu pedido?! ...

Slide 24

Slide 24 text

Após a abertura a Spyder apresenta uma sugestão. Vamos segui-la!

Slide 25

Slide 25 text

Digitando ‘scientific’ recebemos as informações:

Slide 26

Slide 26 text

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!

Slide 27

Slide 27 text

Isto mesmo Manual, ajude-nos! Vai Manoel, socorra a Loirinha!

Slide 28

Slide 28 text

Eis a matplotlib, do início ao fim... Vamos à sua próxima pergunta, oh Blonde!

Slide 29

Slide 29 text

Esta é a descrição, da Pyplot, Loirinha!

Slide 30

Slide 30 text

Agora veja a pylab A PyLab é tipo MatLab

Slide 31

Slide 31 text

Os detalhes!

Slide 32

Slide 32 text

Tenho muita coisa a mostrar. É só rolar a janela da “Consola” para baixo! Manoel, quero programar!

Slide 33

Slide 33 text

Sim Surfista, vamos começar pela função mais utilizada, a plot( ).

Slide 34

Slide 34 text

Apenas, e tão somente, com o início do help da função plot( ) já dá para você começar, Surfista.

Slide 35

Slide 35 text

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).

Slide 36

Slide 36 text

Fácil, fácil! Vou plotar 2 segmentos colados um no outro. O comando show( ) é para mostrar a figura.

Slide 37

Slide 37 text

Agora veja, Surfista, se eu utilizar ‘bo’, só aparecem os 3 pontos.

Slide 38

Slide 38 text

Apressadinho, olhe com atenção! O ponto (2.0, 3.2) está no canto superior esquerdo. Só estou vendo dois pontos Loirinha, você errou!!!

Slide 39

Slide 39 text

Jovens não briguem! Basta clicar e arrastar!

Slide 40

Slide 40 text

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:

Slide 41

Slide 41 text

Construí o triângulo abaixo, com dois comandos plot( ) e mais alguns comandos de “embelezamento”. Vejam o código:

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

O CPF resolve o problema de identificação dos José da Silva na hora do crediário. “Não sou esse de nome sujo”

Slide 44

Slide 44 text

Loirinha, passarei agora a mostrar como a MatPlotLib traça gráficos de funções.

Slide 45

Slide 45 text

Sim Mestre, como faremos para traçar gráficos de funções com a MatPlotLib? Até que enfim a prática!

Slide 46

Slide 46 text

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.

Slide 47

Slide 47 text

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 .

Slide 48

Slide 48 text

Vejam, com o código acima geramos uma tabela e um gráfico da função ↦ = 2.

Slide 49

Slide 49 text

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!

Slide 50

Slide 50 text

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.

Slide 51

Slide 51 text

Pois é Loirinha, temos diversas opções para marcadores e estilos de linhas.

Slide 52

Slide 52 text

Temos também a possibilidade de escolher diversas cores.

Slide 53

Slide 53 text

Aí está Loirinha, conforme você pediu. Acompanhe no código as minhas explicações.

Slide 54

Slide 54 text

É o Escher em ação, Mestra! Observe que com muitos pontos (51), percebemos uma curva suave.

Slide 55

Slide 55 text

Como colocar uma legenda:

Slide 56

Slide 56 text

Como colocar um título.

Slide 57

Slide 57 text

Como acrescentar os eixos x e y.

Slide 58

Slide 58 text

Como nomear os eixos.

Slide 59

Slide 59 text

Como acrescentar uma grade.

Slide 60

Slide 60 text

Como dimensionar a área de desenho.

Slide 61

Slide 61 text

Mais informações de como colocar o eixo-x:

Slide 62

Slide 62 text

Detalhes sobre a colocação da legenda:

Slide 63

Slide 63 text

Mais informações sobre a legenda. Surfista e Loirinha, procurem vocês o resto das informações!

Slide 64

Slide 64 text

Loirinhas e Surfistas: Este é um bom tutorial para obter mais dicas sobre MatPlotLib.

Slide 65

Slide 65 text

Vamos fazer um pouco de Cálculo Numérico: construir a regra trapezoidal para aproximar a integral definida.

Slide 66

Slide 66 text

Lembrem-se, a área de um trapézio é dada por: = (+)∗ℎ 2 . h

Slide 67

Slide 67 text

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, ׬ = .

Slide 68

Slide 68 text

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, ⋯ , .

Slide 69

Slide 69 text

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!

Slide 70

Slide 70 text

A ajuda da NumPy sobre uma função para somar os elementos de um vetor, a função sum( ).

Slide 71

Slide 71 text

Os detalhes da função sum( ).

Slide 72

Slide 72 text

O retorno da função sum( ).

Slide 73

Slide 73 text

Vou mostrar primeiro os resultados do programa. Tanto os numéricos como o gráfico.

Slide 74

Slide 74 text

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.

Slide 75

Slide 75 text

Entrando com: 1. o intervalo de integração 2. o número de subintervalos para a regra trapezoidal. 1 2

Slide 76

Slide 76 text

3. Definindo a função () a integrar. 4. Criando a partição do intervalo , e pegando o passo h. 3 4

Slide 77

Slide 77 text

5. Calculando os valores = ( ) para ∈ , por difusão. 6. Calculando a aproximação Trap para a integral ׬ ≅ ℎ 2 0 + +1 + 2 σ =1 . 5 6

Slide 78

Slide 78 text

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 ׬ é:

Slide 79

Slide 79 text

Agora vou analisar, passo-a-passo, o código da parte gráfica. Tornamos a agradecer Mestre. Assim nossa vida ficará mais fácil.

Slide 80

Slide 80 text

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

Slide 81

Slide 81 text

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].

Slide 82

Slide 82 text

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.

Slide 83

Slide 83 text

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).

Slide 84

Slide 84 text

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

Slide 85

Slide 85 text

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

Slide 86

Slide 86 text

Fui buscar ajuda no “site” da MatPlotLib. Escolha a aba pyplot e depois clique no que você procura.

Slide 87

Slide 87 text

Aí estão as explicações sobre fill_betwen( ).

Slide 88

Slide 88 text

Lembrem-se, para a > 0, න 1 = ln − ln()

Slide 89

Slide 89 text

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.

Slide 90

Slide 90 text

Mestra, vejo uma função trapz( ) no help!

Slide 91

Slide 91 text

A ajuda da NumPy sobre a função trapz( ):

Slide 92

Slide 92 text

Aproveitei o programa da Mestra para mostrar a utilização da função trap( ) da NumPy. Mudei também o integrando para = (2)

Slide 93

Slide 93 text

Agora só mudei os limites de integração.

Slide 94

Slide 94 text

Usando a fill_between( ) para delimitar a área entre duas funções f(t) e g(t)

Slide 95

Slide 95 text

Usando a fill_between( ) para delimitar a área entre a f(t) - g(t) e o eixo-x.

Slide 96

Slide 96 text

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)

Slide 97

Slide 97 text

Tchau, até a próxima aula!

Slide 98

Slide 98 text

A matemática é platônica ou aristoteleana? Que armadilhas ela nos apresenta?

Slide 99

Slide 99 text

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.

Slide 100

Slide 100 text

Pois é, são armadilhas de percepção. Esta revista mostra algumas. Escher, desenhou muitas outras. Elas envolvem o famoso “tribar” de Sir Roger Penrose.

Slide 101

Slide 101 text

O “tribar” é uma criação do pensamento para confundir a percepção Sir Roger Penrose?

Slide 102

Slide 102 text

M.C. Escher, Waterfall (1961), Litogravura Descubram os tribar! E as torres: mesma altura mas quantos andares?

Slide 103

Slide 103 text

M.C. Escher, Belvedere (1958), Litogravura Descubram os tribar. O quê o homem sentado no banco segura?

Slide 104

Slide 104 text

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!

Slide 105

Slide 105 text

“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.)

Slide 106

Slide 106 text

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”

Slide 107

Slide 107 text

Nasceu em o8/o8/1932, na Inglaterra Sir, a consciência é mesmo o resultado de interações quânticas dentro dos neurônios?

Slide 108

Slide 108 text

Pierre Fermat é famoso também pelo “Último Teorema de Fermat”

Slide 109

Slide 109 text

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

Slide 110

Slide 110 text

A edição de 1670 da Aritmética, pelo filho de Fermat, com uma chamando a atenção sobre a observação do pai.

Slide 111

Slide 111 text

O Último Teorema de Fermat, foi provado por Andrew Wiles,358 anos depois que foi conjecturado.

Slide 112

Slide 112 text

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.

Slide 113

Slide 113 text

Tchau, mesmo!