Buscar

ApostilaCookbook

Prévia do material em texto

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
2
SUMÁRIO
1. OPERADORES ............................................................................................................. 3
2. ESTRUTURAS.............................................................................................................. 5
3. DEFININDO FUNÇÕES............................................................................................... 8
4. MANIPULAÇÃO DE ARQUIVOS DE DADOS........................................................... 9
5. IMPRESSÃO FORMATADA ..................................................................................... 12
6. VETORES E MATRIZES .............................................................................................. 17
7. GRÁFICOS COM MATPLOTLIB .............................................................................. 19
8. FUNÇÕES MATEMÁTICAS...................................................................................... 24
3
1. OPERADORES
OPERADORES ARITMÉTICOS
OPERADORES DESCRIÇÃO EXEMPLOS
+ Soma 2 + 2 # Imprime 4
- Subtração 5 – 2 # Imprime 3
* Multiplicação 5 * 5 # Imprime 25
/ Divisão 5.0 / 2.0 # Imprime 2.5
// Divisão Truncada 12.356 // 2 # Imprime 6.0
% Retorna o ‘resto da 
divisão’
10 % 3 # Imprime 1
** Exponenciação 2 ** 3 # Imprime 8
pow(a,b) Exponenciação pow(2, 3) # Imprime 8
+= Soma e atribui PARA i = 0
i+= 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 resultado
i//=4 # Divide 6 por 4 e 
atribui parte inteira para i. 
(i =1)
%= Divide e atribui resto 
da divisão
PARA i = 36
i%= 10 # Divide 36 por 10 e 
atribui resto para i. (i = 6)
**= Eleva número e atribui i**= 2 # Eleva 6 ao 
quadrado e atribui para 
i. (i = 36)
4
OPERADORES LÓGICOS
OPERADORES DESCRIÇÃO EXEMPLOS
> Maior 1 > 2 # False 2
< Menor 8 < 5 # False
>= Maior igual 10 >= 1 # True
<= Menor igual 5 <= 5 # True
== Igual 2 == 3 # False
not Não not 5 < 3 # True
!= Diferente 2 != 1 # True
and E a and b
or OU a or b
5
2. ESTRUTURAS
1⁰ - ESTRUTURA DE DECISÃO (if, elif, else):
Forma Geral if condição: # bloco de código
elif condição:
 # 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 REPETIÇÃO (while):
Forma Geral while condição: # bloco de código
Exemplo 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
6
3⁰ - ESTRUTURA DE REPETIÇÃO (for):
Forma Geral for variável in seqüência: # bloco de código
Exemplo 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 "não é um 
negativo"
4⁰ - ESTRUTURA DE CONTROLE (break):
Descrição O comando ‘quebra’ um laço 
(pode ser o laço for ou while)
Exemplo i = 0
while i < 10:
 if i == 5:
 break
 else:
 print i
 i += 1
# imprime 0,1,2,3,4
7
5⁰ - ESTRUTURA DE CONTROLE (continue):
Descrição O comando passa para o 
início do laço.
Exemplo for i in range (10):
 if i == 5:
 continue
 print i
# imprime 0,1,2,3,4,6,7,8,9
8
3. DEFININDO FUNÇÕES
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 4
EXEMPLO 2 def soma(a, b):
 return a + b
print soma(2, 5) #imprime 7
EXEMPLO 3 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
EXEMPLO 4 def proximos(a):
 return a - 1, a + 1
