APÊNDICE F Introdução aos módulos math, numpy, pandas e matplotlib.pyplot da linguagem Python.

Documentos relacionados
Fundamentos de Programação. Turma CI-240-EST. Josiney de Souza.

Murilo F. Tomé ICMC-USP

Introdução ao MATLAB. Afonso Paiva ICMC-USP

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA AMBIENTE DE PROGRAMAÇÃO. Prof. Dr. Daniel Caetano

INTRODUÇÃO AO MATLAB - PARTE 2

Introdução à Linguagem C

Introdução ao uso do aplicativo Gnuplot

Vetores, Matrizes e Gráficos

Algoritmos RESUMO - LINGUAGEM C

. (1) Se S é o espaço vetorial gerado pelos vetores 1 e,0,1

Introdução à Linguagem C. Adaptado de Deise Saccol

Programação Imperativa. Lição n.º 3 Operações aritméticas

Introdução ao Scilab

Álgebra Linear. Professor Alessandro Monteiro. 1º Sábado - Matrizes - 11/03/2017

INTRODUÇÃO AO AMBIENTE DE PROGRAMAÇÃO MATLAB

Características Básicas

Aula de hoje. Python para disciplinas básicas. Computação científica. Introdução. Álgebra Linear. Álgebra linear

Matlab Noções introdutórias. Roteiro para aula

Parte 3 - Produto Interno e Diagonalização

Introdução a Linguagem C

Algoritmos e Técnicas de Programação. Professora: Luciana Faria

Introdução à Linguagem C. Adaptado de slides das Profas. Patrícia Jaques, Mônica Py, Deise Saccol e Vania Bogorny

Aula 08: Repetição (Parte 3)

étodos uméricos SISTEMAS DE EQUAÇÕES LINEARES (Continuação) Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

Introdução à Linguagem C

CURSO INTRODUÇÃO AO R

Declarações. C diferencia letras maiúsculas de minúsculas! int n, N; n é diferente de N!

SCILAB. Software livre para cálculo numérico e simulação de sistemas físicos Utilizado nas áreas de:

Introdução ao MATLAB. Parte 3

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Algoritmos Numéricos 2 a edição

Álgebra Linear I - Aula Forma diagonal de uma matriz diagonalizável

Álgebra Linear I - Lista 11. Autovalores e autovetores. Respostas. 1) Calcule os autovalores e autovetores das matrizes abaixo.

Programação de Computadores III

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

. Repare que ao multiplicar os vetores (-1,1) e

Programação de Computadores:

Programação de Computadores III

Aula 02 - Introdução ao Scilab (p1)

Álgebra Linear I - Aula 20

Resolução de Sistemas Lineares. Ana Paula

Referências principais (nas quais a lista foi baseada): 1. G. Strang, Álgebra linear e aplicações, 4o Edição, Cengage Learning.

Resolução de Sistemas Lineares. Ana Paula

Questão 1 Exemplo de execução 1 (com N=6): Exemplo de execução 2 (com N=4):

MATLAB EM VIBRAÇÕES MECÂNICAS

Geovan Tavares, Hélio Lopes e Sinésio Pesco PUC-Rio Departamento de Matemática Laboratório Matmidia

Notas para o Curso de Algebra Linear Il Dayse Haime Pastore 20 de fevereiro de 2009

6. OPERADORES E ARITMÉTICA

Prof. Dr. Marco Antonio Leonel Caetano

Inteligência Computacional Aula 2 - Introdução ao MatLab Graduação /2

Recursão PROGRAMAÇÃO EM LÓGICA. Recursão. Sonho Recursivo. Recursão. Recursão. Linguagem Prolog Parte IV

Cálculo Numérico BCC760

Introdução ao Matlab. Rodrigo Soares de Abreu

Python - Matrizes e vetores. George Sand

Introdução à Programação / Programação I

Introdução à Computação

Informática no Ensino da Matemática

Laboratório de Simulação Matemática. Parte 6 2

Tópicos de Álgebra Linear Verão 2019 Lista 4: Formas de Jordan

Álgebra Linear. Professor Alessandro Monteiro. 1º Sábado - Matrizes - 11/03/2017

Elementos de Matemática Avançada

Minicurso de MATLAB. Programa de Educação Tutorial de Engenharia Elétrica. lmax Rodrigues. lcaroline Pereira. lnayara Medeiros

Aprender a utilizar o aplicativo Gnuplot para fazer gráficos

Revisão: Matrizes e Sistemas lineares. Parte 01

Aula 7. Noções Básicas de Octave

aula6 Curvas de Hermite 2016/2 IC / UFF Criadas por Charles Hermite ( )

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

