apostila cookbook - resumão de python

25
UNIVERSIDADE FEDERAL DE SANTA CATARINA CAMPUS JOINVILLE CENTRO DE ENGENHARIA DA MOBILIDADE COOKBOOK (Apostila de Apoio para disciplina de Cálculo Numérico) Autor: Nathan Filipe Hoepers Joinville, Segundo Semestre de 2012

Upload: japabfr

Post on 26-Nov-2015

92 views

Category:

Documents


8 download

TRANSCRIPT

  • UNIVERSIDADE FEDERAL DE SANTA CATARINA

    CAMPUS JOINVILLE

    CENTRO DE ENGENHARIA DA MOBILIDADE

    COOKBOOK

    (Apostila de Apoio para disciplina de Clculo Numrico)

    Autor: Nathan Filipe Hoepers

    Joinville, Segundo Semestre de 2012

  • 2SUMRIO

    1. OPERADORES ............................................................................................................. 32. ESTRUTURAS.............................................................................................................. 53. DEFININDO FUNES............................................................................................... 84. MANIPULAO DE ARQUIVOS DE DADOS........................................................... 95. IMPRESSO FORMATADA ..................................................................................... 126. VETORES E MATRIZES .............................................................................................. 177. GRFICOS COM MATPLOTLIB .............................................................................. 198. FUNES MATEMTICAS...................................................................................... 24

  • 31. OPERADORES

    OPERADORES ARITMTICOS

    OPERADORES DESCRIO EXEMPLOS+ Soma 2 + 2 # Imprime 4- Subtrao 5 2 # Imprime 3* Multiplicao 5 * 5 # Imprime 25/ Diviso 5.0 / 2.0 # Imprime 2.5// Diviso Truncada 12.356 // 2 # Imprime 6.0% Retorna o resto da

    diviso10 % 3 # Imprime 1

    ** Exponenciao 2 ** 3 # Imprime 8pow(a,b) Exponenciao pow(2, 3) # Imprime 8

    += Soma e atribui PARA i = 0i+= 10 # Incrementa 10

    em i. (i = 10)-= Subtrai e atribui i-= 4 # Subtrai 4 de i e

    atribui resultado. (i = 6)*= Multiplica e atribui i*= 2 # multiplica 6 por 2

    e atribui para i. (i = 12)/= Divide e atribui i/= 2 # Divide 12 por 2 e

    atribui para i. (i = 6)//= Divide e atribui parte

    inteira do resultadoi//=4 # Divide 6 por 4 e

    atribui parte inteira para i. (i =1)

    %= Divide e atribui resto da diviso

    PARA i = 36i%= 10 # Divide 36 por 10 e

    atribui resto para i. (i = 6)

    **= Eleva nmero e atribui i**= 2 # Eleva 6 ao quadrado e atribui para

    i. (i = 36)

  • 4OPERADORES LGICOS

    OPERADORES DESCRIO EXEMPLOS> Maior 1 > 2 # False 2< Menor 8 < 5 # False

    >= Maior igual 10 >= 1 # True

  • 52. ESTRUTURAS

    1 - ESTRUTURA DE DECISO (if, elif, else):

    Forma Geral if condio: # bloco de cdigoelif condio: # outro blocoelse: # bloco final

    Exemplo a = input(digite valor de a: ) b = input(digite valor de b: )

    if a > b:

    print 'a maior que b'

    elif a == b:

    print 'a igual a b'

    else:

    print 'a menor que b'

    2 - ESTRUTURA DE REPETIO (while):

    Forma Geral while condio: # bloco de cdigoExemplo m = 3

    n = 5

    contador = 0

    while m < n:

    m = n / 0.5

    n = m / 0.5

    contador = contador + 1

    print "Iteramos %d vezes at m > n"

    % contador

  • 63 - ESTRUTURA DE REPETIO (for):

    Forma Geral for varivel in seqncia: # bloco de cdigoExemplo 1 for i in range (5):

    print i

    # imprime 0,1,2,3,4

    Exemplo 2 for m in range (1,5,1): print m

    # imprime 1,2,3,4

    Exemplo 3 for j in range (1,5,2): print j

    # imprime 1,3

    Exemplo 4 for t in range (5,1,-2): print t

    # imprime 5,3

    Exemplo 5 valores = [2, -4, 5, 2, -1,6]for i in valores:

    if i < 0:

    print "Negativo

    encontrado: %d" % i

    else:

    print "no um

    negativo"

    4 - ESTRUTURA DE CONTROLE (break):

    Descrio O comando quebra um lao (pode ser o lao for ou while)

    Exemplo i = 0while i < 10:

    if i == 5:

    break

    else:

    print i

    i += 1

    # imprime 0,1,2,3,4

  • 75 - ESTRUTURA DE CONTROLE (continue):

    Descrio O comando passa para o incio do lao.

    Exemplo for i in range (10): if i == 5:

    continue

    print i

    # imprime 0,1,2,3,4,6,7,8,9

  • 83. DEFININDO FUNES

    FORMA GERAL def nome_funcao(param1,param2, ...):return: expressao_1,expressao_2,expressao_3...

    EXEMPLO 1 def funcao(): y = 2**2 return y

    print funcao() # imprime 4EXEMPLO 2 def soma(a, b):

    return a + b

    print soma(2, 5) #imprime 7EXEMPLO 3 def soma(a = 1, b = 2, c = 1.5):

    return a + b + c

    print soma() #imprime 4.5print soma(2,5) # imprime 8.5print soma(2,5,3) # imprime 10

    EXEMPLO 4 def proximos(a): return a - 1, a + 1

    ant, seg = proximos(10)print "anterior:", ant # imprime 9print "seguinte:", seg # imprime 11

    EXEMPLO 5 def f(x,y,z): return x*y,pow(x,z),x/z

    print f(10,2,1) # imprime (20,2,10)EXEMPLO 6 def soma(x):

    lista= [1, 1, 1, 1] soma= 0 for num in lista: soma += num return x*soma

    print"Soma =", soma(10) #imprime 40EXEMPLO 7 def mult(*nums):

    mult = 1 for n in nums: mult *= n return mult

    print mult(1, 2, 3,10) # Imprime 6print mult(1, 2) # Imprime 3

  • 94. MANIPULAO DE ARQUIVOS DE DADOS

    CRIANDO UM ARQUIVO DE DADOSimport numpy as np

    # Cria um conjunto de dadosN = 10x = np.linspace( 0, 1, N ) # N pontos igualmente distribu dos em [0,1]y = np.exp(-x*x)

    # Nome do arquivo que ser criado para escrever e depois para lernome_arq = "Exemplo.CookBook"

    # Criando um arquivo para guardar os valores de x e y# 'w' signfica 'write', vai escrever no arquivoarq_saida = open( nome_arq, 'w' ) for i in range(N): arq_saida.write( "%.6f %.6f\n" % (x[i],y[i]) )arq_saida.close() # Fecha o arquivo

    print "procure na pasta do cdigo o arquivo criado"

    #MUITO IMPORTANTE NOTAR QUE O ARQUIVO IR APARECER NA MESMA PASTA ONDE ESTA SALVO O C DIGO

  • 10

    LENDO O ARQUIVO CRIADOimport numpy as npnome_arq = "Exemplo.CookBook"

    # Agora que o arquivo foi criado, abre ele para ler# 'r' significa 'read', vai ler o arquivoarq_entrada = open( nome_arq, 'r' )

    # A fun o 'readlines' l tudo que tem dentro do arquivo e coloca na varivel# contedo.# A varivel contedo uma lista, cada elemento da lista cont m uma linha# do arquivo, inteira, como uma string.conteudo = arq_entrada.readlines()X = []Y = []

    print "Lendo o arquivo ..."for linha in conteudo: # Para pegar os nmeros preciso dividir a varivel linha em peda os # Cada peda o, vai ser um elemento da lista valores valores = linha.split() X.append( float( valores[0] ) ) Y.append( float( valores[1] ) )

    print "Vetor X lido do arquivo:"print X

    print "\nVetor Y lido do arquivo:"print Y

  • 11

    SADA DO PROGRAMALendo o arquivo ...

    # print "Vetor X lido do arquivo:"# print XVetor X lido do arquivo:[0.0, 0.111111, 0.222222, 0.333333, 0.444444, 0.555556, 0.666667, 0.777778, 0.888889, 1.0]

    # print "\nVetor Y lido do arquivo:"# print YVetor Y lido do arquivo:[1.0, 0.98773, 0.951817, 0.894839, 0.820755, 0.734444, 0.64118, 0.546108, 0.453789, 0.367879]

  • 12

    5. IMPRESSO FORMATADA

    1 - %f:

    Forma Geral Print %espao.casasf % nmero

    Exemplo 1 a = math.piprint " %8.5f" % a

    # imprime 3.14159(nmero PI com 8 espaos e 5 casas

    decimais)

    Exemplo 2 a = math.piprint " %.5f" % a

    # imprime 3.14159(nmero PI com 5 casas)

    Exemplo 3 a = math.piprint " %.f " % a

    # imprime 3(nmero PI truncado)

    Exemplo 4 a = math.piprint " %f " % a

    # imprime 3.141593(nmero PI em ponto flutuante com 6 casas)

  • 13

    2 - %d:

    Forma Geral Print %espao.d % nmero

    Exemplo 1 a = math.piprint " %8.d" % a

    # imprime 3(nmero PI com 8 espaos e parte inteira)

    Exemplo 2 a = math.piprint " %8d" % a

    # imprime 3(nmero PI com 8 espaos e parte inteira)

    Exemplo 3 a = math.piprint " %d" % a

    # imprime 3(nmero PI parte inteira)

  • 14

    3 - %e:

    Forma Geral Print %espao.casase % nmero

    Exemplo 1 a = 12345.6789print " %8.4e" % a

    # imprime 1.2346e+04(nmero com 8 espaos e 4 casas decimais)

    Exemplo 2 a = 12345.6789

    print " %.4e" % a

    # imprime 1.2346e+04(nmero com 4 casas)

    Exemplo 3 a = 12345.6789print " %.e " % a

    # imprime 1e+04(nmero truncado)

    Exemplo 4 a = 12345.6789print " %e" % a

    # imprime 1.234568e+04(nmero em ponto flutuante com 6 casas)

  • 15

    4 - %g:

    Forma Geral Print %espao.nmerosg % nmero

    Exemplo 1 a = 12345.6789print " %8.2g" % a

    # imprime 1.2e+04(nmero com 8 espaos e 2 nmeros)

    Exemplo 2 a = 12345.6789print " %8.3g" % a

    # imprime 1.23e+04(nmero com 8 espaos e 3 nmeros)

    Exemplo 3 a = 12345.6789

    print " %.4g" % a

    # imprime 1.234e+04(representao com 4 nmeros)

    Exemplo 4 a = 12345.6789print " %.g " % a

    # imprime 1e+04(nmero truncado)

    Exemplo 5 a = 12345.6789print " %g" % a

    # imprime 12345.7(ponto flutuante com 6 nmeros)

    Exemplo 6 a = -.000001235print " %g" % a

    # imprime -1.235e-06(ponto flutuante)

  • 16

    5 - %s:

    Forma Geral Print %espao.caracters % (nmero ou palavra)

    Exemplo 1 a = pythonprint " %8.2s" % a

    # imprime py(palavra com 8 espaos e 2 caracteres)

    Exemplo 2 a = 100print " %8.2s" % a

    # imprime 10(nmero com 8 espaos e 2 caracteres)

    Exemplo 3 a = 2.235print " %.3s" % a

    # imprime 2.2(nmero com 3 caracteres)

    Exemplo 4 a = pythonprint " %10s" % a

    # imprime python(toda palavra e com 10 espaos)

    Exemplo 5 a = 12345.6789print " %s" % a

    # imprime 12345.6789(todo o nmero)

  • 17

    6. VETORES E MATRIZES

    *OBS: import numpy as np

    CDIGO RESULTADO DO CDIGOimport numpy as np# Cria uma listalista = [ 1, 2, 3, 4, 5 ]# Uma lista no um vetor!# Crio um vetor usando Numpy:x = np.array( lista )

    # Imprimo o vetor xprint "Vetor x: ", xnx = len(x)print "O tamanho do vetor x : %d " % nx

    - IMPRIME:Vetor x: [1 2 3 4 5]O tamanho do vetor x : 5

    import numpy as np# Inicio um vetor amostrado de forma uniforme entre 0 e 10v = np.linspace( 0, 10, 3 )print "\nv: ",v

    - IMPRIME:v: [ 0. 5. 10.]

    import numpy as np# Inicio um vetor com 10 zeros:z = np.zeros( 10 )print "\nz: ",z

    - IMPRIME:z: [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]

    # Manipula es com vetoresu = 2*vprint "\n2*v: ",u

    - IMPRIME:2*v: [ 0. 10. 20.]

    # Manipula es com vetoresu = v**2print "\nv**2: ",u

    - IMPRIME:v**2: [ 0. 25. 100.]

    import numpy as np# Manipula es com vetoresu = np.sin( v )print "\nsin(v): ",u

    - IMPRIME:sin(v): [ 0. -0.95892427 -0.54402111]

    # Manipula es com vetoresu = v + v**2 + v**3print "\nv + v**2 + v**3: ",u

    - IMPRIME:v + v**2 + v**3: [ 0. 155. 1110.]

  • 18

    *OBS: MATRIZES SO VETORES DE VETORES

    *OBS: import numpy as np

    # Inicio uma matriz toda nula com 5 linhas e duas colunasM0 = np.zeros( [5,2] )print "\nMatriz de zeros:"print M0

    - IMPRIME:Matriz de zeros:

    [[ 0. 0.][ 0. 0.][ 0. 0.][ 0. 0.][ 0. 0.]]

    # Inicio uma matriz toda com 1:M1 = np.ones( [5,3] )print "\nMatriz de 1's:"print M1

    - IMPRIME:Matriz de 1's:[[ 1. 1. 1.][ 1. 1. 1.][ 1. 1. 1.][ 1. 1. 1.][ 1. 1. 1.]]

  • 19

    7. GRFICOS COM MATPLOTLIB

    O cdigo:

    import numpy as npfrom pylab import *

    # 1 - Criando um conjunto de dados, com espaamento muito pequenox = np.linspace(-5, 5, 1000)y = np.exp(-x*x) # a funo e^(-x*x), poderia ser qualquer outra funo

    # 2 - Crio um conjunto de dados, com espaamento grandeX = np.linspace(-5, 5, 11 )Y = np.exp(-X*X)

    # 3 - Plotando os pontos com espaamento pequeno como uma curva contnuaplot( x, y, 'k-', label=u'Funo $e^{-x^2}$', linewidth = 1)

    # 4 - Ploto os pontos com espaamento grande como se fossem dadosplot( X, Y, 'bo', label=u'Dados $e^{-x^2}$', markersize = 7)

    # 5 - Legendalegend(loc = 'upper left')

    # 6 - Texto nos eixos x e y, alm do ttulo do grficoxlabel(u"Eixo x")ylabel(u"Eixo y")title(u"Grfico de Exemplo")

    # 7 - Limites do grficoxlim(-6,6)ylim(-0.2,1.2)

    # 8 - Gradegrid() # grid (True) Aparece, grid (False) Sem Grade

    # 9 - Mostra o grfico na telashow()

  • 20

    1 linha contnua:

    # 3 - Plotando os pontos com espaamento pequeno como uma curva contnuaplot( x, y, 'k-', label=u'Funo $e^{-x^2}$', linewidth = 1)

    Forma geral: plot (eixo x, eixo y, cor e tipo de linha, legenda, grossura da linha)

    TIPOS DE CORES

    b Azul - (blue)

    g Verde - (Green)

    r Vermelho - (red)

    c Outro tipo de Azul (cyan)

    m Magenta - (magenta)

    y Amarelo - (yellow)

    k Preto - (Black)

    w Branco - (White)

    TIPOS DE LINHAS

    '-' Linha Slida

    '--' Linha Tracejada

    '-.' Linha Trao - Ponto

    ':' Linha Pontilhada

  • 21

    Exemplos:

    plot( x, y, 'c-', label=u'Funo $e^{-x^2}$', linewidth= 1 )

    plot( x, y, 'b --', label=u'Funo $e^{-x^2}$', linewidth = 2 )

    plot( x, y, 'y -.', label=u'Funo $e^{-x^2}$', linewidth = 3 )

    plot( x, y, 'k:', label=u'Funo $e^{-x^2}$', linewidth = 1 )

  • 22

    2 Plotando os Marcadores (Pontos):

    # 4 - Ploto os pontos com espaamento grande como se fossem dadosplot( X, Y, 'bo', label=u'Dados $e^{-x^2}$', markersize = 7)

    Forma geral: plot (eixo x, eixo y, cor e tipo de marcador, legenda, grossura do marcador)

    TIPOS DE MARCADORES

    '.' Ponto

    '*' Estrela

    'o' Circulo

    'v' Tringulo para baixo

    '^' Tringulo para cima

    '' Tringulo para direita

    's' Quadrado

    'p' Pentgono

    'h' Hexgono

    'H' Hexgono 2

    '+' Mais

    'x' X

    Exemplo:

    plot( x, y, 'k-', label=u'Funo $e^{-x^2}$', linewidth= 1 ) plot( X, Y, 'bo', label=u'Dados $e^{-x^2}$', markersize = 10)

  • 23

    3 Legenda:Forma geral: legend(loc = 'lugar onde se quer que aparea')

    EXEMPLOS

    Cdigo Escrito Cdigo Numrico Aplicao Localizao

    best 0legend(loc = best)

    OUlegend(loc = 0 )

    Canto superior Direito

    upper right 1legend(loc = upper right)

    OUlegend(loc = 1)

    Canto superior Direito

    upper left 2legend(loc = upper left)

    OUlegend(loc = 2)

    Canto superior Esquerdo

    lower left 3legend(loc = lower left)

    OUlegend(loc = 3)

    Canto inferior Esquerdo

    lower right 4legend(loc = lower right)

    OUlegend(loc = 4)

    Canto inferior Direito

    right 5legend(loc = right)

    OUlegend(loc = 5)

    Canto direito

    center left 6legend(loc = center left)

    OUlegend(loc = 6)

    Centro Esquerdo

    center right 7legend(loc = center right)

    OUlegend(loc = 7)

    Centro Direito

    lower center 8legend(loc = lower center)

    OUlegend(loc = 8)

    Centro Inferior

    upper center 9legend(loc = upper center)

    OUlegend(loc = 9)

    Centro Superior

    center 10legend(loc = center)

    OUlegend(loc = 10)

    Centro

  • 24

    8. FUNES MATEMTICAS

    *OBS: import numpy as np

    1 - Funes trigonomtricas:

    FUNO DESCRIO EXEMPLOnp.sin(x) Retorna o seno de x

    (em radianos)print np.sin(.5)

    #imprime 0.479425538604

    np.cos(x) Retorna o cosseno de x (em radianos)

    print np.cos(.5)#imprime 0.87758256189

    np.tan(x) Retorna a tangente de x (em radianos)

    print np.tan(.5)#imprime 0.546302489844

    np.arcsin(x) Retorna o arco seno de x (em radianos)

    print np.arcsin(.5) #imprime 0.523598775598

    np.arccos(x) Retorna o arco cosseno de x (em

    radianos)

    print np.arccos(.5) #imprime 1.0471975512

    np.arctan(x) Retorna o arco tangente de x (em

    radianos)

    print np.arctan(.5) #imprime 0.463647609001

    np.arctan2(y,x) Retorna o arco tangente (y/x)

    print np.arctan2(1,2) #imprime 0.463647609001

    np.hypot(co,ca) Retorna a hipotenusa do tringulo

    print np.hypot(3,4) #imprime 5.0

    2 - Funes logartmicas e exponenciais:

    FUNES DESCRIO EXEMPLOSnp.log(x,base) Clculo de logaritmo

    com qualquer baseprint np.log(8,2)

    #imprime 3.0

    np.log10(x) Clculo de logaritmo com base 10

    print np.log10(10)#imprime 1.0

    np.log(x) Clculo de logaritmo natural (ln)

    print np.log(2.71)#imprime 0.996948634892

    np.exp(x) Retorna e**x print np.exp(1)#imprime 2.71828182846

    np.sqrt(x) Retorna a raiz quadrada de x

    print np.sqrt(81)#imprime 9.0

  • 25

    3 - Constantes, converses e outras:

    FUNES DESCRIO EXEMPLOSnp.e Retorna o valor de e print np.e

    #imprime 2.71828182

    np.pi Retorna o valor de pi print np.pi#imprime 3.141592

    np.degrees(x) Converte x de radianos para graus

    print np.degrees(0.523598...)#imprime 30.0

    np.radians(x) Converte x de graus para radianos

    print np.radians(30)#imprime 0.523598...

    np.factorial(x) Retorna o fatorial de x print np.factorial(10)#imprime 3628800

    4 - Funes hiperblicas:

    FUNO DESCRIO EXEMPLOnp.sinh(x) Retorna o seno

    hiperblico de x print np.sinh(2)

    #imprime 3.62686040785

    np.cosh(x) Retorna o cossenohiperblico de x

    print np.cosh(2)#imprime 3.76219569108

    np.tanh(x) Retorna a tangentehiperblica de x

    print np.tanh(2)#imprime 0.964027580076

    np.arcsinh(x) Retorna o inverso do seno hiperblico de x

    print np.arcsinh(.2) #imprime 0.198690110349

    np.arccosh(x) Retorna o inverso do cosseno hiperblico

    de x

    print np.arccosh(2) #imprime 1.31695789692

    np.arctanh(x) Retorna o inverso da tangente hiperblica

    de x

    print np.arctanh(.2) #imprime 0.202732554054