Sei sulla pagina 1di 25

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

SUMRIO

1. 2. 3. 4. 5. 6. 7. 8.

OPERADORES ............................................................................................................. 3 ESTRUTURAS.............................................................................................................. 5 DEFININDO FUNES ............................................................................................... 8 MANIPULAO DE ARQUIVOS DE DADOS........................................................... 9 IMPRESSO FORMATADA ..................................................................................... 12 VETORES E MATRIZES .............................................................................................. 17 GRFICOS COM MATPLOTLIB .............................................................................. 19 FUNES MATEMTICAS...................................................................................... 24

1. OPERADORES
OPERADORES ARITMTICOS

OPERADORES
+ * / // % ** pow(a,b) += -= *= /= //= %= **=

DESCRIO
Soma Subtrao Multiplicao Diviso Diviso Truncada Retorna o resto da diviso Exponenciao Exponenciao Soma e atribui Subtrai e atribui Multiplica e atribui Divide e atribui Divide e atribui parte inteira do resultado Divide e atribui resto da diviso Eleva nmero e atribui

EXEMPLOS
2 + 2 # Imprime 4 5 2 # Imprime 3 5 * 5 # Imprime 25 5.0 / 2.0 # Imprime 2.5 12.356 // 2 # Imprime 6.0 10 % 3 # Imprime 1 2 ** 3 # Imprime 8 pow(2, 3) # Imprime 8 PARA i = 0 i+= 10 # Incrementa 10 em i. (i = 10) i-= 4 # Subtrai 4 de i e atribui resultado. (i = 6) i*= 2 # multiplica 6 por 2 e atribui para i. (i = 12) i/= 2 # Divide 12 por 2 e atribui para i. (i = 6) i//=4 # Divide 6 por 4 e atribui parte inteira para i. (i =1) PARA i = 36 i%= 10 # Divide 36 por 10 e atribui resto para i. (i = 6) i**= 2 # Eleva 6 ao quadrado e atribui para i. (i = 36)

OPERADORES LGICOS

OPERADORES
> < >= <= == not != and or

DESCRIO
Maior Menor Maior igual Menor igual Igual No Diferente E OU

EXEMPLOS
1 > 2 # False 2 8 < 5 # False 10 >= 1 # True 5 <= 5 # True 2 == 3 # False not 5 < 3 # True 2 != 1 # True

a and b a or b

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

Forma Geral

if condio: # bloco de cdigo elif condio: # outro bloco else: # 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 Exemplo

while condio: # bloco de cdigo


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

3 - ESTRUTURA DE REPETIO (for):

Forma Geral Exemplo 1 Exemplo 2 Exemplo 3 Exemplo 4 Exemplo 5

for varivel in seqncia: # bloco de cdigo


for i in range (5): print i # imprime 0,1,2,3,4 for m in range (1,5,1): print m # imprime 1,2,3,4 for j in range (1,5,2): print j # imprime 1,3 for t in range (5,1,-2): print t

# imprime 5,3 valores = [2, -4, 5, 2, -1,6] for i in valores: if i < 0: print encontrado: %d" % i else: print negativo" "no um "Negativo

4 - ESTRUTURA DE CONTROLE (break):

Descrio Exemplo

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


i = 0 while i < 10: if i == 5: break else: print i i += 1

# imprime 0,1,2,3,4

5 - ESTRUTURA DE CONTROLE (continue):

Descrio Exemplo

O comando passa para o incio do lao.


for i in range (10): if i == 5: continue print i # imprime 0,1,2,3,4,6,7,8,9

3. DEFININDO FUNES

FORMA GERAL
EXEMPLO 1

