0% found this document useful (0 votes)
71 views73 pages

Minicurso Python Final2

Uploaded by

Tiago Vinicíus
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
71 views73 pages

Minicurso Python Final2

Uploaded by

Tiago Vinicíus
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

V Colóquio de Matemática

da Região Nordeste

PYTHON
PARA MATEMÁTICOS
ANDRÉA LINS E LINS SOUZA
PYTHON PARA MATEMÁTICOS
Python para matemáticos
Copyright © 2023 Andréa Lins e Lins Souza
Direitos reservados pela Sociedade Brasileira de Matemática
A reprodução não autorizada desta publicação, no todo ou em parte,
constitui violação de direitos autorais. (Lei 9.610/98)

Sociedade Brasileira de Matemática


Presidente: Paolo Piccione Diretores: Walcy Santos
Vice- Presidente: Jaqueline Godoy Mesquita Jorge Herbert Soares de Lira
Daniel Gonçalves
Editor Executivo Roberto Imbuzeiro
Ronaldo Garcia
Assessor Editorial
Tiago Costa Rocha
Capa: Pablo Diego Regino
Distribuição e vendas
Sociedade Brasileira de Matemática
Estrada Dona Castorina, 110 Sala 109 - Jardim Botânico
22460-320 Rio de Janeiro RJ
Telefones: (21) 2529-5073
http://www.sbm.org.br / email:[email protected]

ISBN (eBook) 978-85-8337-216-5

      


        

Souza, Andréa Lins e Lins


  ! "!# $%
&!'()  * +,-
  e .)/01+2%
.3. 2 ! 4 
 05!6+!'()  7
 8
2 3! *9 0
:.2,;<== =<

04 >) 0


5 *)**6+)7
:0?@)!:::0. 0

   
     !  ! "

04  

! A/ !2 /2 3!  B2-;


V Colóquio de Matemática
da Região Nordeste

PYTHON
PARA MATEMÁTICOS
ANDRÉA LINS E LINS SOUZA

1ª EDIÇÃO
2023
RIO DE JANEIRO
.

Para o meu amado filho Henrique!


Sumário

Prefácio v

1 Introdução 1

2 Configurando o Python 3
2.1 Verificando a instalação do Python . . . . . . . . . . . . . . . . 3
2.2 Acessando o Python . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.1 Via Terminal . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.2 Via IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.3 Via Smartphone . . . . . . . . . . . . . . . . . . . . . . . 7
2.2.4 Interpretador online . . . . . . . . . . . . . . . . . . . . 7

3 Comandos e operações básicas 9


3.1 Tipos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.1 Inteiros (int) . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.2 Booleano (bool ) . . . . . . . . . . . . . . . . . . . . . . 10
3.1.3 Ponto flutuante (float) . . . . . . . . . . . . . . . . . . . 10
3.1.4 Complexo (complex ) . . . . . . . . . . . . . . . . . . . . 10
3.1.5 String (str ) . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.6 Listas (list) . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.7 Tuplas (tuple) . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1.8 Dicionário (dict) . . . . . . . . . . . . . . . . . . . . . . 16
3.2 Operadores Aritméticos . . . . . . . . . . . . . . . . . . . . . . 16
3.3 Operadores de Atribuição . . . . . . . . . . . . . . . . . . . . . 19
Andréa Lins e Lins Souza

3.4 Funções e Classes . . . . . . . . . . . . . . . . . . . . . . . . . . 23


3.4.1 Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.4.2 Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.5 Instruções compostas . . . . . . . . . . . . . . . . . . . . . . . . 30
3.5.1 If . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.5.2 For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.5.3 While . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.6 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4 O módulo Math 43
4.1 Funções piso e teto . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2 Logaritmo e Exponencial . . . . . . . . . . . . . . . . . . . . . . 45
4.3 Funções trigonométricas . . . . . . . . . . . . . . . . . . . . . . 46
4.4 Aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.4.1 Teorema de Pitágoras . . . . . . . . . . . . . . . . . . . . 47

5 O pacote Numpy 49
5.1 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.1.1 Operações básicas usando arrays . . . . . . . . . . . . . 51
5.2 Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.3 Aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.3.1 Notação científica . . . . . . . . . . . . . . . . . . . . . . 54
5.3.2 Calculando integrais . . . . . . . . . . . . . . . . . . . . 54
5.3.3 Solução de sistemas lineares . . . . . . . . . . . . . . . . 55

6 O pacote Matplotlib 57

Referências 63
Prefácio

Esse texto foi preparado para ser utilizado no V Colóquio de Matemática da


Região Nordeste, promovido pela Sociedade Brasileira de Matemática (SBM),
que ocorreu, de forma presencial, entre os dias 07 e 11 de Novembro de 2022
em João Pessoa-PB, Brasil, no Departamento de Matemática da Universidade
Federal da Paraíba (UFPB). O evento possui como público-alvo alunos de
graduação e de pós-graduação, professores da Educação Básica, professores
e/ou pesquisadores do Ensino Superior na área de Matemática. No entanto,
esse texto poderá ser utilizado por qualquer um que tenha interesse pelo tema.
O minicurso foi concebido com o intuito de mostrar aos alunos, professores
e profissionais da área de matemáticos como é possível utilizar uma ferramenta
computacional simples e poderosa para facilitar o trabalho, seja nos estudos,
auxiliando no processo de ensino/aprendizagem em sala de aula, nas pesquisas
ou em outras aplicações.
A linguagem de programação Python [1] foi escolhida por ser uma lingua-
gem de fácil acesso e aprendizagem rápida, além de ser uma linguagem de alto
nível, ou seja, mais próxima da linguagem humana, o que facilita bastante a
sua compreensão e aplicações.

JOÃO PESSOA, NOVEMBRO de 2022

Andréa Lins e Lins Souza


1
Introdução

As linguagens de programação possibilitam ao programador escrever co-


mandos e algoritmos para controlar o comportamento, tanto físico quanto ló-
gico, de um computador. Para tal, utiliza-se uma série de instruções inerentes
à linguagem ou conjunto de linguagens adotadas. Cada linguagem de progra-
mação tem o seu propósito, e a melhor linguagem depende do tipo de problema
que se deseja resolver e das disponibilidades de hardware.
Em um contexto geral, a matemática e as linguagens de programação estão
intimamente relacionadas. Os computadores operam em sistema binário e
a linguagem de programação é a responsável por estabelecer a ligação entre
o sistema binário e o sistema decimal, comumente utilizado na matemática.
Sendo assim, a relação entre a matemática e a programação tem uma natureza
essencialmente lógica e exata.
No âmbito da Educação Básica no Brasil, foi instituída em 2017 a Base Na-
cional Comum Curricular (BNCC) [5], a qual explicita os objetivos de apren-
dizagem e desenvolvimento a serem observados no aluno ao longo das etapas e
suas respectivas modalidades. Composta por dez competências gerais, a BNCC
traz o ensino de linguagens de programação, além do domínio de uso de algo-
ritmos e análise de dados, como atividades da competência de número cinco,
denominada Cultura Digital. Essa competência reconhece que a tecnologia tem
papel fundamental na formação do aluno.
Sendo assim, atividades como as propostas na BNCC, que envolvem lin-
guagens de programação e uso de algoritmos, podem e devem ser inseridas nas
aulas de matemática para auxiliar no processo de ensino/aprendizagem com o
intuito de melhorar o desempenho dos alunos e prepará-los ainda mais para as

1
2 Andréa Lins e Lins Souza

demandas dos tempos atuais.


Nesse trabalho, a linguagem de programação Python [1] foi adotada para
ser apresentada aos profissionais da área da matemática, por ser uma lingua-
gem versátil, acessível e mais próxima da linguagem humana, ou seja, de alto
nível. Além disso, o Python é uma linguagem interpretada, orientada a objeto,
de código aberto e com semântica dinâmica.
Criado em 2009 por Guido van Rossum, em 2014 o Python já tinha se
tornado uma linguagem muito popular nos cursos introdutórios de ciência
da computação das principais universidades americanas [2] e, atualmente, ele
encontra-se na primeira posição dentre as linguagens de programação mais uti-
lizadas em 2022 em diversos rankings internacionais, como o IEEE Spectrum’s
[3] e o Tiobe index [4].
O Python possui diversas aplicações, como desenvolvimento web, desen-
volvimento de interfaces gráficas de usuário (GUI), administração de sistemas,
aplicações científicas e numéricas, ciência de dados e tudo o que há de mais
recente na área tecnológica, como inteligência artificial, big data, internet das
coisas, etc. Ele é utilizado por atuais gigantes da tecnologia como Google,
Facebook, Instagram, Spotify, Netflix, Dropbox, dentre outras, além de ser
muito utilizada por pesquisadores de importantes centros de pesquisas.
Nesse contexto, o objetivo principal desse trabalho é apresentar a linguagem
de programação Python sob um ponto de vista matemático, para que a mesma
possa ser utilizada por professores, alunos e pesquisadores dessa área ou por
qualquer pessoa que esteja estudando esse tema e/ou tenha interesse no mesmo.
O texto está organizado da seguinte forma: No Capítulo 2 será feita uma
breve descrição sobre como configurar e acessar o Python no computador,
smartphone e online. Os comandos e operações básicas com os dados do
Python serão vistos no Capítulo 3, o qual ainda traz as definições de funções,
classes e instruções compostas. Os Capítulos 4, 5 e 6 apresentam, respectiva-
mente, o módulo Math, o pacote Numpy e o pacote Matplotlib.
2
Configurando o Python

Esse capítulo descreve brevemente como configurar o Python para utilizá-lo


em um computador ou smartphone.
Nesse trabalho as atividades foram desenvolvidas utilizando a linguagem
de programação Python 3, bem como alguns de seus módulos e pacotes, como
o Math, o Numpy e o Matplotlib. Antes de começar a utilizar o Python
é preciso verificar se ele está instalado na sua máquina. Caso ele já esteja
instalado, pode-se, também, verificar a versão instalada.

2.1. Verificando a instalação do Python


Os sistemas operacionais Linux e macOS dispõem de uma versão do Python
pré-instalada. Usuários do macOS podem verificar a versão do Python insta-
lada ao acessar o terminal, após navegar pelo menu Aplicativos > Utilitários
> Terminal e digitar o comando:

python --version

No Linux, esse mesmo processo pode ser feito em uma janela do Terminal.
Já no Windows, é possível encontrar a versão do Python por meio do prompt
de comandos do próprio Windows, digitando o comando:

python -V

Caso o valor retornado seja inferior a 3 ou não retorne um valor, pode-se


tentar usar a palavra python3 ao invés de python nos comandos acima. Ou
seja, para macOS ou Linux:

3
4 Andréa Lins e Lins Souza

python3 --version

e no Windows:

python3 -V

Se ainda assim continuar a retornar um valor menor que 3, é preciso insta-


