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

Post on 10-Dec-2014

1.915 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

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

é 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

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

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

É instantâneo!

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/

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

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

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

Python

IPython

NumPy

SciPy Matplotlib

Normalmente o conjunto é chamado pylab

Olhando Python um pouco mais de perto!

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

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

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

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.

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

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

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

São criadas pela atribuição =

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)

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

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

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

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

Exemplos

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

A estrutura dos blocos é definida pelaindentação

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

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.

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

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

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

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

Inteiros%, //

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

Módulo math e outros

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

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

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

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

Lógicosand, or, not

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

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

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

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

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

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

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

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

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?

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

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

Entrada com input

Saída com print

ifif (expressao):

bloco[elif (expressao):

bloco][else:

bloco]

exemplo

forfor variavel in sequencia:

bloco[else:

bloco]while

while (expressao):bloco

[else:bloco]

Exemplo

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

Exemplo

Ei, não vamos complicar!

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

Voltando a Scipy!

Teste interativo, aplicações pequenas

Aplicações “sérias”Considere

Valor de

Valor de

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

Criação e verificação de tipos

Dimensões

Bytes por elemento

Quantidade de elementos

Quantidade de bytes

Multiplicação por um escalar

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

Criação

Transposta

Inversa

Diagonal

Solve

Módulo stats

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

Distribuições

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

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

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

Aplicando filtro

Inserção de ruído

Filtro para remoção de ruído

Detecção de limites

Sistemas LTI

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

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

!

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

Mais de 200 funções!Exemplo: Bessel

Ex.: Plotando e

top related