computação científica com scipy - brevíssimo tutorial

81

Upload: fabio-alexandre-spanhol

Post on 10-Dec-2014

1.915 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Computação Científica com SciPy - Brevíssimo Tutorial
Page 2: Computação Científica com SciPy - Brevíssimo Tutorial

SciPy é software open source voltado para matemáticos, engenheiros e cientistas em geral

http://www.scipy.org/

Ideal para computação científica

Matemática avançada, processamento de sinais, otimização, estatística, etc.

Extensão da linguagem Python

Utiliza também as extensões Numpy e MatplotLib

Page 3: Computação Científica com SciPy - Brevíssimo Tutorial

é uma linguagem interpretada, interativa, funcional, orientada a objetos, dinamicamentetipada e com gerenciamento automático de memória

Similar, em certos aspectos, a Perl, Ruby, Scheme, Smalltalk e Tcl

Page 4: Computação Científica com SciPy - Brevíssimo Tutorial

Numpy define vetores/matrizes numéricas e operações sobre os mesmos

http://numpy.scipy.org/

Alta performance

Manipular arrays de Numpy é muito mais rápido que listas nativas de Python

Page 5: Computação Científica com SciPy - Brevíssimo Tutorial

Exemplo: Python puro x NumpyIntel i5-2400 3.10 GHz, 4 GB DDR3Leva 15 segundos!

É instantâneo!

Page 6: Computação Científica com SciPy - Brevíssimo Tutorial

Scipy e NumPy não fornecem funções nativas para plotagem

São pacotes essencialmente para processamento numérico

Para plotar, usar o pacote MatplotlibGráficos em 2Dhttp://matplotlib.sourceforge.net/

Page 7: Computação Científica com SciPy - Brevíssimo Tutorial

Acessehttp://docs.scipy.org/doc/

Page 8: Computação Científica com SciPy - Brevíssimo Tutorial

Python for Scientific Computing Conferencehttp://conference.scipy.org/scipy2011/

Page 9: Computação Científica com SciPy - Brevíssimo Tutorial
Page 10: Computação Científica com SciPy - Brevíssimo Tutorial

Python é uma linguagem de scriptAdote que o IDE que você preferir: vim, emacs, Wing, Eric,

Netbeans, Ninja, etc.

Scipy é usado normalmente com a shell interativa avançada IPython

Page 11: Computação Científica com SciPy - Brevíssimo Tutorial

Python

IPython

NumPy

SciPy Matplotlib

Normalmente o conjunto é chamado pylab

Page 12: Computação Científica com SciPy - Brevíssimo Tutorial

Olhando Python um pouco mais de perto!

Page 13: Computação Científica com SciPy - Brevíssimo Tutorial

Para obter o interpretador Python acessar http://www.python.org/download/

VersõesPython 2.7.2 foi liberada em 11 de junho

de 2011Python 3.2.2* foi liberada em 04 de

setembro de 2011

Page 14: Computação Científica com SciPy - Brevíssimo Tutorial

Onde sua imaginação mandar!Web e Internet DatabaseGUIsCientífico e processamento numéricoEducaçãoProgramação de rede Construção e teste de softwareDesenvolvimento de jogos renderização 3D

Page 15: Computação Científica com SciPy - Brevíssimo Tutorial

Roda emUnix: HP-UX, Solaris ...Linux (freqüentemente pré-instalada)Mac OSX (sempre pré-instalada)Windows: 9x, ME, 2K, XP, Vista, SevenApple iPhoneGoogle Android

Page 16: Computação Científica com SciPy - Brevíssimo Tutorial

Extensa biblioteca padrão

Um módulo para o que você precisar

sys, random, re, datetime, calendar, csv, os, webbrowser, string, urlib, Tkinter, codecs, pickle, types, array, mutex, queue, zlib, gzip, md5, thread, socket, email, xml.dom, locale, etc.

Page 17: Computação Científica com SciPy - Brevíssimo Tutorial

Python é case sensitive

Linhas são delimitadas por enter

Tipagem é forte e dinâmica

Não há declaração de variáveis como em C, Java,Pascal, etc.