lar o Python 3 na máquina. Existem diversos tutorais na internet que ensinam
como instalar o Python de forma simples e eficiente. Pode-se acessar a docu-
mentação oficial do Python, disponível em [6], para verificar como instalar o
Python 3 em um sistema operacional específico.

2.2. Acessando o Python


Há diversas formas de acessar o Python em um computador, seja via ter-
minal, através de um ambiente de desenvolvimento integrado (IDE) específico
para o Python, ou através de editores de código. Também é possível acessar o
Python através de smartphones. A seguir, será detalhado como proceder para
usar o Python de acordo com a ferramenta adotada:

2.2.1. Via Terminal


Pode-se acessar o Python via Terminal de duas formas: acessar o inter-
pretador diretamente ou através de um arquivo com diversos comandos (ou
scripts).

Interpretador do Python
O interpretador do Python pode ser acessado via Terminal digitando o
comando python3, como ilustra a Figura 2.1.
Observe que, nesse sistema, ao digitar apenas python, ele estará utilizando
o Python 2.7.17, já que essa versão também encontra-se instalada no compu-
tador. No entanto, nem todos os exemplos desse minicurso irão funcionar para
essa versão do Python, principalmente devido à sintaxe de alguns comandos
que diferem entre o Python 2 e o Python 3.
Python para matemáticos 5

Figura 2.1: Usando o Python via Terminal no Linux.

Para sair do modo de interpretador do Python basta digitar simultanea-


mente a tecla ctrl e a letra d.

Arquivo .py

Uma outra forma de usar o Python via terminal é usar um editor de texto
e salvar todos os comandos em um arquivo com extensão .py. Depois, pode-se
acessá-lo através do terminal digitando o comando:
python3 /endereço-do-arquivo/nome-do-arquivo.py.

Exemplo 2.1. Considere o arquivo exemplo.py que foi armazenado no Desk-


top e tem os seguintes comandos:
1 # Importa o m ó dulo sys
2 import sys
3 # Imprime a vers ã o do Python instalada no sistema
4 print ( f " Python { sys . version } " )

Nesse caso, para usar o interpretador do Python 3 via terminal, eu iniciei


um terminal e digitei o comando:
python3 /home/andrea/Desktop/exemplo.py
como mostra a Figura 2.2.
6 Andréa Lins e Lins Souza

Figura 2.2: Usando o Python via Terminal no Linux através de um arquivo


exemplo.py.

Observe que, nesse caso, o endereço do arquivo foi /home/andrea/Desktop/,


no entanto ele pode variar de acordo com a máquina e o sistema utilizados.

Observação: Um comentário em Python é precedido pelo símbolo #. O co-


mando precedido pelo símbolo # não será levado em consideração na execução
do código. No Exemplo 2.1, as linhas 1 e 3 são exemplos de comentários.

2.2.2. Via IDE


Existem inúmeros IDEs para desenvolver programas em Python e o prin-
cipal benefício de um ambiente de desenvolvimento integrado é o aumento da
produtividade do desenvolvedor, pois eles reduzem o tempo de configuração do
sistema, que nem sempre é uma tarefa simples; além de padronizar o processo
de desenvolvimento. Como sugestão, pode-se usar a IDEs Jupyter e VS Code,
mas é possível escolher a mais adequada aos objetivos.

Jupyter
Dentre os IDEs mais utilizados com o Python está o Jupyter, devido à
sua versatilidade para aplicações em Ciência de Dados que utilizam grandes
conjuntos de dados. Além disso, o Jupyter pode servir como uma ferramenta
de demonstração, pois permite ver o resultado e editar o código ao mesmo
tempo. Ele também é muito usado para fins educacionais.
Para instalar o Jupyter abra um terminal e digite o comando:
Python para matemáticos 7

pip install notebook

Para abrir o notebook, dependendo do sistema operacional, digite um dos


comandos:
jupyter-notebook ou jupyter notebook.

Para mais detalhes, consulte a documentação oficial disponível em [8].

VS Code
O Visual Studio Code é um IDE criado pela Microsoft e é muito usada por
programadores de diversas linguagens de programação. Ele fornece suporte ao
Python por meio da extensão Microsoft Python. Ele é altamente customizá-
vel e possui um grandioso conjunto de extensões que podem ser usadas para
melhorar as funcionalidades padrão. Além das ferramentas de auto-completar
e integração direta com o GIT (sistema de controle de versões).
Para saber mais sobre o VS Code acesse a documentação oficial disponível
em [9].

2.2.3. Via Smartphone


Uma opção para utilizar o Python é usando o seu smartphone. Para isso,
em smartphones Android deve-se instalar os aplicativos Pydroid repository
plugin e Pydroid 3. Para iPhone, tem um aplicativo chamado Juno.

2.2.4. Interpretador online


Há diversas páginas que disponibilizam um interpretador do Python online
[12, 13], como também uma ferramenta do Google, o Colab [14], o qual é muito
utilizado para fins educacionais. Uma das desvantagens desse método é que
requer acesso à internet de forma contínua.
8 Andréa Lins e Lins Souza
3
Comandos e operações básicas

Nesse capítulo serão exibidos os tipos de dados, os comandos e operações


básicas com os dados do Python através de operadores aritméticos e de atribui-
ção. Por fim, serão definidas as funções, as classes e as instruções compostas
e algumas aplicações serão apresentadas.
O Python possui uma sintaxe relativamente simples, comparado a outras
linguagens de programação e é fácil de ser utilizado. No decorrer desse texto,
veremos como criar códigos em Python, com algumas aplicações em matemá-
tica.
Por ser uma linguagem dinamicamente tipada, não é necessário declarar ou
mudar o tipo da variável. Na seção seguinte, serão apresentados os tipos de
dados do Python.

3.1. Tipos de dados


O Python possui os seguintes tipos de dados padrão:

• Inteiro (int)

• Booleano (bool )

• Ponto Flutuante ou Decimal (float)

• Complexo (complex )

• String (str )

9
10 Andréa Lins e Lins Souza

• Lista (list)

• Tupla (tuple)

• Dicionário (dict)

Matematicamente falando, o Python possui três tipos numéricos: a) intei-


ros (int e bool ), ponto flutuante (float) e complexo(complex ), os quais serão
detalhadas nas subseções a seguir:

3.1.1. Inteiros (int)

São os números zero, positivos e negativos sem a parte fracionária. Eles


representam números em um intervalo ilimitado, sujeito apenas à memória
(virtual) disponível.

Exemplo 3.1. São exemplos de números inteiros: 1, 5, -3, 4, 0, -15, ...

3.1.2. Booleano (bool )

Dado lógico que pode assumir apenas dois valores, falso ou verdadeiro
(False ou True em Python) e na lógica computacional, podem ser conside-
rados como 0 ou 1.

3.1.3. Ponto flutuante (float)

São números reais positivos e negativos, com a parte fracionária denotada


pelo símbolo decimal . ou em notação científica E ou e.

Exemplo 3.2. Os números 1.2, 10.0, −3.55555, −79.0, 1.23e + 08,... são exem-
plos de floats.

3.1.4. Complexo (complex )

São representados por a + bj, onde a e b são números reais. É obrigatório


o uso da variável j para indicar que um número é complexo em Python.
Python para matemáticos 11

Exemplo 3.3. Alguns exemplos de números complexos: 3 + 2j, 5 − j, 4j,


1.0 + 2.5j, ...

Além dos tipos numéricos, temos ainda dados de outros tipos, os quais
serão vistos nas subseções abaixo:

3.1.5. String (str )

É um conjunto de caracteres dispostos numa determinada ordem, geral-


mente são utilizados para representar palavras, frases ou textos. Podem ser
delimitados por aspas simples, três aspas simples seguidas ou aspas duplas.

Exemplo 3.4. As variáveis nome, email e telefone são do tipo string:


1 nome = ’ Andr é a Lins ’
2 email = ’’’ andlins@lcg . ufrj . br ’’’
3 telefone = " 00009999 "
4

5 # print () é um comando para exibir um conte ú do na tela


6 print ( nome )
7 print ( email )
8 print ( telefone )
9

10 # Sa í da
11 Andr é a Lins
12 andlins@lcg . ufrj . br
13 00009999

3.1.6. Listas (list)

Agrupam um conjunto de elementos variados, podendo conter: inteiros,


floats, strings, outras listas e outros tipos. Elas são definidas utilizando-se
colchetes [ ] para delimitá-las e vírgulas para separar os elementos.

Exemplo 3.5. No código abaixo temos dois tipos de listas, uma de nomes
(strings) e uma de notas (floats e ints):
12 Andréa Lins e Lins Souza

1 lista_alunos = [ ’ Davi ’ , ’ Felipe ’ , ’ Henrique ’ , ’ Maria ’]


2 lista_notas = [9.5 , 7.5 , 10 , 8.0]
3

4 print ( lista_alunos )
5 print ( lista_notas )
6

7 # type () é um comando usado para saber o tipo do dado


8 print ( type ( lista_alunos ) )
9 # informa o tipo do dado na primeira posi ç ã o [0] da lista
10 print ( type ( lista_alunos [0]) )
11

12 print ( type ( lista_notas ) )


13 # informa o tipo do dado na terceira posi ç ã o [2] da lista
14 print ( type ( lista_notas [2]) )
15

16 # Sa í da
17 [ ’ Davi ’ , ’ Felipe ’ , ’ Henrique ’ , ’ Maria ’]
18 [9.5 , 7.5 , 10 , 8.0]
19 < class ’ list ’ >
20 < class ’ str ’ >
21 < class ’ list ’ >
22 < class ’ int ’ >

É possível alterar os dados existentes em uma lista, ou inserir novos dados.


A seguir veremos alguns exemplos usando os comandos append() e insert():
Exemplo 3.6. Usando o comando append() para acrescentar um elemento
no final da lista do Exemplo 3.5:
1 # O comando append () acrescenta um elemento no final da lista
2 lista_alunos = [ ’ Davi ’ , ’ Felipe ’ , ’ Henrique ’ , ’ Maria ’]
3 lista_notas = [9.5 , 7.5 , 10 , 8.0]
4

5 new_lista_alunos = lista_alunos
6 new_lista_alunos . append ( " Laura " )
7 print ( lista_alunos )
8 print ( new_lista_alunos )
9

10 new_lista_notas = lista_notas
11 new_lista_notas . append (7.0)
Python para matemáticos 13

12 print ( lista_notas )
13 print ( new_lista_notas )
14

15 # Sa í da
16 [ ’ Davi ’ , ’ Felipe ’ , ’ Henrique ’ , ’ Maria ’ , ’ Laura ’]
17 [ ’ Davi ’ , ’ Felipe ’ , ’ Henrique ’ , ’ Maria ’ , ’ Laura ’]
18 [9.5 , 7.5 , 10 , 8.0 , 7.0]
19 [9.5 , 7.5 , 10 , 8.0 , 7.0]

Observe que ao acrescentar um elemento no final da lista new_lista_alunos,


