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.