def nome_funcao(param1,param2, ...): return: expressao_1,expressao_2,expressao_3... def funcao(): y = 2**2 return y print funcao() # imprime 4 def soma(a, b): return a + b print soma(2, 5) #imprime 7 def soma(a = 1, b = 2, c = 1.5): return a + b + c print soma() #imprime 4.5 print soma(2,5) # imprime 8.5 print soma(2,5,3) # imprime 10 def proximos(a): return a - 1, a + 1 ant, seg = proximos(10) print "anterior:", ant # imprime 9 print "seguinte:", seg # imprime 11 def f(x,y,z): return x*y,pow(x,z),x/z print f(10,2,1) # imprime (20,2,10) def soma(x): lista= [1, 1, 1, 1] soma= 0 for num in lista: soma += num return x*soma print"Soma =", soma(10) #imprime 40 def mult(*nums): mult = 1 for n in nums: mult *= n return mult print mult(1, 2, 3,10) # Imprime 6 print mult(1, 2) # Imprime 3

EXEMPLO 2

EXEMPLO 3

EXEMPLO 4

EXEMPLO 5

EXEMPLO 6

EXEMPLO 7

4. MANIPULAO DE ARQUIVOS DE DADOS

CRIANDO UM ARQUIVO DE DADOS


import numpy as np # Cria um conjunto de dados N = 10 x = 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 ler nome_arq = "Exemplo.CookBook" # Criando um arquivo para guardar os valores de x e y # 'w' signfica 'write', vai escrever no arquivo arq_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 CRIADO


import numpy as np nome_arq = "Exemplo.CookBook" # Agora que o arquivo foi criado, abre ele para ler # 'r' significa 'read', vai ler o arquivo arq_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 PROGRAMA
Lendo o arquivo ... # print "Vetor X lido do arquivo:" # print X Vetor 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 Y Vetor 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 Exemplo 1

Print %espao.casasf % nmero a = math.pi print " %8.5f" % a # imprime 3.14159 (nmero PI com 8 espaos e 5 casas decimais) a = math.pi print " %.5f" % a # imprime 3.14159 (nmero PI com 5 casas) a = math.pi print " %.f " % a # imprime 3 (nmero PI truncado)

Exemplo 2

Exemplo 3

Exemplo 4

a = math.pi print " %f " % a # imprime 3.141593 (nmero PI em ponto flutuante com 6 casas)

13

2 - %d:

Forma Geral Exemplo 1

Print %espao.d % nmero a = math.pi print " %8.d" % a # imprime 3 (nmero PI com 8 espaos e parte inteira) a = math.pi print " %8d" % a # imprime 3 (nmero PI com 8 espaos e parte inteira) a = math.pi print " %d" % a # imprime 3 (nmero PI parte inteira)

Exemplo 2

Exemplo 3

14

3 - %e:

Forma Geral Exemplo 1

Print %espao.casase % nmero a = 12345.6789 print " %8.4e" % a # imprime 1.2346e+04 (nmero com 8 espaos e 4 casas decimais) a = 12345.6789

Exemplo 2

print " %.4e" % a # imprime 1.2346e+04 (nmero com 4 casas) a = 12345.6789 print " %.e " % a # imprime 1e+04 (nmero truncado) a = 12345.6789 print " %e" % a # imprime 1.234568e+04 (nmero em ponto flutuante com 6 casas)

Exemplo 3

Exemplo 4

15

4 - %g:

Forma Geral Exemplo 1

Print %espao.nmerosg % nmero a = 12345.6789 print " %8.2g" % a # imprime 1.2e+04 (nmero com 8 espaos e 2 nmeros) a = 12345.6789 print " %8.3g" % a # imprime 1.23e+04 (nmero com 8 espaos e 3 nmeros) a = 12345.6789

Exemplo 2

Exemplo 3

print " %.4g" % a # imprime 1.234e+04 (representao com 4 nmeros) a = 12345.6789 print " %.g " % a # imprime 1e+04 (nmero truncado) a = 12345.6789 print " %g" % a # imprime 12345.7 (ponto flutuante com 6 nmeros) a = -.000001235 print " %g" % a # imprime -1.235e-06 (ponto flutuante)

Exemplo 4

Exemplo 5

Exemplo 6

16

5 - %s:

Forma Geral Exemplo 1

Print %espao.caracters % (nmero ou palavra)