esse mesmo elemento também foi adicionado à lista lista_alunos. O mesmo
ocorre ns lista de notas. Caso deseje que os elementos da primeira lista não
sejam alterados, é preciso copiar os elementos da lista item por item.

Exemplo 3.7. Usando o comando append() para acrescentar cada elemento


no final da lista, individualmente:
1 lista_alunos = [ ’ Davi ’ , ’ Felipe ’ , ’ Henrique ’ , ’ Maria ’]
2 lista_notas = [9.5 , 7.5 , 10 , 8.0]
3 # len () fornece a quantidade de elementos da lista
4 print ( len ( lista_alunos ) )
5 print ( lista_alunos )
6

7 # Sa í da
8 4
9 [ ’ Davi ’ , ’ Felipe ’ , ’ Henrique ’ , ’ Maria ’]
10

11 # Criando a nova lista vazia


12 new_lista_alunos = []
13 # Adicionando os dados à nova lista
14 new_lista_alunos . append ( lista_alunos [0])
15 new_lista_alunos . append ( lista_alunos [1])
16 new_lista_alunos . append ( lista_alunos [2])
17 new_lista_alunos . append ( lista_alunos [3])
18 new_lista_alunos . append ( " Laura " )
19

20 print ( lista_alunos )
21 print ( new_lista_alunos )
22

23 # Sa í da
14 Andréa Lins e Lins Souza

24 [ ’ Davi ’ , ’ Felipe ’ , ’ Henrique ’ , ’ Maria ’]


25 [ ’ Davi ’ , ’ Felipe ’ , ’ Henrique ’ , ’ Maria ’ , ’ Laura ’]

Para uma lista com apenas quatro elementos, como a do exemplo, essa é
uma forma razoável de resolver esse problema. No entanto, existem métodos
automatizados para realizar a tarefa de copiar item por item de uma lista,
como veremos na Subseção 3.5.2.

Exemplo 3.8. O comando insert(POSIÇÃO, DADO) acrescenta um elemento


(DADO) na posição (POSIÇÃO) da lista
1 # Usando o comando insert () para acrescentar elementos em uma
determinada posi ç ã o da lista :
2 lista_alunos = [ ’ Davi ’ , ’ Felipe ’ , ’ Henrique ’ , ’ Maria ’]
3 lista_notas = [9.5 , 7.5 , 10 , 8.0]
4

5 new_lista_alunos = lista_alunos
6 print ( lista_alunos )
7 new_lista_alunos . insert (3 , " Laura " )
8 print ( new_lista_alunos )
9

10 new_lista_notas = lista_notas
11 print ( lista_notas )
12 new_lista_notas . insert (3 , 7.0)
13 print ( new_lista_notas )
14

15 # Sa í da
16 [ ’ Davi ’ , ’ Felipe ’ , ’ Henrique ’ , ’ Maria ’]
17 [ ’ Davi ’ , ’ Felipe ’ , ’ Henrique ’ , ’ Laura ’ , ’ Maria ’]
18 [9.5 , 7.5 , 10 , 8.0]
19 [9.5 , 7.5 , 10 , 7.0 , 8.0]

Caso queira alterar um dado, basta saber a posição do dado na lista e


fazer a substituição. No exemplo acima, digamos que a nota de Felipe, que
corresponde à posição 1 na lista, não é 7.5, mas sim 8.5, então basta fazer
como no exemplo a seguir:

Exemplo 3.9. Alterando o dado na posição 1 da lista:


Python para matemáticos 15

1 lista_notas = [9.5 , 7.5 , 10 , 7.0 , 8.0]


2 new_lista_notas [1] = 8.5
3 print ( new_lista_notas )
4

5 # Sa í da
6 [9.5 , 8.5 , 10 , 7.0 , 8.0]

3.1.7. Tuplas (tuple)


Assim como a Lista, a Tupla é um tipo que agrupa um conjunto de ele-
mentos. No entanto, há uma diferença em sua forma de definição: utiliza-se
parênteses ( ) ao invés de colchetes como nas listas. Após a definição, Tuplas
não podem ser modificadas, ou seja, elas são imutáveis, diferentemente das
Listas.

Exemplo 3.10. Tuplas em Python:


1 tupla_alunos = ( ’ Davi ’ , ’ Felipe ’ , ’ Henrique ’ , ’ Maria ’)
2 tupla_notas = (9.5 , 7.5 , 10 , 8.0)
3

4 print ( tupla_alunos )
5 print ( tupla_notas )
6

7 print ( type ( tupla_alunos ) )


8 print ( type ( tupla_notas ) )
9

10 # Comentar os comandos abaixo :


11 # tupla_notas [1] = 8.5 # comando inv á lido para o tipo tupla
12 # tupla_notas . append (8.5) # comando inv á lido para o tipo tupla
13

14 # Descomentar os comandos abaixo :


15 new_list = [ tupla_notas [:]]
16 print ( new_list )
17 # new_list . append (8.5)
18 # print ( new_list )
19

20 # # Outra op ç ã o :
21 # new_list = [ tupla_notas [0] , tupla_notas [1] , tupla_notas [2] ,
tupla_notas [3]]
16 Andréa Lins e Lins Souza

22 # print ( new_list1 )
23 # new_list1 . append (8.5)
24 # print ( new_list1 )
25

26 # Sa í da
27 ( ’ Davi ’ , ’ Felipe ’ , ’ Henrique ’ , ’ Maria ’)
28 (9.5 , 7.5 , 10 , 8.0)
29 < class ’ tuple ’ >
30 < class ’ tuple ’ >
31 [(9.5 , 7.5 , 10 , 8.0) ]

3.1.8. Dicionário (dict)


Por ser um tipo de dado bastante flexível, ele é utilizado para agrupar
elementos através da estrutura de chave e valor, onde a chave é o primeiro
elemento seguido por dois pontos e pelo valor. Por exemplo:
Exemplo 3.11. Criando um dicionário cujas chaves são nomes (strings) e os
valores são notas (ints e floats):
1 dict_notas = { ’ Davi ’: 9.5 , ’ Felipe ’: 8.5 , ’ Henrique ’: 10 , ’
Maria ’ :8.0}
2 print ( dict_notas )
3 print ( type ( dict_notas ) )
4

5 # Sa í da
6 { ’ Davi ’: 9.5 , ’ Felipe ’: 8.5 , ’ Henrique ’: 10 , ’ Maria ’: 8.0}
7 < class ’ dict ’ >

Para saber mais detalhes sobre os tipos de dados, pode-se consultar a do-
cumentação oficial do Python 3, disponível em [7].

3.2. Operadores Aritméticos


O Python funciona muito bem como uma calculadora e as operações básicas
são realizadas através dos seguintes operadores:
• Adição (+)
Python para matemáticos 17

• Subtração (-)

• Multiplicação (*)

• Divisão (/)