public void setdata(data d) { data = d;

étodos uméricos SISTEMAS DE EQUAÇÕES LINEARES (Continuação) Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

Sistemas Lineares - Decomposição LU

Transcrição:

APÊNDICE F Introdução aos módulos math, numpy, pandas e matplotlib.pyplot da linguagem Python. Módulo math Math é uma biblioteca que acompanha os interpretadores Python, não embutida no core, precisando apenas ser importada. Provê acesso, entre outras, às seguintes funções matemáticas: acos(x): Retorna o arco em radianos cujo cosseno é x. asin(x): Retorna o arco em radianos cujo seno é x. atan(x): Retorna o arco em radianos cuja tangente é x. ceil(x): Retorna o menor inteiro >= x cos(x): Retorna o cosseno de x radianos degrees(x): Converte um ângulo x de radianos para graus exp(x): Retorna e x fabs(x): Retorna o valor absoluto de x factorial(x): Retorna x! ou erro se x for negativo ou não inteiro floor(x): Retorna o maior valor inteiro <= x. gamma(x): Retorna a função Gamma de x. hypot(x, y): Retorna a distância euclidiana, x 2 + y 2 log10(x): Retorna log 10 x pow(x, y): Retorna x y (x elevado a y). radians(x): Converte um ângulo x de graus para radianos. sin(x): Retorna o seno de x radianos. sqrt(x): Retorna x tan(x): Retorna a tangente de x radianos e: Retorna 2.718281828459045 pi: Retorna 3.141592653589793

Módulo numpy NumPy é o pacote fundamental em computação científica em Python, contendo um objeto vetor n-dimensional (ndarray) de grande importância na construção de matrizes, além de operadores e transformadas sofisticados, métodos para integração com códigos em C/C++ e Fortran e métodos de álgebra linear sofisticados. Não acompanha o interpretador Python básico da PSF, precisando ser instalado e posteriormente importado. Possui uma gama de funções, classes e variáveis enorme (aproximadamente 590) sendo as mais importantes: array(list, tipo): Converte uma lista em uma lista altamente manipulável chamada de ndarray, todos os elementos devem ser de um mesmo tipo. abs(list): Retorna um ndarray com os respectivos valores absolutos diag(list): Retorna um ndarray 2-D com a diagonal principal sendo os valores da lista passada como argumento. dot(lista, listb): Retorna o produto escalar entre duas listas. eye(n): Retorna a matriz indentidade nxn floor(list): Retorna um ndarray com os respectivos valores arredondados para menos. identity(n): O mesmo que eye(n) max(list): Retorna o valor máximo de uma lista. min(list): Retorna o valor mínimo de uma lista. ones([n,m]): Retorna um ndarray nxm preenchido com o nr 1. prod(list): Retorna o produto entre os elementos de uma lista. size(list, eixo): Retorna o tamanho da lista no eixo especificado. sqrt(list): Retorna um ndarray com os respectivos valores tirados a raiz quadrada. sum(list): Retorna o somatório dos elementos de uma lista. trace(list): Retorna o traço de uma lista 2-D (matriz) quadrada. transpose(list): Retorna a transposta da lista 1-D ou 2-D passada. zeros([n,m]): Retorna um ndarray nxm preenchido com o nr 0. Do sub-módulo de algebra linear (numpy.linalg), alguns dos métodos mais importantes são: norm(list): Retorna a norma de uma lista 1-D ou 2-D

inv(list): Retorna um ndarray com a inversa de uma lista 2-D quadrada. solve(lista, listb): Retorna um ndarray com a solução de um sistema linear na forma A. x = B, lista é 2-D quadrada e listb é 1-D ou 2-D. det(list): Retorna o determinante de uma matriz quadrada. lstsq(lista, listb): Retorna a solução de um problema MMQ na forma A. x = B, lista é 2-D e listb é 1-D. eig(list): Retorna os autovalores e auto vetores de uma matriz quadrada. Interessante notar que NumPy tem uma função pronta para o problema MMQ (lstsq), a solução retorna um conjunto de ndarrays contendo o vetor dos parâmetros ajustado, a soma dos resíduos ao quadrado, posto da matriz de coeficientes e o um vetor contendo os valores singulares da matriz de coeficientes passada. Dado o exemplo abaixo tem-se: x + y = 3 + v 1 { 2x y = 1,5 + v 2 x y = 0,2 + v 3 1 1 A = [ 2 1], X = [ x 3 y ], b = [ 1,5], V = [ 1 1 0,2 A declaração dos vetores A e b como ndarrays seria: >>> import numpy as np >>> A=np.array([[1,1],[2,-1],[1,-1]], float) >>> b=np.array([3,1.5,0.2],float) A solução através das fórmulas de ajustamento em linguagem Python usando os métodos da inversa (inv), transposta (transpose), produto escalar (dot) e norma (norm) da biblioteca Numpy seria: >>> Xa=np.linalg.inv(A.transpose().dot(A)) >>> Xa=Xa.dot(A.transpose()).dot(b) >>> La= A.dot(Xa) >>> V=La-b >>> phi = np.linalg.norm(v) >>> print Xa,'\n',La,'\n',V,'\n',phi*phi [ 1.51428571 1.44285714] [ 2.95714286 1.58571429 0.07142857] [-0.04285714 0.08571429-0.12857143] 0.0257142857143 v 1 v 2 v 3 ]

A mesma solução melo método MMQ (lstsq) e produto escalar (dot) também de Numpy seria: >>> Xa=np.linalg.lstsq(A,b)[0] >>> La=A.dot(Xa) >>> V=La-b >>> phi=np.linalg.lstsq(a,b)[1] >>> print Xa,'\n',La,'\n',V,'\n',phi [ 1.51428571 1.44285714] [ 2.95714286 1.58571429 0.07142857] [-0.04285714 0.08571429-0.12857143] [ 0.02571429] Não convém usar este último em ajustamento, já que não é possível incluir os pesos de cada observação. Usar o primeiro parece válido, com a ressalva do uso da função inversa (inv). O manual de referência NumPy explica a obtenção da inversa. Na verdade ela é consequência da função solve no problema A n n. X n n = I n n, onde X assume o valor da inversa da matriz quadrada A. No método solve, este manual faz referência ao método de solução de sistema lineares por redução de linhas (eliminação Gaussiana ou de Gauss). De fato, este método é o mais utilizado em sistemas. Ele consiste em mudar a forma do problema passando de A.x = b para U.x = c, onde U é uma matriz triangular superior (upper), em seguida para D.x=d, onde D é uma matriz diagonal e então para I.x=s, onde I é a matriz identidade e s é a solução do problema. proporcional a n 3 A inversa por este método (A n n. X n n = I nn ) possui custo computacional na fase de decomposição e proprocional a n 2 para cada vetor na fase de solução sendo portanto consideravelmente mais custoso que uma solução A n n. x n 1 = b n 1 (KIUSALAAS 2013) Abaixo, um exemplo de como utilizar a função solve do módulo NumPy, para o problema da inversa: >>> A=[[1,2],[2,-1]] >>> print numpy.linalg.inv(a) >>> print numpy.linalg.solve(a,np.eye(2)) [[ 0.2 0.4] [ 0.4-0.2]] [[ 0.2 0.4] [ 0.4-0.2]]

Em problemas de ajustamento, executa-se a inversa nas fórmulas: Xa = (A T. P. A) 1 A T. P. Lb Xa = σ 0 2 (A T. P. A) 1 Sabendo que A T é (uxn), P é (nxn) e A é (nxu), onde n é o número de observações e u é o número de parâmetros, o termo da inversa fica: A T n u. n Pn. A u u n = N u Decorrendo que a inversa possuirá custo computacional proporcional a (u 3 + u 2 ), consequentemente limitando a quantidade de parâmetros a serem ajustados. Módulo pandas Pandas é um rápido e eficiente organizador e manipulador de dados. Possui um objeto sofisticado capaz de organizar e incluir rótulos para a linhas e colunas de uma tabela (matriz, lista ou ndarray). No escopo de ajustamento sua classe mais importante é a DataFrame, não sendo necessários outras funções. Ele contribui na fase de desenvolvimento com o objetivo de melhorar a visualização das matrizes. Tomando como exemplo a matriz dos coeficientes A de uma rede de nivelamento, exibindo diretamente em comparação com a exibição após ser convertido em objeto da classe DataFrame de Pandas fica: >>> import pandas >>> A=[[1,0,0],[0,1,0],[-1,1,0],[0,0,1],[0,-1,1],[1,0,-1]] >>> print 'Matriz A=\n',A >>> lin=['eq1:','eq2:','eq3:','eq4:','eq5:','eq6:'] >>> col=['hi','hii','hiii'] >>> print u'matriz A com r\u00f3tulos=' >>> print pandas.dataframe(a,index=lin,columns=col) Matriz A= [[1,0,0],[0,1,0],[-1,1,0],[0,0,1],[0,-1,1],[1,0,-1]] Matriz A com rótulos= hi hii hiii Eq1: 1 0 0 Eq2: 0 1 0 Eq3: -1 1 0 Eq4: 0 0 1 Eq5: 0-1 1 Eq6: 1 0-1 Eq6: 1 0-1

Módulo matplotlib.pyplot Provê um framework para plotagem muito parecido com o de MatLab. Algumas de suas funções importantes são: imread( arquivo.png'): importa imagens PNG figure(n): invoca uma nova janela onde poderá ser plotada a n- ésima figura title( string ): define o título da figura atual em que se está trabalhando imshow(img, cmap= mapa_de_cor ): plota a matriz img na figura atual, cmap é opcional e define um mapa de cores caso a matriz não seja do tipo byte. Savefig( nome_da_figura.jpg ): Salva a figura atual com o nome desejado Show(): permite a visualização das janelas de figuras criadas subplot(nrows, ncols, plot_number): define um grid de subplotagens [nrows ncol] e onde deve ser posicionada a plotagem atual plot_number. subplots(): permite várias plotagens em uma única figura plot(x, Y): plota os pares ordenados (x,y) dos vetores X e Y respectivamente fill_between(x, y1, ymax, facecolor= nome_da_cor ): preenche de cor os pontos do vetor X desde y1 até ymax. axvline(pos_x, color= nome_da_cor, linewidth='n'): cria uma linha reta vertical na plotagem atual na posição indicada por pos_x de cor e espessura indicada xlabel( rotulo do eixo X ): define o rotulo das abcissas ylabel( rotulo do eixo Y ): define o rótulo das ordenadas