ant, seg = proximos(10)
print "anterior:", ant # imprime 9
print "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 40
EXEMPLO 7 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
9
4. MANIPULAÇÃO 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 código 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 variável
# conteúdo.
# A variável conteúdo é 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 números é preciso dividir a variável 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
SAÍDA 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. IMPRESSÃO FORMATADA
1⁰ - %f:
Forma Geral Print “%espaço.casasf” % número
Exemplo 1 a = math.pi
print " %8.5f" % a
# imprime 3.14159
(número PI com 8 espaços e 5 casas 
decimais)
Exemplo 2 a = math.pi
print " %.5f" % a
# imprime 3.14159
(número PI com 5 casas)
Exemplo 3 a = math.pi
print " %.f " % a
# imprime 3
(número PI truncado)
Exemplo 4 a = math.pi
print " %f " % a
# imprime 3.141593
(número PI em ponto flutuante com 6 casas)
13
2⁰ - %d:
Forma Geral Print “%espaço.d” % número
Exemplo 1 a = math.pi
print " %8.d" % a
# imprime 3
(número PI com 8 espaços e parte inteira)
Exemplo 2 a = math.pi
print " %8d" % a
# imprime 3
(número PI com 8 espaços e parte inteira)
Exemplo 3 a = math.pi
print " %d" % a
# imprime 3
(número PI parte inteira)
14
3⁰ - %e:
Forma Geral Print “%espaço.casase” % número
Exemplo 1 a = 12345.6789
print " %8.4e" % a
# imprime 1.2346e+04
(número com 8 espaços e 4 casas decimais)
Exemplo 2 a = 12345.6789
print " %.4e" % a
# imprime 1.2346e+04(número com 4 casas)
Exemplo 3 a = 12345.6789
print " %.e " % a
# imprime 1e+04
(número truncado)
Exemplo 4 a = 12345.6789
print " %e" % a
# imprime 1.234568e+04
(número em ponto flutuante com 6 casas)
15
4⁰ - %g:
Forma Geral Print “%espaço.númerosg” % número
Exemplo 1 a = 12345.6789
print " %8.2g" % a
# imprime 1.2e+04
(número com 8 espaços e 2 números)
Exemplo 2 a = 12345.6789
print " %8.3g" % a
# imprime 1.23e+04
(número com 8 espaços e 3 números)
Exemplo 3 a = 12345.6789
print " %.4g" % a
# imprime 1.234e+04
(representação com 4 números)
Exemplo 4 a = 12345.6789
print " %.g " % a
# imprime 1e+04
(número truncado)
Exemplo 5 a = 12345.6789
print " %g" % a
# imprime 12345.7
(ponto flutuante com 6 números)
Exemplo 6 a = -.000001235
print " %g" % a
# imprime -1.235e-06
(ponto flutuante)
16
5⁰ - %s:
Forma Geral Print “%espaço.caracters” % (número ou palavra)
Exemplo 1 a = “python”
print " %8.2s" % a
# imprime py
(palavra com 8 espaços e 2 caracteres)
Exemplo 2 a = 100
print " %8.2s" % a
# imprime 10
(número com 8 espaços e 2 caracteres)
Exemplo 3 a = 2.235
print " %.3s" % a
# imprime 2.2
(número com 3 caracteres)
Exemplo 4 a = “python”
print " %10s" % a
# imprime python
(toda palavra e com 10 espaços)
Exemplo 5 a = 12345.6789
print " %s" % a
# imprime 12345.6789
(todo o número)
17
6. VETORES E MATRIZES
*OBS: import numpy as np
CÓDIGO RESULTADO DO CÓDIGO
import numpy as np
# Cria uma lista
lista = [ 1, 2, 3, 4, 5 ]
# Uma lista não é um vetor!
# Crio um vetor usando Numpy:
x = np.array( lista )
# Imprimo o vetor x
print "Vetor x: ", x
nx = 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 10
v = 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 vetores
u = 2*v
print "\n2*v: ",u
- IMPRIME:
2*v: [ 0. 10. 20.]
# Manipulaç ões com vetores
u = v**2
print "\nv**2: ",u
- IMPRIME:
v**2: [ 0. 25. 100.]
import numpy as np
# Manipulaç ões com vetores
u = np.sin( v )
print "\nsin(v): ",u
- IMPRIME:
sin(v): [ 0. -0.95892427 -0.54402111]
# Manipulaç ões com vetores
u = v + v**2 + v**3
print "\nv + v**2 + v**3: ",u
- IMPRIME:
v + v**2 + v**3: [ 0. 155. 1110.]
18
*OBS: MATRIZES SÃO 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.]]
# 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. GRÁFICOS COM MATPLOTLIB
O código:
import numpy as np
from pylab import *
# 1 - Criando um conjunto de dados, com espaçamento muito pequeno
x = np.linspace(-5, 5, 1000)
y = np.exp(-x*x) # a função e^(-x*x), poderia ser qualquer outra função 
# 2 - Crio um conjunto de dados, com espaçamento grande
X = np.linspace(-5, 5, 11 )
Y = np.exp(-X*X)
# 3 - Plotando os pontos com espaçamento pequeno como uma curva contínua
plot( x, y, 'k-', label=u'Função $e^{-x^2}$', linewidth = 1)
# 4 - Ploto os pontos com espaçamento 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, além do título do gráfico
xlabel(u"Eixo x")
ylabel(u"Eixo y")
title(u"Gráfico de Exemplo")
# 7 - Limites do gráfico
xlim(-6,6)
ylim(-0.2,1.2)
# 8 - Grade
grid() # grid (True) – Aparece, grid (False) – Sem Grade
# 9 - Mostra o gráfico na tela
show()
20
1 – linha contínua:
# 3 - Plotando os pontos com espaçamento pequeno como uma curva contínua
plot( x, y, 'k-', label=u'Função $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 Sólida
'--' Linha Tracejada
'-.' Linha Traço - Ponto
':' Linha Pontilhada
21
Exemplos:
 → plot( x, y, 'c-', label=u'Função $e^{-x^2}$', linewidth= 1 )
→ plot( x, y, 'b --', label=u'Função $e^{-x^2}$', linewidth = 2 )
→ plot( x, y, 'y -.', label=u'Função $e^{-x^2}$', linewidth = 3 )
→ plot( x, y, 'k:', label=u'Função $e^{-x^2}$', linewidth = 1 )
22
2 – Plotando os Marcadores (Pontos):
# 4 - Ploto os pontos com espaçamento 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
'.' Ponto
'*' Estrela
'o' Circulo
'v' Triângulo para baixo
'^' Triângulo para cima
'<' Triângulo para esquerda
'>' Triângulo para direita
's' Quadrado
'p' Pentágono
'h' Hexágono 
'H' Hexágono 2
'+' Mais
'x' X
Exemplo:
→ plot( x, y, 'k-', label=u'Função $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 apareça')
EXEMPLOS
Código Escrito Código Numérico Aplicação Localização
‘best’ 0
legend(loc = ‘best’)
OU
legend(loc = 0 )
Canto superior Direito
‘upper right’ 1
legend(loc = ‘upper right’)
OU
legend(loc = 1)
Canto superior Direito
‘upper left’ 2
legend(loc = ‘upper left’)
OU
legend(loc = 2)
Canto superior Esquerdo
‘lower left’ 3
legend(loc = ‘lower left’)
OU
legend(loc = 3)
Canto inferior Esquerdo
‘lower right’ 4
legend(loc = ‘lower right’)
OU
legend(loc = 4)
Canto inferior Direito
‘right’ 5
legend(loc = ‘right’)
OU
legend(loc = 5)
Canto direito
‘center left’ 6
legend(loc = ‘center left’)
OU
legend(loc = 6)
Centro Esquerdo
‘center right’ 7
legend(loc = ‘center right’)
OU
legend(loc = 7)
Centro Direito
‘lower center’ 8
legend(loc = ‘lower center’)
OU
legend(loc = 8)
Centro Inferior
‘upper center’ 9
legend(loc = ‘upper center’)
OU
legend(loc = 9)
Centro Superior
‘center’ 10
legend(loc = ‘center’)
OU
legend(loc = 10)
Centro
24
8. FUNÇÕES MATEMÁTICAS
*OBS: import numpy as np
1⁰ - Funções trigonométricas:
FUNÇÃO DESCRIÇÃO EXEMPLO
np.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 triângulo
print np.hypot(3,4) 
#imprime 5.0
2⁰ - Funções logarítmicas e exponenciais:
FUNÇÕES DESCRIÇÃO EXEMPLOS
np.log(x,base) Cálculo de logaritmo 
com qualquer base
print np.log(8,2)
#imprime 3.0
np.log10(x) Cálculo de logaritmo 
com base 10
print np.log10(10)
#imprime 1.0
np.log(x) Cálculo 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, conversões e outras:
FUNÇÕES DESCRIÇÃO EXEMPLOS
np.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...)
#imprime30.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⁰ - Funções hiperbólicas:
FUNÇÃO DESCRIÇÃO EXEMPLO
np.sinh(x) Retorna o seno
hiperbólico de x 
print np.sinh(2)
#imprime 3.62686040785
np.cosh(x) Retorna o cosseno
hiperbólico de x 
print np.cosh(2)
#imprime 3.76219569108
np.tanh(x) Retorna a tangente
hiperbólica de x
print np.tanh(2)
#imprime 0.964027580076
np.arcsinh(x) Retorna o inverso do 
seno hiperbólico de x 
print np.arcsinh(.2) 
#imprime 0.198690110349
np.arccosh(x) Retorna o inverso do 
cosseno hiperbólico 
de x 
print np.arccosh(2) 
#imprime 1.31695789692
np.arctanh(x) Retorna o inverso da 
tangente hiperbólica 
de x
print np.arctanh(.2) 
#imprime 0.202732554054

Continue navegando