• Divisão inteira (//)

• Módulo ou resto da divisão (%)

• Potenciação (**)

• Radiciação (**)

No exemplo a seguir é possível verificar como usar cada um desses operadores


para realizar operações através do Python.

Exemplo 3.12. Uso de operadores aritméticos:


1 # Soma : a + b
2 print ( " 2 + 3 = " , 2+3)
3

4 # Subtra ç ã o : a - b
5 print ( " 4 - 5 = " , 4 -5)
6

7 # Multiplica ç ã o : a * b
8 print ( " 5 * 4 * 3 * 2 * 1 = " , 5 * 4 * 3 * 2 * 1)
9

10 # Divis ã o : a / b ; b diferente de zero ( b != 0)


11 print ( " 10 / 6.5 = " , 10 / 6.5)
12

13 # Divis ã o inteira : a // b ; b != 0
14 print ( " 10 // 6.5 = " , 10 // 6.5)
15

16 # M ó dulo : a % b
17 print ( " 10 % 6 = " , 10 % 6)
18

19 # Potencia ç ã o : a ** b
20 print ( " 10 ** 6 = " , 10 ** 6)
21
18 Andréa Lins e Lins Souza

22 # Radicia ç ã o : a ** (1/ b ) ; b inteiro diferente de zero


23 print ( " 8**(1/3) = " , 8**(1/3) )
24 print ( " 8**( -1/3) = " , 8**( -1/3) )
25 print ( " (1/8) **(1/3) = " , (1/8) **(1/3) )
26

27 # Sa í da
28 2 + 3 = 5
29 4 - 5 = -1
30 5 * 4 * 3 * 2 * 1 = 120
31 10 / 6.5 = 1.5 38 46 153 84 61 538 5
32 10 // 6.5 = 1.0
33 10 % 6 = 4
34 10 ** 6 = 1000000
35 8**(1/3) = 2.0
36 8**( -1/3) = 0.5
37 (1/8) **(1/3) = 0.5

Em Python é possível utilizar vários tipos de operadores em uma mesma ex-


pressão, no entanto deve-se estar atento à ordem em que eles são escritos, para
obter o resultado esperado. A convenção matemática é adotada para operado-
res matemáticos em Python. Podemos lembrar essa ordem usando o acrônimo
PEMDAS: Parênteses, Expoentes, Multiplicação e Divisão (da esquerda para
a direita), Adição e Subtração (da esquerda para a direita).

Exemplo 3.13. Calcular em Python 3 + 2 ∗ 4, retorna 11, já o resultado de


(3 + 2) ∗ 4 é 20. Escrevendo em linguagem Python, teríamos:

1 # Express õ es com resultados diferentes


2 print (3+2*4)
3 print ((3+2) *4)
4

5 # Sa í da
6 11
7 20
Python para matemáticos 19

3.3. Operadores de Atribuição


No Python, também é possível atribuir nomes às variáveis para substituí-
las pelos operandos e utilizar os operadores que controlam como a atribuição
será realizada.
O símbolo de igual = corresponde ao operador de atribuição. Isto é, dada
uma variável n, ao fazermos n = valor atribuímos o valor à variável n. Deste
modo, n passa a ter um sinônimo de valor. Se fizermos n = 13, como no Exem-
plo 3.14, ao inserir o comando para imprimir n, o sistema retornará o valor
13. A seguir, é possível verificar o operador de atribuição e seu equivalente em
Python:

Operador Equivalente a
= n=1
+= n=n+1
−= n=n−1
∗= n=n∗1
/= n = n/1
%= n = n%1

Exemplo 3.14. Atribuindo o valor 13 à variável n e executando os demais


comandos, usando operadores de atribuição, obteremos os resultados abaixo:
1 n =13
2 print ( n )
3 n -= 15
4 print ( n )
5 n **=4
6 print ( n )
7 n /=4
8 print ( n )
9 n %=3
10 print ( n )
11 n +=12
12 print ( n )
13 n *=0.5
14 print ( n )
20 Andréa Lins e Lins Souza

15

16 # Sa í da
17 13
18 -2
19 16
20 4.0
21 1.0
22 13.0
23 6.5

Assim como as demais linguagens de programação, o Python possui pala-


vras reservadas, as quais não poderão ser utilizadas em definições, nome de
funções e classes, etc. A Tabela 3.1 contém as palavras reservadas no Python.

and as assert break class continue def del elif else except
False finally for from global if import in is lambda None
nonlocal not or pass raise return True try while with yield

Tabela 3.1: Palavras reservadas no Python.

Caso alguma dessas palavras seja utilizada no código, o sistema irá retornar
um erro, então não precisa preocupar-se em decorá-las.
É possível usar letras, dígitos e alguns caracteres especiais para nomear
as variáveis, funções e classes, no entanto os nomes sempre devem começar
por letras ou sublinhado (_). A seguir, temos alguns exemplos de nomes de
variáveis:

Exemplo 3.15. Possíveis nomes de variáveis em Python.


1 x = 4
2 y = 7
3 z = -10
4 print ( x + y + z )
5 print ( x * y )
6

7 # Sa í da
8 1
9 28
Python para matemáticos 21

Exemplo 3.16. Utilizando operadores aritméticos para converter minutos em


horas:
1 minutos = 700
2 horas = minutos /60
3 print ( minutos , " minutos corresponde a " , horas , " horas " )
4 minutos = 500
5 horas = minutos /60
6 print ( minutos , " minutos corresponde a " , horas , " horas " )
7

8 # Sa í da :
9 700 minutos corresponde a 1 1.6 66 66 666 66 66 666 horas
10 500 minutos corresponde a 8.3333 33333333 334 horas

Podemos fazer com que a saída acima esteja mais próximo da linguagem hu-
mana ao utilizar outros operadores aritméticos:
1 minutos =700
2 horas = minutos /60
3 horas_inteiras = minutos // 60
4 minut os_resta ntes = minutos % 60
5 print ( minutos , " minutos corresponde a " , horas_inteiras , " horas e
" , minutos_restantes , " minutos " )
6

7 minutos =500
8 horas = minutos /60
9 horasinteiras = minutos //60
10 minutosrestantes = minutos %60
11 print ( minutos , " minutos corresponde a " , horasinteiras , " horas e "
, minutosrestantes , " minutos " )
12

13 # Sa í da
14 700 minutos corresponde a 11 horas e 40 minutos
15 500 minutos corresponde a 8 horas e 20 minutos

É possível realizar as operações aritméticas para números complexos através


do Python, como mostra o exemplo a seguir:

Exemplo 3.17. Operações básicas com números complexos:


1 z1 = 3 + 4 j
22 Andréa Lins e Lins Souza

2 z2 = 2 - 2 j
3 soma = z1 + z2
4 sub = z1 - z2
5 mult = z1 * z2
6 div = z1 / z2
7 print ( soma )
8 print ( sub )
9 print ( mult )
10 print ( div )
11 print ( z1 . real + z2 . real )
12 print ( z1 . imag + z2 . imag )
13 print ( z1 . conjugate () )
14

15 # Sa í da
16 (5+2 j )
17 (1+6 j )
18 (14+2 j )
19 ( -0.25+1.75 j )
20 5.0
21 2.0
22 (3 -4 j )

Essas operações também podem ser realizadas para outros tipos de variá-
veis, além das numéricas. Para saber o tipo de uma variável, basta usar o
comando type, como no exemplo seguinte:

Exemplo 3.18. Considerando as variáveis minutos, horas e horas_inteiras


do Exemplo 3.16 e a variável soma do Exemplo 3.17, obtemos:
1 print ( type ( minutos ) )
2 print ( type ( horas ) )
3 print ( type ( horas_inteiras ) )
4 print ( type ( soma ) )
5 # Sa í da
6 < class ’ int ’ >
7 < class ’ float ’ >
8 < class ’ int ’ >
9 < class ’ complex ’ >
Python para matemáticos 23

3.4. Funções e Classes


O Python suporta o uso de funções e classes, mas nem por isso torna-as
necessárias, como em outras linguagens de programação. Vamos tomar um
exemplo clássico da computação, o programa “Hello, World!”, que é bastante
utilizado por programadores para testar o sistema ou como um exemplo de
código minimalista da linguagem. Esse programa em Python pode ser escrito
sem a necessidade de criar funções ou classes, da seguinte maneira:
1 # programa " Hello , World !" em Python
2 print ( " Hello , World ! " )

Em outras linguagens, como C++ e Java, a sintaxe é um pouco diferente.


Em C++ esse mesmo programa requer uma função e necessita de um compi-
lador instalado na máquina.
1 # programa " Hello , World !" em C ++
2 # include < iostream >
3 int main () {
4 std :: cout << " Hello , World ! " << std :: endl ;
5 return 0;
6 }

Em Java, todo o código deve ser inserido em uma classe, como a seguir:
1 # programa " Hello , World !" em Java
2 class HelloWorld {
3 public static void main ( String args []) {
4 System . out . println ( " Hello , World ! " ) ;
5 }
6 }

3.4.1. Funções
Uma função em Python é uma sequência de comandos que executa alguma
tarefa. A sua principal finalidade é nos ajudar a organizar programas em
pedaços que correspondam a uma solução do problema. As funções recebem
nomes, que podem ser qualquer um escolhido pelo usuário, com exceção das
palavras reservadas dos Python.
24 Andréa Lins e Lins Souza

A sintaxe de uma definição de função é:


1 def NOME ( PARAMETROS ) :
2 COMANDOS

No exemlo a seguir, vamos criar uma função para calcular a soma de dois
objetos a e b:

Exemplo 3.19. Somar duas variáveis.


1 # fun ç ã o para calcular a soma entre dois n ú meros a e b
2 def sum (a , b ) :
3 return ( a + b )
4

5 a = int ( input ( ’ Digite o primeiro n ú mero : ’) )


6 b = int ( input ( ’ Digite o segundo n ú mero : ’) )
7

8 print ( f ’A soma de { a } e { b } é { sum (a , b ) } ’)


9

10 # Sa í da
11 Digite o primeiro n ú mero :
12 3 # digite um n ú mero qualquer e pressione a tecla enter
13 Digite o segundo n ú mero :
14 -4 # digite outro n ú mero qualquer e pressione a tecla enter
15 A soma de 3 e -4 é -1

É possível usar qualquer tipo de variável usando a função sum(). Por


exemplo:

Exemplo 3.20. Somar variáveis de diferentes tipos.


1 # Inteiros
2 ai = 3
3 bi = 5
4 print ( f ’A soma de { ai } e { bi } é { sum ( ai , bi ) } ’)
5

6 # Reais
7 af = float ( input ( ’ Digite o primeiro n ú mero real : ’) ) # Digitar
o n ú mero e em seguida pressionar a tecla Enter
8 bf = float ( input ( ’ Digite o segundo n ú mero real : ’) ) # Digitar
o n ú mero e em seguida pressionar a tecla Enter
Python para matemáticos 25

10 print ( f ’A soma de { af } e { bf } é { sum ( af , bf ) } ’)


11

12 # Complexos
13 ac = 5 + 4 j
14 bc = -3 + 2 j
15

16 print ( f ’A soma de { ac } e { bc } é { sum ( ac , bc ) } ’)


17

18 # Diversos tipos num é ricos


19 ad = 5.0
20 bd = 4
21 somad = sum ( ad , bd )
22 print ( f ’A soma de { ad } e { bd } é { somad } ’)
23 print ( type ( ad ) )
24 print ( type ( bd ) )
25 print ( type ( somad ) )
26

27 # Strings
28 a_s = " le "
29 b_s = " tras "
30 soma_s = sum ( a_s , b_s )
31 print ( f ’A soma de { a_s } e { b_s } é { soma_s } ’)

No caso dos números reais nesse exemplo, como eles são inseridos pelo usuário,
deve-se atentar para inserir números reais válidos, senão o programa retorna
um erro.
É possível, também, usar funções definidas em Python para diversos ti-
pos de soluções, como arredondar números definindo a quantidade de casas
decimais, ou usar notação científica, por exemplo.
Pode-se arredondar um número para quantas casas decimais se queira
usando as funções round() ou usando f strings:

1. Usando a função round():


round(número, casas_decimais)

2. Usando f strings:
print(f’número:.casas_decimaisf’)
26 Andréa Lins e Lins Souza

Exemplo 3.21. Arredondar números decimais.


1 # fun ç ã o para calcular a soma entre a e b
2 def sum (a , b ) :
3 return ( a + b )
4 ar = 4.6666666666
5 br = 7.9999999999
6 # Usando a fun ç ã o sum
7 somar = sum ( ar , br )
8 print ( f ’A soma de { ar } e { br } é { somar } ’)
9 # Usando a fun ç ã o round
10 # arredondando para 1 casa decimal
11 print ( f ’A soma de { ar } e { br } é { round ( somar ,1) } ’)
12 # Usando f strings
13 # arredondando para 2 casas decimais
14 print ( f ’A soma de { ar } e { br } é { somar :.2 f } ’)
15

16 # Sa í da
17 A soma de 4.6666666666 e 7.9999999999 é 12.6666666665
18 A soma de 4.6666666666 e 7.9999999999 é 12.7
19 A soma de 4.6666666666 e 7.9999999999 é 12.67

É possível visualizar um número em notação científica, utilizando funções


do Python. No exemplo anterior, poderíamos acrescentar o código a seguir
para obtermos o resultado escrito em notação científica:

Exemplo 3.22. Notação Científica.


1 # Utilizando a fun ç ã o format
2 print ( ’ {: e } ’. format ( somar ) )
3 # Usando f strings
4 print ( f ’{ somar : e } ’)
5 # Usando f strings com o n ú mero de casas decimais
6 print ( f ’{ somar :.2 e } ’)
7

8 # Sa í da
9 1.266667 e +01
10 1.266667 e +01
11 1.27 e +01
Python para matemáticos 27

Aplicações:
Criar uma função para calcular a área de um círculo de raio r e outra para
calcular o perímetro desse mesmo círculo, cujas fórmulas estão descritas na
Figura 3.1.

Exemplo 3.23. Funções para calcular a área e o perímetro de um círculo


dado o raio r.
1 # Calcula a á rea do c í rculo dado o raio
2 def area ( radius ) :
3 return radius **2*3.14
4

5 # Calcula o per í metro do c í rculo dado o raio


6 def perimeter ( radius ) :
7 return 2* radius *3.14
8

9 # Para utilizar as fun ç õ es basta definir um valor para o raio


r e instanciar a fun ç ã o como nos comandos abaixo :
10 # Definindo o raio r = 3
11 r = 3
12 # Calcular a á rea de um c í rculo de raio r = 3
13 a = area ( r )
14 # Imprimir o resultado
15 print ( a )
16 # Sa í da
17 28.26

Círculo C de raio r
Área(C) = πr2
Perímetro(C) = 2πr
Diâmetro(C) = d = 2r

Figura 3.1: Fórmulas para calcular a área, o perímetro e o diâmetro de um


círculo de raio r.
28 Andréa Lins e Lins Souza

18

19 # Calcular o per í metro de um c í rculo de raio 3 e imprimir o


resultado
20 print ( perimeter ( r ) )
21 # Sa í da
22 18.84

3.4.2. Classes

No Python, a criação de classes é bem simples e é possível definir os seus


atributos e métodos. A sintaxe de uma definição de classe em Python é:
class NOME:
COMANDO(S)
Para criar classes que contenha novos objetos com um estado inicial prede-
terminado, cria-se um método especial chamado __init__(), o qual pode ter
parâmetros para maior flexibilidade. Neste caso, os argumentos fornecidos na
invocação da classe serão passados para o método __init__():
def __init__(self, PARÂMETROS):
self.data = []
Para construir a nossa primeira classe com o Python, vamos criar uma classe
para calcular a área e o perímetro de um círculo dado o raio, aproveitando as
funções definidas no Exemplo 3.23.
Dessa forma, a classe círculo pode ser construída como mostra o exemplo
abaixo.

Exemplo 3.24. Classe para calcular a área e o perímetro de um círculo dado


o raio r.
1 # Classe c í rculo
2 class Circle () :
3 def __init__ ( self , r ) :
4 self . radius = r
5

6 # calcula a á rea do c í rculo


7 def area ( self ) :
8 return self . radius **2*3.14
Python para matemáticos 29

10 # calcula o per í metro do c í rculo


11 def perimeter ( self ) :
12 return 2* self . radius *3.14
13

14 NewCircle = Circle (8)


15 print ( NewCircle . area () )
16 print ( NewCircle . perimeter () )
17

18 # Sa í da
19 200.96
20 50.24

Desafio: Na classe círculo acima, insira uma função que calcula o diâmetro
do círculo dado o raio r e mostre a saída.

Aplicações:

Nos exemplos seguintes, vamos criar funções e classes usando o Python


para solucionar problemas comuns da matemática:

Exemplo 3.25. Código em Python para calcular a soma dos quadrados dos
n primeiros números naturais:
1 # Programa para calcular a soma dos quadrados dos n primeiros n
ú meros naturais
2 def squareSum ( n ) :
3 sum = 0
4 for i in range (1 , n +1) :
5 sum = sum + ( i + i )
6 return sum
7

8 n = 4
9 print ( squareSum ( n ) )
10 # Sa í da
11 30
12 n = 10
30 Andréa Lins e Lins Souza

Exemplo 3.26. Soma mínima de fatores de um número natural n:


Para encontrar a soma mínima de fatores de n, primeiro calcularemos todos os
fatores e a sua soma correspondente e, depois, encontraremos o mínimo entre
eles. Sendo assim, a soma dos fatores primos do produto corresponde à soma
mínima de fatores do número.
Por exemplo: O número 12 pode ser fatorado como:

12 = 12 ∗ 1 = 12 + 1 = 13,
12 = 2 ∗ 6 =2+6 = 8,
12 = 3 ∗ 4 =3+4 =7e
12 = 2 ∗ 2 ∗ 3 = 2 + 2 + 3 = 7.

Logo, a soma mínima de fatores do número 12 é 7.


Podemos escrever uma função para calcular essa soma utilizando a lingua-
gem Python da seguinte forma:
1 # Programa para encontrar a soma m í nima de fatores de n natural
2 def findMinSum ( n ) :
3 sum = 0
4 # Encontrar fatores do n ú mero e adicion á - los à soma
5 i = 2
6 while ( i * i <= n ) :
7 while ( n % i == 0 ) :
8 sum += i
9 n /= i
10 i +=1
11 sum += n
12 return sum
13

14 n = 12
15 print ( findMinSum ( n ) )

3.5. Instruções compostas


Nessa seção vamos usar as instruções if, for e while no Python para
solucionar problemas comuns na matemática.
Python para matemáticos 31

Instruções compostas contém outras instruções, ou grupos de instruções


e afetam ou controlam a execução dessas outras instruções de alguma ma-
neira. As instruções if, for e while implementam construções tradicionais
de controle do fluxo de execução. Vamos estudar cada uma delas a seguir:

3.5.1. If
A instrução if é usada para execução condicional. A seguir temos três
exemplos da sintaxe do if:

1. if EXPRESSÃO:
COMANDO(S)

2. if EXPRESSÃO_1:
COMANDO(S)
elif EXPRESSÃO_2:
COMANDO(S)
else:
COMANDO(S)

3. if EXPRESSÃO_1 or EXPRESSÃO_2 and EXPRESSÃO_3:


COMANDO(S)

Como exemplo de aplicação, vamos estudar os operadores de comparação


e lógicos em Python.

Operadores de Comparação
São usados para comparar se dois valores são iguais (‘==‘), diferentes
(‘ !=‘), uma maior que outro (‘>‘), um maior ou igual ao outro (‘>=‘), um
menor que outro (‘<‘), ou um menor ou igual ao outro (‘<=‘). Ele podem ser
utilizados, como no exemplo a seguir:

Exemplo 3.27. Operadores de comparação em Python:


32 Andréa Lins e Lins Souza

1 n1 = 7
2 n2 = 3
3

4 if n1 == n2 :
5 print ( f ’{ n1 } é igual a { n2 } ’)
6

7 if n1 != n2 :
8 print ( f ’{ n1 } é diferente de { n2 } ’)
9

10 if n1 > n2 :
11 print ( f ’{ n1 } é maior que { n2 } ’)
12

13 if n1 >= n2 :
14 print ( f ’{ n1 } é maior ou igual a { n2 } ’)
15

16 if n1 < n2 :
17 print ( f ’{ n1 } é menor que { n2 } ’)
18

19 if n1 <= n2 :
20 print ( f ’{ n1 } é menor ou igual a { n2 } ’)
21

22 # Sa í da
23

24 7 é diferente de 3
25 7 é maior que 3
26 7 é maior ou igual a 3

Poderíamos escrever o código acima de uma forma mais "enxuta", da seguinte


forma:
1 if n1 < n2 :
2 print ( f ’{ n1 } é menor que { n2 } ’)
3 elif n1 > n2 :
4 print ( f ’{ n1 } é maior que { n2 } ’)
5 else :
6 print ( f ’{ n1 } e { n2 } s ã o iguais ’)
7

8 # Sa í da
9 7 é maior que 3
Python para matemáticos 33

Operadores Lógicos:

Permitem construir um tipo de teste muito útil em qualquer programa


Python: os testes lógicos. O Python tem três tipos de operadores lógicos:
and, or e not.

• and: retorna True se ambas as afirmações forem verdadeiras;

• or: retorna True se uma das afirmações for verdadeira;

• not: retorna False se o resultado for verdadeiro.

Exemplo 3.28. Operadores lógicos em Python:


1 n1 = 7
2 n2 = 3
3 n3 = -2
4

5 # Usando and
6 if n1 > n2 and n2 > n3 :
7 print ( f " { n1 } > { n2 } > { n3 } " )
8 if n1 > 3 and n2 < 8:
9 print ( " As Duas condi ç õ es s ã o verdadeiras " )
10

11 # Sa í da
12 7 > 3 > -2
13 As Duas condi ç õ es s ã o verdadeiras
14

15 # Usando or
16 if n1 > n2 or n1 > n3 :
17 print ( f " { n1 } > { n2 } ou { n1 } > { n3 } " )
18 if n1 > 4 or n2 <= 8:
19 print ( " Uma ou duas das condi ç õ es s ã o verdadeiras " )
20

21 # Sa í da
22 7 > 3 ou 7 > -2
23 Uma ou duas das condi ç õ es s ã o verdadeiras
24

25

26 # Usando not
34 Andréa Lins e Lins Souza

27 if not ( n3 > n2 ) :
28 print ( f " { n3 } <= { n2 } " )
29 if not ( n3 > n2 or n3 > n1 ) :
30 print ( f " { n3 } < { n2 } e { n3 } < { n1 } " )
31 if not ( n1 < 100 and n2 < -5) :
32 print ( " Inverte o resultado da condi ç ã o entre os parenteses "
)
33

34 # Sa í da
35 -2 <= 3
36 -2 < 3 e -2 < 7
37 Inverte o resultado da condi ç ã o entre os parenteses

Exemplo 3.29. Determinar se um triângulo é equilátero, isósceles ou retân-


gulo. Nesse exemplo, os tamanhos dos lados a, b e c não nulos de um triângulo
serão fornecidos pelo usuário. Vamos escrever uma função usando a instrução
if para determinar se o triângulo é equilátero, isósceles ou retângulo. Sabendo
que:
a) Um triângulo é isósceles quando possui os dois lados iguais;
b) Um triângulo equilátero é também isósceles;
c) Um triângulo é retângulo se h2 = c21 + c22 , onde h é a hipotenusa e c21 e
c22 são os catetos.
Para solucionar esse problema em Python, podemos escrever um código da
seguinte forma:
1 def triangulo () :
2 print ( " Entre com o tamanho dos lados a , b e c do triangulo "
)
3 a = float ( input ( " Lado a : " ) )
4 b = float ( input ( " Lado b : " ) )
5 c = float ( input ( " Lado c : " ) )
6 if ( a == b ) or ( b == c ) or ( a == c ) :
7 print ( " triangulo isosceles " )
8 if ( a == b ) and ( b == c ) and ( a == c ) :
9 print ( " triangulo equilatero " )
10 if (( a * a ) == ( b * b + c * c ) ) or (( b * b ) == ( a * a + c * c ) ) or (( c *
c ) == ( a * a + b * b ) ) :
11 print ( " triangulo retangulo " )
Python para matemáticos 35