a = python print " %8.2s" % a # imprime py (palavra com 8 espaos e 2 caracteres) a = 100 print " %8.2s" % a # imprime 10 (nmero com 8 espaos e 2 caracteres) a = 2.235 print " %.3s" % a # imprime 2.2 (nmero com 3 caracteres) a = python print " %10s" % a # imprime python (toda palavra e com 10 espaos) a = 12345.6789 print " %s" % a # imprime 12345.6789 (todo o nmero)

Exemplo 2

Exemplo 3

Exemplo 4

Exemplo 5

17

6. VETORES E MATRIZES
*OBS: import numpy as np

CDIGO
import numpy as np
# Cria uma lista

lista = [ 1, 2, 3, 4, 5 ]
# Uma lista no um vetor! # Crio um vetor usando Numpy:

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

x = np.array( lista )
# Imprimo o vetor x

print "Vetor x: ", x nx = len(x) print "O tamanho do vetor x : %d " % nx import numpy as np v = np.linspace( 0, 10, 3 ) print "\nv: ",v import numpy as np # Inicio um vetor com 10 zeros: z = np.zeros( 10 ) print "\nz: ",z # Manipula es com vetores u = 2*v print "\n2*v: ",u # Manipula es com vetores u = v**2 print "\nv**2: ",u import numpy as np # Manipula es com vetores u = np.sin( v ) print "\nsin(v): ",u # Manipula es com vetores u = v + v**2 + v**3 print "\nv + v**2 + v**3: ",u

# Inicio um vetor amostrado de forma uniforme entre 0 e 10

- IMPRIME: v: [ 0. 5. 10.] - IMPRIME: z: [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] - IMPRIME: 2*v: [ 0. 10. 20.] - IMPRIME: v**2: [ 0. 25. 100.] - IMPRIME: sin(v): [ 0. -0.95892427 -0.54402111]

- 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 colunas M0 = np.zeros( [5,2] ) print "\nMatriz de zeros:" print M0

- IMPRIME:

Matriz de zeros: [[ 0. 0.] [ 0. 0.] [ 0. 0.] [ 0. 0.] [ 0. 0.]] Matriz de 1's: [[ 1. 1. 1.] [ 1. 1. 1.] [ 1. 1. 1.] [ 1. 1. 1.] [ 1. 1. 1.]]

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

- IMPRIME:

19

7. GRFICOS COM MATPLOTLIB

O cdigo:
import numpy as np from pylab import * # 1 - Criando um conjunto de dados, com espaamento muito pequeno x = 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 grande X = np.linspace(-5, 5, 11 ) Y = np.exp(-X*X) # 3 - Plotando os pontos com espaamento pequeno como uma curva contnua plot( x, y, 'k-', label=u'Funo $e^{-x^2}$', linewidth = 1) # 4 - Ploto os pontos com espaamento grande como se fossem dados plot( X, Y, 'bo', label=u'Dados $e^{-x^2}$', markersize = 7) # 5 - Legenda legend(loc = 'upper left') # 6 - Texto nos eixos x e y, alm do ttulo do grfico xlabel(u"Eixo x") ylabel(u"Eixo y") title(u"Grfico de Exemplo") # 7 - Limites do grfico xlim(-6,6) ylim(-0.2,1.2) # 8 - Grade grid() # grid (True) Aparece, grid (False) Sem Grade # 9 - Mostra o grfico na tela show()

20

1 linha contnua:
# 3 - Plotando os pontos com espaamento pequeno como uma curva contnua plot( 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 g r c m y k w Azul - (blue) Verde - (Green) Vermelho - (red) Outro tipo de Azul (cyan) Magenta - (magenta) Amarelo - (yellow) Preto - (Black) 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 dados plot( 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
'.' '*' 'o' 'v' '^' '<' '>' 's' 'p' 'h' 'H' '+' 'x'

Ponto Estrela Circulo Tringulo para baixo Tringulo para cima Tringulo para esquerda Tringulo para direita Quadrado Pentgono Hexgono Hexgono 2 Mais 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


best

Cdigo Numrico
0

