Baixe o app para aproveitar ainda mais
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
Compartilhar