Você pode utilizar o interpretador em modointerativo ou seu IDE/editor favoritos

Page 18: Computação Científica com SciPy - Brevíssimo Tutorial

Em Python, variáveis são referências a objetos

não guardam os objetos em sinão têm tipo, mas os objetos aos quais elas se

referem têm tipoSão criadas dinamicamente

Uma variável não pode ser utilizada em uma expressão sem ter sido inicializada

não existe “criação automática” de variáveis

Page 19: Computação Científica com SciPy - Brevíssimo Tutorial

Variáveis não são “caixas” com valoresVariáveis são “rótulos” colados em objetos

São criadas pela atribuição =

Page 20: Computação Científica com SciPy - Brevíssimo Tutorial

Atribuição não gera uma cópia do objetoUma referência (variável) pode ser liberadaUsando del

Não existindo mais referências a um objeto, ele é removido da memória (garbage collector)

Page 21: Computação Científica com SciPy - Brevíssimo Tutorial

Normalmente para programas maiores você irá codificar arquivos (scripts) em um IDE

extensão py

O script pode ser executado diretamente da linha de comando

python oi.py

Ou carregado para o interpretador interativo>>> import oi.py

Page 22: Computação Científica com SciPy - Brevíssimo Tutorial

Módulos são arquivos que contêm qualquer estrutura python (classes, funções, variáveis, etc.) e podem ser importados nos programas

Quando importado pela primeira vez o módulo é compilado e um arquivo .pyc ou .pyo é gerado

Um módulo é um objeto singletonApenas uma instância é carregada em memória torna-se disponível globalmente para o programa

que fez a importação

Page 23: Computação Científica com SciPy - Brevíssimo Tutorial

Funções importantes são disponibilizadas em módulos da biblioteca padrão

Ex.: módulo math tem funções como sin, cos, exp e outrasUm módulo pode conter não só funções, mas

também variáveis ou classesEx.: math define a constante pi

Os módulos são localizados pelo interpretador pela lista de diretórios em PYTHONPATH (sys.path), que inclui o diretório atual

Page 24: Computação Científica com SciPy - Brevíssimo Tutorial

Para usar os elementos de um módulo, comando import

import modulofrom modulo import nome1,...,nomen

from modulo import *

A importação ocorre apenas uma vez!

Para carregar um módulo novamente (que tenha sido alterado) pode-se usar a função reload

Page 25: Computação Científica com SciPy - Brevíssimo Tutorial

Exemplos

Page 26: Computação Científica com SciPy - Brevíssimo Tutorial

Se um programa pode ser executado isolado ou importado dentro de outro, como distinguir as duas situações?

O módulo principal de um programa tem a variável __name__ contendo “__main__”

Para executar um código apenas se o módulo for o principal e não quando ele for importado

Page 27: Computação Científica com SciPy - Brevíssimo Tutorial
Page 28: Computação Científica com SciPy - Brevíssimo Tutorial

A estrutura dos blocos é definida pelaindentação

Não misturar tabulações com espaços

Page 29: Computação Científica com SciPy - Brevíssimo Tutorial

Quando o caractere # aparece, o interpretador ignora o restante do código até o final da linha

Isso não vale dentro de strings

Para várias linhas use asplas triplas (docstring)Será útil para documentar funções, classes, módulos, etc.

Page 30: Computação Científica com SciPy - Brevíssimo Tutorial

Tipos básicosint = normalmente 32 bitslong = limitado ao tamanho da memória

Há promoção automática de int para longDivisão de inteiros em python < 3 resulta sempre int

Page 31: Computação Científica com SciPy - Brevíssimo Tutorial

Tipos básicosfloat = ponto flutuante de 32 bitscomplex= para números complexos

Page 32: Computação Científica com SciPy - Brevíssimo Tutorial

Construtores ou funções de conversãoint (n)float (n)complex (n)abs (n)

Page 33: Computação Científica com SciPy - Brevíssimo Tutorial

Básicos+, -, *, /, **

Inteiros%, //

Bit a Bit&, |, ^, ~, >>, <<

Page 34: Computação Científica com SciPy - Brevíssimo Tutorial