12

13 # Chamando a fun ç ã o triangulo


14 triangulo ()
15

16 # Um exemplo de sa í da
17 Entre com o tamanho dos lados a , b e c do triangulo
18 Lado a :3
19 Lado b :4
20 Lado c :5
21 triangulo retangulo

Observe que esse código contém alguns problemas:

1. Se o triângulo não for isósceles, equilátero ou retângulo, nenhuma men-


sagem será retornada.

2. Se a, b e c são lados de um triângulo. Então:

(a) nenhum deles pode ser nulo.


(b) a soma de dois lados deve ser maior que o outro lado que não par-
ticipou da soma.

No entanto, o usuário não está sendo alertado sobre os valores, já que o


mesmo pode cometer enganos.

Desafio: O que você faria para solucionar os problemas acima? Tente


escrever a solução no código em Python.

3.5.2. For
A instrução for é usada para iterar sobre os elementos de uma sequência,
que pode ser uma string, tupla ou lista, ou outro objeto iterável.
Sintaxe:
for ELEMENTO in ITERADOR :
COMANDO(S)
Ou
for CONTADOR in range(INÍCIO, FIM, PASSO):
36 Andréa Lins e Lins Souza

COMANDO(S)
Se o passo de contagem for omitido, o programa fará uso de passo 1 por
padrão.
A contagem apresentada no range() será até FIM - 1.