Aplicao
legend(loc = best) OU legend(loc = 0 ) OU legend(loc = 1)

Localizao
Canto superior Direito

upper right

legend(loc = upper right)

Canto superior Direito

upper left

legend(loc = upper left) OU legend(loc = 2) legend(loc = lower left) OU legend(loc = 3)

Canto superior Esquerdo

lower left

Canto inferior Esquerdo

lower right

legend(loc = lower right) OU legend(loc = 4) legend(loc = right) OU legend(loc = 5)

Canto inferior Direito

right

Canto direito

center left

legend(loc = center left) OU legend(loc = 6)


legend(loc = center right)

Centro Esquerdo

center right

lower center

legend(loc = lower center)

OU legend(loc = 7) OU legend(loc = 8) OU legend(loc = 9)

Centro Direito

Centro Inferior

upper center

legend(loc = upper center)

Centro Superior

center

10

legend(loc = center) OU legend(loc = 10)

Centro

24 8. FUNES MATEMTICAS *OBS: import numpy as np

1 - Funes trigonomtricas:

FUNO
np.sin(x) np.cos(x) np.tan(x) np.arcsin(x) np.arccos(x) np.arctan(x) np.arctan2(y,x) np.hypot(co,ca)

DESCRIO
Retorna o seno de x (em radianos) Retorna o cosseno de x (em radianos) Retorna a tangente de x (em radianos) Retorna o arco seno de x (em radianos) Retorna o arco cosseno de x (em radianos) Retorna o arco tangente de x (em radianos) Retorna o arco tangente (y/x) Retorna a hipotenusa do tringulo

EXEMPLO
print np.sin(.5) #imprime 0.479425538604 print np.cos(.5) #imprime 0.87758256189 print np.tan(.5) #imprime 0.546302489844 print np.arcsin(.5) #imprime 0.523598775598 print np.arccos(.5) #imprime 1.0471975512 print np.arctan(.5) #imprime 0.463647609001 print np.arctan2(1,2) #imprime 0.463647609001 print np.hypot(3,4) #imprime 5.0

2 - Funes logartmicas e exponenciais:

FUNES np.log(x,base) np.log10(x) np.log(x) np.exp(x) np.sqrt(x)

DESCRIO
Clculo de logaritmo com qualquer base Clculo de logaritmo com base 10 Clculo de logaritmo natural (ln) Retorna e**x Retorna a raiz quadrada de x

EXEMPLOS
print np.log(8,2) #imprime 3.0 print np.log10(10) #imprime 1.0 print np.log(2.71) #imprime 0.996948634892 print np.exp(1) #imprime 2.71828182846 print np.sqrt(81) #imprime 9.0

25

3 - Constantes, converses e outras:

FUNES np.e np.pi np.degrees(x) np.radians(x) np.factorial(x)

DESCRIO
Retorna o valor de e Retorna o valor de pi Converte x de radianos para graus Converte x de graus para radianos Retorna o fatorial de x

EXEMPLOS
print np.e #imprime 2.71828182 print np.pi #imprime 3.141592 print np.degrees(0.523598...) #imprime 30.0 print np.radians(30) #imprime 0.523598... print np.factorial(10) #imprime 3628800

4 - Funes hiperblicas:

FUNO
np.sinh(x) np.cosh(x) np.tanh(x) np.arcsinh(x) np.arccosh(x) np.arctanh(x)

DESCRIO
Retorna o seno hiperblico de x Retorna o cosseno hiperblico de x Retorna a tangente hiperblica de x Retorna o inverso do seno hiperblico de x Retorna o inverso do cosseno hiperblico de x Retorna o inverso da tangente hiperblica de x

EXEMPLO
print np.sinh(2) #imprime 3.62686040785 print np.cosh(2) #imprime 3.76219569108 print np.tanh(2) #imprime 0.964027580076 print np.arcsinh(.2) #imprime 0.198690110349 print np.arccosh(2) #imprime 1.31695789692 print np.arctanh(.2) #imprime 0.202732554054

Potrebbero piacerti anche