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

Mais gráficos e a SymPy

Mais gráficos e a SymPy

Volto à NumPy para rever as funções básicas do Cálculo, como construir gráficos de funções definidas por partes e de funções descontínuas. Faço um passeio pelo site da MatPlotLib, visitando escalas logarítmicas, coordenadas polares. Ensino como plotar curvas no plano, como calcular o comprimento de arco. Depois mostro rapidamente o pacote SymPy de matemática simbólica em Python. Fecho apontando para o pacote MpMath de múltipla precisão.

Paulo Bordoni

April 08, 2014
Tweet

More Decks by Paulo Bordoni

Other Decks in Education

Transcript

  1. Surfista, estamos assumindo todo o conhecimento adquirido no 2º grau

    e em Cálculo I sobre as funções elementares. Claro Mestre, senão ia ficar muito chato! Manuel, aponte aí no Help da Numpy, onde achamos as funções matemáticas elementares
  2. As funções matemáticas elementares estão em “Routines” na Referência da

    Numpy. Clique em “Mathematical functions”, Surfista. Elas estão classificadas em diversos tópicos. Vou indicar a lista completa.
  3. Mas, praticamente todas, essas funções já estão na biblioteca math

    de Python. Por quê são duplicadas em Numpy? Porque em Numpy acrescentou à elas a vetorização e a difusão. Agora elas podem receber arrays como argumentos, etc.
  4. Fiz este programa para mostrar o gráfico das funções seno

    e cosseno e uma combinação linear delas.
  5. Fiz este programa, que traça o gráfico da função exonencial,

    do logaritmo neperiano e da composta. Exclui x = 0, pois ln(0) não está definido.
  6. Como a exponencial é a inversa da função logaritmo neperiano

    a composta é a identidade y = x Notem que y = x, faz ângulo de 45º com o eixo-x. Isto não aparece visualmente devido às escalas dos eixos.
  7. Mestre, tem como usar a mesma escala nos dois eixos?

    Muito fácil, Filhota. Veja meu programa.
  8. Então Loirinha, vou fazer um programa parecido, com as funções

    elevar ao quadrado extrair a raiz quadrada.
  9. Então com = e = 2, e teremos = 2

    = . Aqui está o help da raiz quadrada (square root).
  10. Vejam, uma é a inversa da outra. Observem como os

    gráficos da composta e de y = x se superpõe. Só fiz para x > 0 pq. não está definida para x < 0. Só que você está calculando 2 que está definida para todo ∈ ℝ.
  11. Além disso, Surfista, 2 = , isto é, NÃO é

    a inversa de 2. Isto só é verdadeiro para ≥ 0.
  12. Uma forma mais simples de trabalhar com = é usar

    a função absolute( ) do Numpy.
  13. Mestre, uma outra definição para |x| é: = ≥ 0

    − < 0 Como posso definir funções desse tipo, com expressões diferentes em cada pedaço do domínio? A Numpy fornece a função piecewise( ) para esses casos. Cada pedaço do domínio é selecionado a partir de uma condição.
  14. Eis o help para a piecewise( ). São duas listas

    L e F de mesmo tamanho. A cada condição lógica L[k] da lista L corresponde uma função F[k] da lista F.
  15. No programa da próxima página definiremos duas funções f e

    g. A partir delas, usando a piecewise( ) e um valor , satisfazendo < < , construiremos o gráfico abaixo, no intervalo [, ], da função ℎ = ≤ > . Escolhemos = −1, = 2, = 1. As funções f e g estão definidas no código por = = 2 − 2
  16. É imperioso observar que, na piecewise, a função g é

    avaliada no vetor X deslocado para a direita de d-a.
  17. O mesmo problema, mas agora para d = 0. Nesse

    caso a função h(x) é descontínua em x = 0 Mas então essa retinha vermelha, quase vertical, perto do eixo-y, não poderia ser desenhada!
  18. Sim Loirinha! Isto acontece porque a Matplolib traça seus gráficos

    usando interpolação linear por partes. É mesmo Mestre, esse segmento quase na vertical liga dois pontos consecutivos do gráfico!
  19. E a diferença − () sendo grande. Mas não quero

    te namorar, seu machista! Quem diria, além de linda, é inteligente! Um par (, ) antes de d com = () e outro par (, ) depois de d, com = ().
  20. A forma de resolver esse problema é inacreditavelmente simples Loirinha.

    Este é o gráfico da função (descontínua) definida por: = 2 − 0.5 < ≤ 0.5 − 2 0.5 < < 3.0
  21. A Numpy fornece uma ajuda para nós. É a função

    nonzero( ). Vejam na próxima transparência. Bem, antes disso, precisamos saber excluir = 0 do domínio da f.
  22. Um paliativo para resolver esse problema é usar muitos pontos

    no eixo-x. Vejam nas próximas transparências. Ok, Mestre, mas e as descontinuidades por oscilação? Sim, tipo a função = cos(1/) perto de = 0.
  23. Comparando numa figura só, com 4 gráficos. Reduzindo o intervalo

    e o nº de pontos perdemos a qualidade! 100.000 ptos. 10.000 ptos. 1.000 ptos. 100 ptos
  24. Mestre, em Física e Engenharias, muitas vezes precisamos trabalhar com

    escalas logarítmicas e coordenadas polares. Sim, mostre-nos alguns exemplos.
  25. Nosso voto ensinará os políticos a respeitar-nos. Castro Alves disse:

    “A praça é do povo, como o céu é do condor”
  26. Mais pedras. Aliás, o que o Carlos Drumond de Andrade

    tem a ver com “No meio do caminho tinha uma pedra...”
  27. Agora, façam alguns gráficos utilizando Matplotlib e as funções do

    módulo Mathematical functions. Vou estudar, parece uma dica do tipo “vai cair na prova!”
  28. Uma curva (paramétrica) em ℝ2 é uma função contínua γ:

    → ℝ2, ⊂ ℝ um intervalo, que associa a cada valor do parâmetro ∈ um ponto = ( , ) ∈ ℝ2 t () () b a () () () O conjunto dos pontos , ∈ } ⊂ ℝ2 é chamado traço da curva .
  29. t () () b a () () () O traço

    de é percorrido no sentido de t crescente, o que torna a curva orientada. Se I = [a, b], um intervalo fechado: • o ponto = ( , ) é chamado ponto inicial da curva e o ponto • e o ponto = ( , ) de ponto final de .
  30. O autódromo é o traço. A cada carro rodando no

    autódromo está associada uma curva diferente.
  31. A1 A0 A2 A3 Usando Pitágoras! Veja como: Mestre, como

    eu calculo o comprimento do autódromo?
  32. A1 A0 A2 A3 Grande dica! Pela sua figura, é

    só somar as hipotenusas dos triângulos: 0 1 + 1 2 + 2 3 Satisfeitas exigências adequadas sobre a curva γ, usando uma malha uniforme 0 , 1 , ⋯ , de tamanho ∆ = − −1 , teremos = lim Δ→0 =1 (−1 )( )
  33. Duas execuções do meu programa. A velocidade é o vetor

    em vermelho e a aceleração aquele em azul.
  34. Mestres, o Matlab, o Mathematica e o Maple permitem calcularmos

    as expressões da derivada e da integral (primitiva) de uma função. Há algo semelhante para Python?
  35. Aliás, não deixem de visitar este site do Mathematica sobre

    funções. Vejam que belíssima página de abertura.