Módulo math e outros

Page 35: Computação Científica com SciPy - Brevíssimo Tutorial

Representa o valor nuloEquivalente a False em operações booleanas

Aplicações típicasValor default em parâmetros de funçõesValor de retorno de funções que será descartado

Como void de C/C++

Page 36: Computação Científica com SciPy - Brevíssimo Tutorial

Constantes True e FalseOcorre conversão automática entre tipos

Conversão explícita pode ser feita com bool(x)

Page 37: Computação Científica com SciPy - Brevíssimo Tutorial

Relacionais>, <, >=, <=, ==, !=, is, is notSempre retornam um bool

Lógicosand, or, not

Page 38: Computação Científica com SciPy - Brevíssimo Tutorial

str – Sequência de bytes, com aacentuação dependente do encoding

Delimitadas por aspas, apóstrofo ou trêsaspas ou três apóstrofos

Page 39: Computação Científica com SciPy - Brevíssimo Tutorial

Constantes str ou unicode são interpretadas segundo a codificação declarada num comentário especial no início do arquivo .py

Nós (brasileiros) frequentemente lidamos com textos não ASCII

Page 40: Computação Científica com SciPy - Brevíssimo Tutorial

Use caracteres de formatação, como na printfde C

%s, %d, %f são os mais comuns

Page 41: Computação Científica com SciPy - Brevíssimo Tutorial

Tuplas são sequências imutáveisnão é possível modificar as referências contidas na

tuplaTuplas constantes são representadas como

sequências de itens entre parênteses

CUIDADO: em certos contextos os parênteses em redor das tuplas podem ser omitidos

Page 42: Computação Científica com SciPy - Brevíssimo Tutorial

Listas são coleções de itens heterogêneos que podem ser acessados sequencialmente ou indexados

São mutáveisConstantes do tipo lista são delimitadas por

colchetes []

Page 43: Computação Científica com SciPy - Brevíssimo Tutorial

Facilmente você pode criar uma lista numérica com

range([inicio,] fim[, passo])

Retorna uma sequência numérica conforme os argumentos dados Normalmente usada em laços for

Page 44: Computação Científica com SciPy - Brevíssimo Tutorial

Os tipos string, lista, tupla, buffer são sequências

Coleção ordenada e iterável de itens

Operaçõess[i] = acessa um items[-i] = acessa um item pelo finals+z = concatenas*n = produz n cópias de s concatenadase in s = elemento e está em s?e not in s = elemento e não está em s?

Page 45: Computação Científica com SciPy - Brevíssimo Tutorial

Operações de slicings[a:b] cópia de a (inclusive) até b (exclusive)s[a:] cópia a partir de a (inclusive)s[:b] cópia até b (exclusive)s[:] cópia total de ss[a:b:n] cópia de n em n itens

Atribuição s[2:5] = [6,3,2,0]Aplicável somente em sequências mutáveis

Page 46: Computação Científica com SciPy - Brevíssimo Tutorial

Dicionários são estruturas de dados queimplementam mapeamentos

coleções de pares chave:valor que podem ser recuperados pela chaveA chave pode ser qualquer imutável

Page 47: Computação Científica com SciPy - Brevíssimo Tutorial

Entrada com input

Saída com print

Page 48: Computação Científica com SciPy - Brevíssimo Tutorial

ifif (expressao):

bloco[elif (expressao):

bloco][else:

bloco]

Page 49: Computação Científica com SciPy - Brevíssimo Tutorial

exemplo

Page 50: Computação Científica com SciPy - Brevíssimo Tutorial

forfor variavel in sequencia:

bloco[else:

bloco]while

while (expressao):bloco

[else:bloco]

Page 51: Computação Científica com SciPy - Brevíssimo Tutorial

Exemplo

Page 52: Computação Científica com SciPy - Brevíssimo Tutorial

Modularizam o códigoComando def inicia a definição de uma funçãoComando return marca o fim da execução da

função e define o resultado a ser devolvidoPode ser None

Page 53: Computação Científica com SciPy - Brevíssimo Tutorial

Exemplo