Exemplo 3.30. Função para calcular a soma dos n primeiros números natu-
rais:
1 # Calcula a soma dos n primeiros n ú meros naturais
2 def Sum ( n ) :
3 sum = 0
4 for i in range ( n +1) : # Nesse caso ( n +1) é o fim
5 sum = sum + i
6 print ( sum )
7 return sum
8

9 n = 5
10 Sum ( n )
11

12 # Sa í da
13 0
14 1
15 3
16 6
17 10
18 15

Exemplo 3.31. Criar um código em Python para calcular a soma dos qua-
drados dos n primeiros números naturais:
1 # Fun ç ã o para calcular a soma dos quadrados dos n primeiros n ú
meros naturais
2 def squareSum ( n ) :
3 sum = 0
4 for i in range (1 , n +1) : # Nesse caso 1 é o in í cio e ( n
+1) é o fim
5 sum = sum + ( i * i )
6 return sum
7
Python para matemáticos 37

8 # Digitar um n ú mero natural e em seguida pressionar a tecla


Enter
9 n = int ( input ( ’ Digite o valor de n : ’) ) # O comando int () ,
transforma um n ú mero em inteiro .
10 print ( f ’A soma dos quadrados dos { n } primeiros n ú meros
naturais é { squareSum ( n ) } ’)

Exemplo 3.32. Função para calcular a soma dos números naturais pares de
2 até n:
1 # Calcula a soma dos n ú meros naturais pares de 2 at é n
2 def evenSum ( n ) :
3 sum = 0
4 for i in range (2 , n +1 , 2) : # Nesse caso 2 é o in í cio , ( n +1)
é o fim e o passo é 2.
5 sum = sum + i
6 return sum
7

8 n = 8
9 evenSum ( n )

Desafio: Como você faria a soma dos números ímpares de 1 até n?


Exemplo 3.33. Usando o for para resolver o problema das listas, visto nos
Exemplos 3.6 e 3.7:
1 # O comando append () acrescenta um elemento no final da lista
2 lista_alunos = [ ’ Davi ’ , ’ Felipe ’ , ’ Henrique ’ , ’ Maria ’]
3

4 new_lista_alunos = []
5 for i in range ( len ( lista_alunos ) ) :
6 new_lista_alunos . append ( lista_alunos [ i ])
7 print ( lista_alunos )
8 new_lista_alunos . append ( " Laura " )
9 print ( lista_alunos )
10 print ( new_lista_alunos )
11

12 # Sa í da
13 [ ’ Davi ’ , ’ Felipe ’ , ’ Henrique ’ , ’ Maria ’]
14 [ ’ Davi ’ , ’ Felipe ’ , ’ Henrique ’ , ’ Maria ’]
15 [ ’ Davi ’ , ’ Felipe ’ , ’ Henrique ’ , ’ Maria ’ , ’ Laura ’]
38 Andréa Lins e Lins Souza

3.5.3. While
A instrução while é usada para execução repetida enquanto uma expressão
é verdadeira.
Sintaxe:
while (CONDIÇÃO LÓGICA):
COMANDO(S)

Exemplo 3.34. Calcular a soma mínima de fatores de um número natural n.


Para encontrar a soma mínima de fatores de n, primeiro calcularemos todos
os fatores e a sua soma correspondente e, depois, encontraremos o mínimo entre
eles. Sendo assim, a soma dos fatores primos do produto corresponde à soma
mínima de fatores do número.
Por exemplo: Para o número 12 temos as seguintes fatorações e as respec-
tivas soma dos fatores:

12 = 12 ∗ 1 => 12 + 1 = 13,
12 = 2 ∗ 6 => 2 + 6 = 8,
12 = 3 ∗ 4 => 3 + 4 = 7, e
12 = 2 ∗ 2 ∗ 3 => 2 + 2 + 3 = 7.

Logo, a soma mínima de fatores do número 12 é 7.


Podemos escrever uma função para calcular essa soma, utilizando a lingua-
gem Python, da seguinte forma:
1 # Programa para encontrar a soma m í nima de fatores de n natural
2 def findMinSum ( n ) :
3 sum = 0
4 # Encontrar fatores do n ú mero e adicion á - los à soma
5 i = 2
6 while ( i * i <= n ) :
7 while ( n % i == 0 ) :
8 sum += i
9 n /= i
10 i +=1
11 sum += n
12 return sum
Python para matemáticos 39

13

14 n = 120
15 print ( findMinSum ( n ) )

Exemplo 3.35. Solução de Sistemas Lineares. Sistemas lineares compostos


por n equações lineares e n variáveis tem como forma geral:

a11 x1 + a12 x2 + · · · + a1n xn = b1


a21 x1 + a22 x2 + · · · + a2n xn = b2
.. .. .. ..
. . . .
an1 x1 + an2 x2 + · · · + ann xn = bn

Os aij são os coeficientes.


A solução desses sistemas consistem em determinar os valores de x, de modo
que eles satisfaçam todas as equações ao mesmo tempo. Um dos métodos
para solucionar esse tipo de sistema é o Método de Eliminação de Gauss, o
qual consiste em transformar o sistema linear original, em um sistema linear
equivalente com matriz triangular superior, que apresentam solução imediata.
Seja Ax = B um sistema linear, deve-se aplicar uma sequência de operações
elementares escolhidas entre:

• Trocar a ordem de duas equações do sistema;

• Multiplicar uma equação do sistema por uma constante não nula;

• Adicionar um múltiplo de uma equação a uma outra equação;

Dessa forma, obtemos um novo sistema U x = C, equivalente ao sistema


Ax = B.
O Método é definido pela aplicação dos seguintes passos:

1. Determinar a Matriz Completa do Sistema - Obter a matriz completa ou


aumentada do sistema original.

2. Triangulação - Transformar a matriz A em uma matriz triangular supe-


rior por meio de uma sequência de operações elementares nas linhas da
matriz A.
40 Andréa Lins e Lins Souza

3. Retro-substituição - Cálcular os coeficientes x1 , x2 , ..., xn , solução de Ax =


B, a partir da solução do último componente, xn , e a substituição re-
gressiva nas equações anteriores.
A seguir temos um código em Python que, dada uma matriz A, calcula a
sua matriz triangular superior:
1 ’’’ Recebe uma matriz A ( n x n ) e
2 retorna a matriz zerada na diagonal inferior esquerda . ’’’
3 def pivotamento ( A ) :
4 for i in range ( len ( A ) - 1) :
5 for j in range ( i + 1 , len ( A ) ) :
6 n1 = A [ j ][ i ]
7 if n1 == 0:
8 for k in range (i , len ( A ) ) :
9 if A [ k ][ i ] != 0:
10 swap (A , i , k )
11 n1 = A [ j ][ i ]
12 n2 = A [ i ][ i ]
13 if n2 == 0:
14 continue
15 div = n1 / n2
16 A [ j ] = sumVector ( multVector ( A [ i ] , - div ) , A [ j ])
17 return A
18

19 def multVector (v , x ) :
20 newV = []
21 for i in range ( len ( v ) ) :
22 newV += [ v [ i ] * x ]
23 return newV
24

25 def sumVector ( v1 , v2 ) :
26 newV = []
27 for i in range ( len ( v1 ) ) :
28 newV += [ v1 [ i ] + v2 [ i ]]
29 return newV
30

31 def swap (A , i , j ) :
32 newI = []
33 newJ = []
Python para matemáticos 41

34 for index in range ( len ( A ) + 1) :


35 newI += [ A [ j ][ index ]]
36 newJ += [ A [ i ][ index ]]
37 A [ i ] = newI
38 A [ j ] = newJ
39

40 def printMatrix ( A ) :
41 for i in A :
42 print ( ’\ t ’. join ( map ( str , i ) ) )
43 print ( " \ n " )
44

45 A = [[1.0 , -1.0 , 2.0 , -1.0 , -8.0] , [2.0 , -2.0 , 3.0 , -3.0 , -20] ,
[1.0 , 1.0 , 1.0 , 0.0 , -2.0] , [1.0 , -1.0 , 4.0 , -3.0 , 4.0]]
46 printMatrix ( A )
47 printMatrix ( pivotamento ( A ) )

3.6. Exercícios
1) Faça uma função que some os números inteiros a partir de 1 até que a
soma não seja maior que 5000. Imprima o valor para o qual isto ocorreu e o
resultado final.
2) Faça uma função que soma os n termos de uma Progressão Aritmética
de razão r. Dados os valores de entrada r, a1 e n, imprima o resultado na tela.
3) Complete o algoritmo visto no Exemplo 3.35 para que ele resolva o Passo
3 do método de eliminação de Gauss e retorne a solução do sistema.
4
O módulo Math

Nesse capítulo será apresentado o módulo Math do Python e como utilizá-lo


em aplicações matemáticas.
O módulo math [10] faz parte da Python Standard Library [11]. Isso sig-
nifica que todas as funções do módulo math estão disponíveis em qualquer
instalação do Python. Ele possibilita acessar funções matemáticas definidas
pelo padrão da linguagem de programação C. Esse módulo permite operações
apenas entre números inteiros, ou pontos flutuantes e as funções fornecidas re-
tornam valores em pontos flutuantes, exceto quando explicitamente indicados
de outra forma. Para números complexos, deve-se utilizar o módulo cmath,
cujas funções possuem a mesma nomenclatura das funções do módulo math.
Para usar o módulo math basta importá-lo integralmente em seu programa
através do comando:
1 # Comando para importar o m ó dulo math
2 import math

Ou importar apenas as funções que serão utilizadas:


1 # Comando para importar as fun ç õ es log , log10 , exp , e , pow e
sqrt do m ó dulo math
2 from math import log , log10 , exp , e , pow , sqrt

Para conhecer todas as funções disponíveis nesse módulo, pode-se consultar


a documentação oficial disponível em [10].
Nas seções a seguir serão apresentadas algumas funções matemáticas e sua
correspondente em Python, utilizando o módulo math.

43
44 Andréa Lins e Lins Souza

4.1. Funções piso e teto


A função piso, denotada por ⌊x⌋, converte um número real x no maior
número inteiro menor ou igual a x, enquanto a função teto, denotada por ⌈x⌉
converte um número real x no menor número inteiro maior ou igual a x. Ou
seja,

⌊x⌋ = max {m ∈ Z | m ≤ x}, (4.1)


⌈x⌉ = min {n ∈ Z | n ≥ x}. (4.2)

Por exemplo, o número 2, 1 tem como piso o número 2 e como teto o número
3, ou seja, ⌊2, 1⌋ = 2 e ⌈2, 1⌉ = 3. Já o número −2, 1 tem piso igual a −3 e
teto igual a −2, ou seja, ⌊−2, 1⌋ = −3 e ⌈−2, 1⌉ = −2.
Na linguagem Python, é possível obter os valores do piso e do teto de um
número utilizando, respectivamente, as funções floor() e ceil() do módulo
math, como pode ser visto nos Exemplos 4.1 e 4.2.

Exemplo 4.1. Função piso usando o módulo math:


1 # Importar o m ó dulo math
2 import math as mt
3

4 # Imprimir o valor do piso de diferentes n ú meros decimais


5 print ( " O valor do piso de 2.1 é : " , mt . floor (2.1) )
6 print ( " O valor do piso de 2.7 é : " , mt . floor (2.7) )
7 print ( " O valor do piso de -2.1 é : " , mt . floor ( -2.1) )
8 print ( " O valor do piso de -2.7 é : " , mt . floor ( -2.7) )
9

10 # Sa í da :
11 O valor do piso de 2.1 é : 2
12 O valor do piso de 2.7 é : 2
13 O valor do piso de -2.1 é : -3
14 O valor do piso de -2.7 é : -3

Exemplo 4.2. Função teto usando o módulo math:


1 # Importar o m ó dulo math
2 import math as mt
Python para matemáticos 45

4 a = 2.1
5 b = 2.7
6

7 # Imprimir o valor do teto dos n ú meros decimais a , b , -a e -b


8 print ( " O valor do teto de " ,a , " é : " , mt . ceil ( a ) )
9 print ( " O valor do teto de " ,b , " é : " , mt . ceil ( b ) )
10 print ( " O valor do teto de " ,-a , " é : " , mt . ceil ( - a ) )
11 print ( " O valor do teto de " ,-b , " é : " , mt . ceil ( - b ) )
12

13 # Sa í da :
14 O valor do teto de 2.1 é : 3
15 O valor do teto de 2.7 é : 3
16 O valor do teto de -2.1 é : -2
17 O valor do teto de -2.7 é : -2

4.2. Logaritmo e Exponencial

Além de adição, subtração, multiplicação e divisão, pode-se calcular expo-


entes e logaritmos com o Python. As funções exponenciais e logarítmicas são
importadas do módulo math. A seguir veremos algumas delas:

• e: constante e base dos logaritmos naturais (número de Euler ou Néper).

• exp(x): função para calcular uma exponenciação do tipo ex .

• log(x): calcula o logaritmo natural de x.

• log10(x): calcula o logaritmo de x na base 10.

É possível renomear uma função no momento que ela está sendo importada.
Portanto, para renomear a função log(x) que calcula o logaritmo natural, para
ln(x), podemos importar a função log como ln, como no exemplo a seguir:

Exemplo 4.3. Logaritmos usando o módulo math:


46 Andréa Lins e Lins Souza

1 # Importando as fun ç õ es log10 e log do m ó dulo math


2 # Renomeando a fun ç ã o log como ln
3 from math import log10 , log as ln
4

5 x = ln (0.1)
6 print ( x )
7 x = log10 (0.1)
8 print ( x )
9

10 # Sa í da
11 -2.3025850929940455
12 -1.0

4.3. Funções trigonométricas

As função trigonométrica são amplamente usadas para resolver muitos pro-


blemas de trignometria. Dentre as funções trigonométricas do módulo math,
estão:

• cos(x): Retorna o cosseno de x em radianos.

• sin(x): Retorna o seno de x em radianos.

• tan(x): Retorna a tangente de x em radianos.

• acos(x): Retorna o arco cosseno de x em radianos.

• asin(x): Retorna o arco seno de de x em radianos.

• atan(x): Retorna o arco tangente de x em radianos.

Para ver a lista completa, consulte a documentação oficial do Python dis-


ponível em [7].

Exemplo 4.4. Usando funções trigonométricas do módulo math:


Python para matemáticos 47

1 # Importar o m ó dulo math


2 import math as mt
3

4 a = mt . sin ( mt . pi /2)
5 b = mt . cos ( mt . pi )
6 print ( mt . pi )
7 print ( a )
8 print ( b )
9 print ( mt . asin ( a ) )
10 print ( mt . acos ( b ) )
11

12 # Sa í da
13 3.141 59265358 9793
14 1.0
15 -1.0
16 1. 57 07 963 26 79 489 66
17 3.141 59265358 9793

4.4. Aplicações

4.4.1. Teorema de Pitágoras


O teorema de Pitágoras relaciona os comprimentos dos lados de qualquer
triângulo retângulo. Na geometria euclidiana, o teorema afirma que:

Teorema 4.5 (Teorema de Pitágoras). O quadrado do comprimento da hipote-


nusa de um triângulo retângulo é igual à soma dos quadrados dos comprimentos
dos outros dois lados.

Por definição, a hipotenusa é o lado oposto ao ângulo reto, e os dois lados


que o formam são os catetos. Na Figura 4.1 o lado c é a hipotenusa, a e b são
os catetos.
No Exemplo 4.6 vamos escrever um código em Python para calcular a
medida da hipotenusa c dados dois lados a e b de um triângulo retângulo.

Exemplo 4.6. Calcula a medida da hipotenusa c dados dois lados a e b de


um triângulo retângulo:
48 Andréa Lins e Lins Souza

Figura 4.1: Triângulo retângulo.

1 # Importa o m ó dulo Math para usar a fun ç ã o sqrt


2 from math import sqrt
3

4 # Atribuir valores para os catetos a e b


5 a = float ( input ( " Digite o primeiro cateto : " ) )
6 b = float ( input ( " Digite o segundo cateto : " ) )
7

8 # Usa a fun ç ã o sqrt () para calcular o valor da hipotenusa pelo


Teorema de Pit á goras
9 c = sqrt (( a **2) + ( b **2) )
10 # Outra forma usando a fun ç ã o pow
11 # c = sqrt ( pow (a ,2) + pow (b ,2) )
12

13 # Imprime o valor da hipotenusa


14 print ( " Hipotenusa c : " , c )
15

16 # Sa í da
17 Digite o primeiro cateto :
18 10
19 Digite o segundo cateto :
20 11
21 Hipotenusa c : 14 .8 66 068 74 73 185 06
5
O pacote Numpy

Esse capítulo apresenta o pacote Numpy e algumas de suas funcionalidades


através de aplicações da matemática.
O Numpy (Numerical Python) [15] é um pacote fundamental para compu-
tação científica. Seu objeto principal é o vetor n-dimensional (ndarray). Esse
vetor, também chamado de tensor, deve conter todos os elementos do mesmo
tipo, ou seja, deve ser homogêneo. Há diversas funções disponíveis no NumPy,
as quais podem ser consultadas na documentação oficial disponível em [16].
Para instalar o NumPy em um computador, deve-se abrir um terminal e
digitar o comando:
pip install numpy
Feito isso, é possível usá-lo para criar e manipular objetos, como será apre-
sentado nas seções a seguir:

5.1. Arrays
Para criar um array basta usar o comando array, como no exemplo a
seguir:

Exemplo 5.1. Criando um array simples usando o NumPy:


1 # Importando o pacote Numpy
2 import numpy as np
3

4 a = np . array ([1 , 2 , 3 , 4 , 5 , 6])


5

6 # Imprime todos os elementos do array

49
50 Andréa Lins e Lins Souza

7 print ( a )
8 # Imprime somente o primeiro elemento do array
9 print ( a [0])
10

11 # Sa í da
12 [1 2 3 4 5 6]
13 1

O exemplo seguinte mostra diversas outras formas para criar arrays com o
NumPy:

Exemplo 5.2. Outras formas de criar arrays usando o NumPy:


1 # Array com todos os elementos iguais a 0 ( zero )
2 a0 = np . zeros (2)
3 print ( a0 )
4 # Sa í da
5 [0. 0.]
6

7 # Array com todos os elementos iguais a 1 ( um )


8 a1 = np . ones (4)
9 print ( a1 )
10 # Sa í da
11 [1. 1. 1. 1.]
12

13 # Array vazio
14 a2 = np . empty (2)
15 print ( a2 )
16 # Sa í da
17 [ -5.73021895 e -300 6.90945411 e -310]
18

19 # Array com elementos inteiros iniciando em 0 com n elementos :


arange ( n )
20 a3 = np . arange (4)
21

22 # Array com elementos igualmente espa ç ados : arange ( valor


inicial , valor final , passo )
23 a4 = np . arange (2 , 9 , 2)
24
Python para matemáticos 51

25 # Array com valores linearmente espa ç ados em um intervalo espec


í fico : linspace ( valor inicial , valor final , n ú mero de
elementos )
26 a5 = np . linspace (0 , 10 , num =5)
27

28 # Especificando o tipo de dado , o padr ã o ( default ) é float ( np .


float64 )
29 a6 = np . ones (2 , dtype = np . int64 )
30

31 print ( a3 )
32 print ( a4 )
33 print ( a5 )
34 print ( a6 )
35

36 # Sa í da
37 [0 1 2 3]
38 [2 4 6 8]
39 [ 0. 2.5 5. 7.5 10. ]
40 [1 1]

5.1.1. Operações básicas usando arrays

É possível usar os operadores aritméticos para realizar operações com ar-


rays, como veremos no exemplo seguinte:

Exemplo 5.3. Operações básicas com arrays usando o NumPy:


1 # Importando o pacote Numpy
2 import numpy as np
3

4 data = np . array ([1 , 2])


5 ones = np . ones (2 , dtype = int )
6 soma = data + ones
7 subt = data - ones
8 mult = data * data
9 divi = data / data
10 print ( soma )
11 print ( subt )
12 print ( mult )
52 Andréa Lins e Lins Souza

13 print ( divi )
14

15 # Sa í da
16 [2 3]
17 [0 1]
18 [1 4]
19 [1. 1.]

5.2. Matrizes

É possível criar listas de listas com o NumPy, para criar um array 2D


(matriz) e acessar os seus elementos, como no exemplo abaixo:
Exemplo 5.4. Usando o NumPy para criar e acessar elementos de uma matriz:
1 # Importando o pacote Numpy
2 import numpy as np
3

4 data = np . array ([[1 , 2] , [3 , 4] , [5 , 6]])


5 print ( data )
6 # Transposta da matriz
7 print ( " \ n " , np . transpose ( data ) )
8 # Criando uma matriz como o comando matrix
9 M = np . matrix ( data )
10 print ( " \ n " ,M )
11 print ( " \ n " , np . transpose ( M ) )
12 # Sa í da
13 [[1 2]
14 [3 4]
15 [5 6]]
16

17 [[1 3 5]
18 [2 4 6]]
19

20 [[1 2]
21 [3 4]
22 [5 6]]
23

24 [[1 3 5]
Python para matemáticos 53

25 [2 4 6]]
26

27 # Acessando o dado do elemento 0 na posi ç ã o 1


28 print ( " \ n " , data [0 , 1])
29 # Acessando os dados dos elementos 0 at é 2 , na posi ç ã o 0.
30 print ( " \ n " , data [0:2 , 0])
31 # Sa í da
32 2
33 [1 3]
34

35 # shape retorna o n ú mero de linhas e de colunas da matriz


36 forma = data . shape
37 # size retorna o n ú mero de elementos da matriz
38 num_elem = data . size
39