Page 54: Computação Científica com SciPy - Brevíssimo Tutorial
Page 55: Computação Científica com SciPy - Brevíssimo Tutorial

Ei, não vamos complicar!

Page 56: Computação Científica com SciPy - Brevíssimo Tutorial

Classe file representam arquivos Use a função open (ou construtor file(), são

sinônimos)

abrir arquivo binário para leituraarq = file(‘imagem.png','rb')

abrir arquivo texto para escritaarq = open(‘log.txt','w')

abrir arquivo para acrescentar (append)arq = file(‘imagem.png','a')

Page 57: Computação Científica com SciPy - Brevíssimo Tutorial

Voltando a Scipy!

Page 58: Computação Científica com SciPy - Brevíssimo Tutorial

Teste interativo, aplicações pequenas

Aplicações “sérias”Considere

Page 59: Computação Científica com SciPy - Brevíssimo Tutorial

Valor de

Valor de

Page 60: Computação Científica com SciPy - Brevíssimo Tutorial

Um array Numpy é uma coleção homegênea de N-dimensões de itens do mesmo tipo

O tipo pode ser qualquer estrutura arbitrária

Page 61: Computação Científica com SciPy - Brevíssimo Tutorial

Criação e verificação de tipos

Page 62: Computação Científica com SciPy - Brevíssimo Tutorial

Dimensões

Bytes por elemento

Quantidade de elementos

Quantidade de bytes

Page 63: Computação Científica com SciPy - Brevíssimo Tutorial

Multiplicação por um escalar

Page 64: Computação Científica com SciPy - Brevíssimo Tutorial

Multiplicação por vetor e aplicação de função

Page 65: Computação Científica com SciPy - Brevíssimo Tutorial

Criação

Transposta

Inversa

Page 66: Computação Científica com SciPy - Brevíssimo Tutorial

Diagonal

Solve

Page 67: Computação Científica com SciPy - Brevíssimo Tutorial

Módulo stats

Cálculo de estatísticas básicasnumpy.mean, numpy.std, numpy.varnumpy.covstats.skewstats.kurtosisstats.momentEtc.

Page 68: Computação Científica com SciPy - Brevíssimo Tutorial

Distribuições

Page 69: Computação Científica com SciPy - Brevíssimo Tutorial

Processamento de sinais e imagensFiltragem (Filtering)

Convolução 2D (com condições de limite)

Convolução ND

Filtro B-spline

Filtro ND Order, filtro ND mediana

Filtros IIR/FIR e projeto de filtros

Sistemas LTI(Linear Time-Invariant)

Simulação de sistemas

Impulso e resposta

Expansão em frações parciais

Page 70: Computação Científica com SciPy - Brevíssimo Tutorial

A famosa imagem clássica lena está empacotada para testes

Page 71: Computação Científica com SciPy - Brevíssimo Tutorial

A imagem lena é um pequeno recorte de uma foto digitalizada da Playboyamericana (novembro,1973), da modelo sueca Lena Sjooblom

Page 72: Computação Científica com SciPy - Brevíssimo Tutorial

Aplicando filtro

Page 73: Computação Científica com SciPy - Brevíssimo Tutorial

Inserção de ruído

Page 74: Computação Científica com SciPy - Brevíssimo Tutorial

Filtro para remoção de ruído

Page 75: Computação Científica com SciPy - Brevíssimo Tutorial

Detecção de limites

Page 76: Computação Científica com SciPy - Brevíssimo Tutorial

Sistemas LTI

Page 77: Computação Científica com SciPy - Brevíssimo Tutorial

ExemploMinimização da Função de Bessel (1784-1846)

Propagação de ondasDifusão de calorProcessamento de sinaisetc.

!

Page 78: Computação Científica com SciPy - Brevíssimo Tutorial

Ex.: MinimizarFunção de Bessel, primeira ordem, entre 4 e 7

Page 79: Computação Científica com SciPy - Brevíssimo Tutorial

Mais de 200 funções!Exemplo: Bessel

Page 80: Computação Científica com SciPy - Brevíssimo Tutorial

Ex.: Plotando e

Page 81: Computação Científica com SciPy - Brevíssimo Tutorial