40 print ( " \ n " , forma )


41 print ( " \ n " , num_elem )
42 # Sa í da
43 (3 , 2)
44 6
45

46 # Os tr ê s comandos abaixo s ã o id ê nticos : acessa elementos da


posi ç ã o 1 at é o final (3) .
47 print ( " \ n " , data [1:3])
48 print ( " \ n " , data [1: forma [0]])
49 print ( " \ n " , data [1:])
50 # Sa í da
51 [[3 4]
52 [5 6]]
53

54 [[3 4]
55 [5 6]]
56

57 [[3 4]
58 [5 6]]
54 Andréa Lins e Lins Souza

5.3. Aplicações

5.3.1. Notação científica


Pode-se usar o NumPy para transformar um número decimal para a notação
científica:

Exemplo 5.5. Usando o NumPy para escrever números em notação científica:


1 import numpy as np
2 a = 12
3 b = -3
4 n = 100
5 c = (( a + b ) ** n ) * n ** n
6 print ( np . f o r m a t _ f l o a t _ s c i e n t i f i c ( c ) )
7 # especificando o n ú mero de casas decimais
8 print ( np . f o r m a t _ f l o a t _ s c i e n t i f i c (c , 4) )
9

10 # Sa í da
11 2. 65 61 398 88 75 874 77 e +295
12 2.6561 e +295

5.3.2. Calculando integrais


No Exemplo 5.6 vamos calcular a seguinte integral:
Z 0
2
e−x dx (5.1)
−∞

Essa integral está representada na Figura 5.1 como a área marrom do gráfico.

Exemplo 5.6. Calcula a integral de uma função f de a até b usando a regra


dos trapézios com n intervalos:
1 # Importando o pacote Numpy
2 import numpy as np
3

4 # Integra f de a a b , usando a regra dos trap é zios com n


intervalos .
5 def integracao (f , a , b , n =100) :
Python para matemáticos 55

Figura 5.1: Gráfico da função f (x) = e−x (verde) e área (marrom) correspon-
2

dente ao valor aproximado da integral de f entre -5 e 0.

6 x = np . linspace (a , b , n +1) # Coordenadas dos intervalos


7 h = x [1] - x [0] # Espa ç amento entre intervalos
8 I = h *( sum ( f ( x ) ) - 0.5*( f ( a ) + f ( b ) ) )
9 return I
10

11 # Definindo o integrando
12 def funcao ( x ) :
13 return np . exp ( - x **2)
14

15 menos_infinito = -5 # Aproxima ç ã o de menos infinito


16 I = integracao ( funcao , menos_infinito , 0 , n =1000)
17 print ( ’ Valor da integral : ’ , I )
18

19 # Sa í da :
20 Valor da integral : 0. 88 622 69 25 451 37 72

5.3.3. Solução de sistemas lineares


Usando o NumPy, é possível encontrar a solução de sistemas lineares através
do comando linalg.solve.

Exemplo 5.7. Calcular a solução do sistema de equações

x0 + 2x1 = 1

3x0 + 5x1 = 2
:
56 Andréa Lins e Lins Souza

1 # Importando o pacote Numpy


2 import numpy as np
3

4 a = np . array ([[1 , 2] , [3 , 5]])


5 b = np . array ([1 , 2])
6 x = np . linalg . solve (a , b )
7 print ( x )
8

9 # Para verificar se a solu ç ã o est á correta ( True ) , use o


comando :
10 s = np . allclose ( np . dot (a , x ) , b )
11 print ( s )
12

13 # Sa í da
14 [ -1. 1.]
15 True
6
O pacote Matplotlib

Nesse capítulo será usado o pacote Matplotlib para gerar gráficos e visua-
lizar dados em Python.
O pacote Matplotlib [17] é útil para visualizar dados em Python. Com
ele é possível desenhar gráficos de diversas formas, fazer figuras interativas e
exportá-los em diferentes formatos. Para conhecer as opções disponíveis no
Matplotlib consulte a documentação oficial disponível [18].
Para instalar o Matplotlib em um computador, deve-se abrir um terminal
e digitar o comando:
pip install matplotlib
Feito isso, é possível importar o Matplotlib em códigos do Python, usando
o comando:
import matplotlib.pyplot as plt
Por padrão, é recomendável nomeá-la como plt.
No exemplo a seguir, o Matplotlib será usado para visualizar dados gerados
através do módulo NumPy, o qual foi apresentado no Capítulo 5.

Exemplo 6.1. Criando gráficos simples com o Matplotlib usando dados gera-
dos no NumPy:
1 # Importando a Matplotlib
2 import matplotlib . pyplot as plt
3 # Importando o NumPy
4 import numpy as np
5

6 # Criando arrays com os dados


7 a = np . array ([2 , 1 , 5 , 7 , 4 , 6 , 8 , 14 , 10 , 9 , 18 , 20 , 22])

57
58 Andréa Lins e Lins Souza

8 b = np . sort ( a )
9

10 # Plotando os arrays a e b em figuras separadas


11 plt . plot ( a )
12 plt . show ()
13 plt . plot (b , color = ’ red ’)
14 plt . show ()
15

16 # Plotando os arrays na mesma figura


17 plt . plot ( a )
18 plt . plot (b , color = ’ red ’)
19 plt . show ()

A Figura 6.1 ilustra os resultados gerados com o código acima. Figura 6.1a
mostra o gráfico gerado através dos comandos das linhas 11 e 12 do código, já
as linhas 13 e 14 têm como resultado o gráfico gerado na Figura 6.1b e, por
fim, a Figura 6.1c exibe o gráfico gerado pelos comandos das linhas 17, 18 e
19. Observe que, para gerar uma figura com todos os gráficos foi necessário
incluir o comando plt.show() somente uma vez, após todos os plt.plot().

Exemplo 6.2. Gráficos simples com diferentes cores e estilos com o Matplotlib
usando sequências de dados igualmente espaçados geradas no NumPy através
da função linspace():
1 # Importando a Matplotlib
2 import matplotlib . pyplot as plt
3 # Importando o NumPy
4 import numpy as np
5

6 # Criando arrays com os dados


7 # linspace ( inicio , fim , quantidade ) cria uma quantidade de dados
uniformemente espa ç ados ao longo de um intervalo [ inicio , fim
] especificado .
8 x = np . linspace (0 , 5 , 10)
9 y = np . linspace (0 , 10 , 10)
10

11 # Plotando os dados
12 plt . plot (x , y , ’ purple ’) # linha
13 plt . plot (y , x , ’o ’) # pontos
Python para matemáticos 59

14 plt . plot ( x +y , y , ’ -- ’) # tracejado


15 plt . plot (y , y , ’ -o ’) # linha e pontos
16 plt . show ()

Exemplo 6.3. Gráficos de superfícies com o Matplotlib:


1 # Importando a Matplotlib
2 import matplotlib . pyplot as plt
3 # Importando o NumPy
4 import numpy as np
5

6 fig = plt . figure ( figsize =(10 ,10) )


7 ax = fig . add_subplot ( projection = ’3 d ’)

(a) Gráfico único. (b) Gráfico único.

(c) Composição de gráficos.

Figura 6.1: Gráficos gerados com o Matplotlib.


60 Andréa Lins e Lins Souza

Figura 6.2: Gráficos com diferentes estilos gerados com o Matplotlib.

8 X = np . arange ( -5 , 5 , 0.15)
9 Y = np . arange ( -5 , 5 , 0.15)
10 X , Y = np . meshgrid (X , Y )
11 R = np . sqrt ( X **2 + Y **2)
12 Z = np . cos ( R )
13

14 ax . plot_surface (X , Y , Z , rstride =1 , cstride =1 , cmap = ’ viridis ’)


15 plt . show ()

A Figura 6.3 ilustra o gráfico da superfície gerada com o código acima.

Para salvar uma figura, pode-se utilizar o comando:


plt.savefig(’nome_da_imagem.png’)
Python para matemáticos 61

Figura 6.3: Gráfico de superfície com o Matplotlib.


62 Andréa Lins e Lins Souza
Referências Bibliográficas

[1] VAN ROSSUM, G. & DRAKE, F. (2009). Python 3 Reference Manual.


CreateSpace.

[2] GUO, P. (2014).Python Is Now the Most Popular Introductory Teaching


Language at Top U.S. Universities. Communications of the ACM. Dis-
ponível em https://cacm.acm.org/blogs/blog-cacm/176450-pytho
n-is-now-the-most-popular-introductory-teaching-language-a
t-top-us-universities/fulltext. Acessado em 20 de Outubro de
2022.

[3] CASS, S. (2022). Top Programming Languages 2022. Disponível em ht


tps://spectrum.ieee.org/top-programming-languages-2022.
Acessado em 19 de Outubro de 2022.

[4] Tiobe index for October 2022. Disponível em https://www.tiobe.com/


tiobe-index/

[5] Base Nacional Comum Curricular. Disponível em http://basenacion


alcomum.mec.gov.br/. Acessado em 20 de Outubro de 2022.

[6] Configurações e Uso do Python. Disponível em https://docs.python.


org/pt-br/3/using/index.html. Acessado em 21 de Outubro de 2022.

[7] A Referência da Linguagem Python. Disponível em https://docs.pyt


hon.org/pt-br/3/reference/index.html. Acessado em 21 de Outubro
de 2022.

63
64 Andréa Lins e Lins Souza

[8] Installing Jupyter - Get up and running on your computer Disponível em


https://jupyter.org/install.html. Acessado em 21 de Outubro de
2022.

[9] Getting Started with Python in VS Code Disponível em https://code


.visualstudio.com/docs/python/python-tutorial. Acessado em 21
de Outubro de 2022.

[10] math — Funções matemáticas Disponível em https://docs.python.or


g/pt-br/3/library/math.html. Acessado em 18 de Setembro de 2022.

[11] The Python Standard Library Disponível em https://docs.python.or


g/3/library/#the-python-standard-library. Acessado em 18 de
Setembro de 2022.

[12] Online Python Disponível em https://www.online-python.com/.


Acessado em 22 de Outubro de 2022.

[13] Programiz - Python Online Compiler Disponível em https://www.prog


ramiz.com/python-programming/online-compiler/. Acessado em 22
de Outubro de 2022.

[14] Welcome to Colaboratory Disponível em https://colab.research.goo


gle.com/. Acessado em 22 de Outubro de 2022.

[15] NumPy documentation Disponível em https://numpy.org/doc/stable


/index.html. Acessado em 22 de Outubro de 2022.

[16] NumPy Reference Disponível em https://numpy.org/doc/stable/ref


erence/index.html#reference. Acessado em 22 de Outubro de 2022.

[17] Matplotlib: Visualization with Python Disponível em https://matplo


tlib.org/. Acessado em 22 de Outubro de 2022.

[18] Matplotlib 3.7.1 documentation Disponível em https://matplotlib.o


rg/stable/index.html. Acessado em 22 de Outubro de 2022.

You might also like