Buscar

python_book

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 51 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 51 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 51 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/307925106
Computação Científica usando Python: uma introdução a linguagem de
programação.
Book · September 2016
CITATIONS
0
READS
5,093
2 authors:
Some of the authors of this publication are also working on these related projects:
Computação Científica View project
Física Teórica View project
Rosevaldo de Oliveira
Universidade Federal de Mato Grosso (UFMT)
4 PUBLICATIONS   11 CITATIONS   
SEE PROFILE
Victor Hugo Garcia Campos
University of Campinas
2 PUBLICATIONS   0 CITATIONS   
SEE PROFILE
All content following this page was uploaded by Rosevaldo de Oliveira on 08 September 2016.
The user has requested enhancement of the downloaded file.
https://www.researchgate.net/publication/307925106_Computacao_Cientifica_usando_Python_uma_introducao_a_linguagem_de_programacao?enrichId=rgreq-6ecfd73b3fceb89352ec57ad2bc283e9-XXX&enrichSource=Y292ZXJQYWdlOzMwNzkyNTEwNjtBUzo0MDQxNTk4ODM5NTYyMjhAMTQ3MzM3MDYzMzU4Mg%3D%3D&el=1_x_2&_esc=publicationCoverPdf
https://www.researchgate.net/publication/307925106_Computacao_Cientifica_usando_Python_uma_introducao_a_linguagem_de_programacao?enrichId=rgreq-6ecfd73b3fceb89352ec57ad2bc283e9-XXX&enrichSource=Y292ZXJQYWdlOzMwNzkyNTEwNjtBUzo0MDQxNTk4ODM5NTYyMjhAMTQ3MzM3MDYzMzU4Mg%3D%3D&el=1_x_3&_esc=publicationCoverPdf
https://www.researchgate.net/project/Computacao-Cientifica?enrichId=rgreq-6ecfd73b3fceb89352ec57ad2bc283e9-XXX&enrichSource=Y292ZXJQYWdlOzMwNzkyNTEwNjtBUzo0MDQxNTk4ODM5NTYyMjhAMTQ3MzM3MDYzMzU4Mg%3D%3D&el=1_x_9&_esc=publicationCoverPdf
https://www.researchgate.net/project/Fisica-Teorica?enrichId=rgreq-6ecfd73b3fceb89352ec57ad2bc283e9-XXX&enrichSource=Y292ZXJQYWdlOzMwNzkyNTEwNjtBUzo0MDQxNTk4ODM5NTYyMjhAMTQ3MzM3MDYzMzU4Mg%3D%3D&el=1_x_9&_esc=publicationCoverPdf
https://www.researchgate.net/?enrichId=rgreq-6ecfd73b3fceb89352ec57ad2bc283e9-XXX&enrichSource=Y292ZXJQYWdlOzMwNzkyNTEwNjtBUzo0MDQxNTk4ODM5NTYyMjhAMTQ3MzM3MDYzMzU4Mg%3D%3D&el=1_x_1&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Rosevaldo_Oliveira?enrichId=rgreq-6ecfd73b3fceb89352ec57ad2bc283e9-XXX&enrichSource=Y292ZXJQYWdlOzMwNzkyNTEwNjtBUzo0MDQxNTk4ODM5NTYyMjhAMTQ3MzM3MDYzMzU4Mg%3D%3D&el=1_x_4&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Rosevaldo_Oliveira?enrichId=rgreq-6ecfd73b3fceb89352ec57ad2bc283e9-XXX&enrichSource=Y292ZXJQYWdlOzMwNzkyNTEwNjtBUzo0MDQxNTk4ODM5NTYyMjhAMTQ3MzM3MDYzMzU4Mg%3D%3D&el=1_x_5&_esc=publicationCoverPdf
https://www.researchgate.net/institution/Universidade_Federal_de_Mato_Grosso_UFMT?enrichId=rgreq-6ecfd73b3fceb89352ec57ad2bc283e9-XXX&enrichSource=Y292ZXJQYWdlOzMwNzkyNTEwNjtBUzo0MDQxNTk4ODM5NTYyMjhAMTQ3MzM3MDYzMzU4Mg%3D%3D&el=1_x_6&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Rosevaldo_Oliveira?enrichId=rgreq-6ecfd73b3fceb89352ec57ad2bc283e9-XXX&enrichSource=Y292ZXJQYWdlOzMwNzkyNTEwNjtBUzo0MDQxNTk4ODM5NTYyMjhAMTQ3MzM3MDYzMzU4Mg%3D%3D&el=1_x_7&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Victor_Campos16?enrichId=rgreq-6ecfd73b3fceb89352ec57ad2bc283e9-XXX&enrichSource=Y292ZXJQYWdlOzMwNzkyNTEwNjtBUzo0MDQxNTk4ODM5NTYyMjhAMTQ3MzM3MDYzMzU4Mg%3D%3D&el=1_x_4&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Victor_Campos16?enrichId=rgreq-6ecfd73b3fceb89352ec57ad2bc283e9-XXX&enrichSource=Y292ZXJQYWdlOzMwNzkyNTEwNjtBUzo0MDQxNTk4ODM5NTYyMjhAMTQ3MzM3MDYzMzU4Mg%3D%3D&el=1_x_5&_esc=publicationCoverPdf
https://www.researchgate.net/institution/University_of_Campinas?enrichId=rgreq-6ecfd73b3fceb89352ec57ad2bc283e9-XXX&enrichSource=Y292ZXJQYWdlOzMwNzkyNTEwNjtBUzo0MDQxNTk4ODM5NTYyMjhAMTQ3MzM3MDYzMzU4Mg%3D%3D&el=1_x_6&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Victor_Campos16?enrichId=rgreq-6ecfd73b3fceb89352ec57ad2bc283e9-XXX&enrichSource=Y292ZXJQYWdlOzMwNzkyNTEwNjtBUzo0MDQxNTk4ODM5NTYyMjhAMTQ3MzM3MDYzMzU4Mg%3D%3D&el=1_x_7&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Rosevaldo_Oliveira?enrichId=rgreq-6ecfd73b3fceb89352ec57ad2bc283e9-XXX&enrichSource=Y292ZXJQYWdlOzMwNzkyNTEwNjtBUzo0MDQxNTk4ODM5NTYyMjhAMTQ3MzM3MDYzMzU4Mg%3D%3D&el=1_x_10&_esc=publicationCoverPdf
VICTOR HUGO GARCIA DE CAMPOS
ROSEVALDO DE OLIVEIRA
Computação Cient́ıfica usando Python
1a Edição
Rondonópolis
Edição do Autor
2016
Sumário
Sumário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1 PRIMEIROS CONTATOS . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1 Ambientes de Desenvolvimento . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1 Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.2 Ipython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.3 Spyder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2 Diferenças entre Python 2.x e 3.x . . . . . . . . . . . . . . . . . . . . . 8
1.3 Importando Módulos de Bibliotecas . . . . . . . . . . . . . . . . . . . . 9
1.4 Comandos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5 Sequências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.5.1 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.5.2 Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.6 Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.6.1 Definindo Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.7 Controle de Fluxo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.7.1 Condicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.7.2 If - Then - Else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.7.3 Laço For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.7.4 Laço While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2 NUMPY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1 Funções Matemáticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1.1 Funções Gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1.1.1 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.1.2 Números Complexos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.1.2.1 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2.1 Criando Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2.1.1 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.3 Álgebra Linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.3.1 Utilizando arrays como matrizes . . . . . . . . . . . . . . . . . . . . . . . . 27
2.3.1.1 Exerćıcios: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.2 Produto Escalar e Vetorial . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3.2.1 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3.2.2 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.4 Polinômios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4.0.1 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.5 Estat́ıstica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.0.1 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.0.2 Exerćıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3 MATPLOTLIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.1 Gráficos Simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.1.1 Mudando Cores e Espessuras da linha. . . . . . . . . . . . . . . . . . . . . 35
3.2 Gráficos 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4 SYMPY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.1 O que Computação Simbólica . . . . . . . . . . . . . . . . . . . . . . . 39
4.2 Operações Básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2.1 Substituições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2.1.1 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.2.1.2 Convertendo Strings em Expressões SymPy . . . . . . . . . . . . . . . . . . . . 41
4.2.1.3 evalf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2.2 lambdify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.3 Simplificações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.3.1 simplify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.3.2 Funções de Simplificação Polinomial . . . . . . . . . . . . . . . . . . . . . . 43
4.3.2.1 expand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3.2.2 factor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3.2.3 colect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3.2.4 apart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.3.3 Simplificaçõs Trigonométricas . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.3.3.1 trigsimp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.3.3.2 expand trig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.4 Cálculo Diferencial e Integral . . . . . . . . . . . . . . . . . . . . . . . . 45
4.4.1 Derivadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.4.2 Integrais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.5 Limites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5 EXERĆICIOS DE FIXAÇÃO . . . . . . . . . . . . . . . . . . . . . . . 48
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
1 Primeiros Contatos
Python é uma linguagem de programação interpretada, orientada à objeto, de alto ńıvel
e de semântica dinâmica.[6] Possui tipagem dinâmica, é rápida,e sua simplicidade o torna
atraente e produtiva.
Possui uma infinidade de bibliotecas e hoje é uma das linguagens mais utilizadas no
mundo.
Para computação cient́ıfica Python possui ótimas bibliotecas, as mais usadas são NumPy,
SciPy, Matplotlib, Pandas e Sympy. Com essas bibliotecas podemos trabalhar com cálculo
numérico, processamento de sinais, construir gráficos, trabalhar com expressões matemáticas
(Computer Algebra System), estat́ıstica e muito mais.
O Python é incrivelmente amplo, existe inúmeros programas desenvolvido nele, que va-
riam desde programas de escritório à edição de imagens e v́ıdeo. Nosso foco serão os módulos
matemáticos e cient́ıficos, veremos que seus recursos equivalem a softwares cient́ıficos pagos,
devido ao empenho de diversos cientistas do mundo inteiro.
1.1 Ambientes de Desenvolvimento
1.1.1 Terminal
Para usuários Linux basta digitar ”python”em um terminal que aparecerá o prompt da
seção interativa >>>.
Algumas distribuições vem com python 3.x por padrão, como Arch Linux. Nesse caso
para acessar o python 2.x digite python2 no terminal.
Figura 2 – Comando python no emulador de terminal linux
Ao iniciar o python, o terminal nos mostra a versão, que no caso é a 2.7.8, versão que
trabalharemos aqui. Hoje apesar de existir python 3.x a versão 2.x continua em desenvolvi-
mento, podendo então o usuário escolher qual versão lhe agrada.
Mais a frente haverá uma explicação das principais diferenças entre as duas versões.
Não preocupe-se com os comandos a prinćıpio, o objetivo aqui é diferenciar os recursos
de cada ambiente.
(a) Numpy. (b) Scipy.
(c) Matplotlib.
(d) Sympy
Figura 1 – Imagens da utilização de algumas bibliotecas do Python.
>>> 3+5
8
>>> a = 7
>>> for i in xrange (5):
... print a*i
...
0
7
14
21
28
>>>
No terminal linux podemos utilizar alguns recursos interessantes como mostra a figura 3,
mas não são apresentados outros recursos como listas de comandos e documentação conforme
o usuário digita.
Figura 3 – Python num terminal linux.
É o mais simples terminal para utilizar o python em seções interativas.
1.1.2 Ipython
O Ipython é formidável. É muito versátil. Possui um console simples com os recursos de
um terminal.
Um console baseado em Qt com recursos de edição de texto, lista os comandos e exibe
a documentação dos comandos conforme o usuário digita, pode configurá-lo para impressão
matemática bonita via utf-8 ou latex, configurá-lo para mostrar os gráficos embutidos no
próprio console.
E o notebook que é um ambiente no navegador de internet a qual cada conjunto de
comando é separado por células, o usuário pode retornar as células anteriores para modi-
ficação, pode-se salvar o arquivo de trabalho para posterior edição, além dos outros recursos
mencionados nos consoles anteriores e muito mais.
(a) Console do Ipython. (b) Qt console do Ipython.
(c) Ipython notebook
Figura 4 – Consoles e Notebok do Ipython.
Figura 5 – Spyder - Ambiente de Desenvolvimento Cient́ıfico.
1.1.3 Spyder
Spyder para computação cient́ıfica, é o canivete súıço para o desenvolvedor python. Pos-
sui em um só programa, um console interativo, Ipython Qtconsole, editor de texto para
scripts, um explorador de documentação de bibliotecas, explorador de variáveis, explorador
de arquivos, explorador de histórico e outros recursos que aumentam a produtividade do
usuário.
Nas preferências, pode-se configurar para a importação das bibliotecas automaticamente
na inicialização, configurar atalhos, cores, diretório de trabalho, etc...
1.2 Diferenças entre Python 2.x e 3.x
Quando estudamos programação em Python, é comum nos perguntar: Qual versão do
Python devo estudar a versão 2.x ou a 3.x?
Observando as diferenças entre as duas versões, principalmente na prática, percebe-se
poucas diferenças na qual possam destacar mais eficiência em uma delas. De fato a alguns
anos atrás a versão 2.x encontrava-se com mais bibliotecas cient́ıficas dispońıveis, porém hoje
não acontece mais.
É óbvio que é posśıvel encontrar uma ou outra biblioteca dispońıvel para uma das duas
versões, porém estudando uma dela é posśıvel migrar para a outra versão sem maiores
problemas.
As principais diferenças estão principalmente no uso de parêntesis em funções como
print, IOerror, resultados de comparações utilizando string e tupla por exemplo (na versão
2.x imprime um false, enquanto que a versão 3.x imprime um erro).
Porém a mudança mais significativa para usuários que fazem uso da computação ci-
ent́ıfica, talvez seja da necessidade de se utilizar na versão 2.x o comando ”from future
import division, para que o resultado da divisão de números inteiros resultem no tipo de
ponto flutuante (não é necessário na versão 3.x), e algumas mudanças em algumas funções
matemáticas como por exemplo na função round, que na função 2.x arredonda sempre para
o menor número inteiro, caso que não acontece na versão 3.x (critério de arredondamento
utilizado comumente na matemática).
Recomenda-se que o iniciante escolha uma versão para começar seu estudo, e se es-
pecialize, pois encontrando a necessidade de converter seu código para outra versão, não
encontrará muita dificuldade, principalmente porque existem módulos que já fazem isso au-
tomaticamente, como py2to3.
1.3 Importando Módulos de Bibliotecas
Quando tiver um projeto, antes de qualquer código,é importante uma pesquisa nas
bibliotecas. Sempre existe algo que alguém fez para você adiantar sua programação.
Encontrando o que precisa é preciso saber as formas para a importação das classes e
funções a utilizar.
a) Podemos importar apenas o módulo.
In [1]: import math
In [2]: math.pi
Out [2]: 3.141592653589793
In [3]: math.cos(math.radians (30))
Out [3]: 0.8660254037844387
In [4]: math.sin(math.radians (90))
Out [4]: 1.0
b) Podemos importar módulos utilizando abreviações ou mesmo outros nomes.
In [13]: import sympy as sy
In [14]: sy.var(’s t’)
Out [14]: (s, t)
In [15]: a = s**2 -4*s-9
In [16]: sy.solve(a,s)
Out [16]: [2 + sqrt (13), -sqrt (13) + 2]
c) Podemos importar algumas funções
In [5]: from numpy import radians , sin , cos , exp
In [6]: sin(radians (45))
Out [6]: 0.70710678118654746
In [7]: sin(radians (90))
Out [7]: 1.0
In [8]: cos(radians (90))
Out [8]: 6.123233995736766e-17
In [9]: exp(-radians (36))*cos(radians (36))
Out [9]: 0.43160093198935257
d) Podemos importar tudo de um módulo.
In [1]: from pylab import *
...: from random import *
In [2]: x = linspace (0 ,50 ,100)
In [3]: y = randn (100) *50
In [4]: plot(x,y)
Out [4]: [<matplotlib.lines.Line2D at 0x7f7e940e6050 >]
In [5]: show()
Os códigos acima geram o seguinte gráfico:
1.4 Comandos Básicos
O python possui atribuição dinâmica, devido a isso para fazer a atribuição a uma variável
basta digitar a variável, o sinal de igual ’=’, seguido do valor a qual deseja atribuir.
Os principais tipos de dados que utilizaremos nesta seção são: string, integer, float, list,
tuple, dict.
Ao instalar o Python há alguns módulos que já vem por padrão. Vamos fazer alguns
testes como calculadora:
>>> 7+8
15
>>> (1+7j)+(3-8j)
(4-1j)
>>> 2**2
4
>>> 2-5
-3
>>> 3**(0.5)
1.7320508075688772
Para usar funções e constantes matemáticas podemos usar o módulo math, para isso o
importamos da seguinte maneira:
>>> import math
>>> math.sin(math.pi *3/2)
-1.0
>>> math.sin(math.pi *3/6)
1.0
>>> math.sin(math.pi *3/16)
0.5555702330196022
>>> math.cos(math.pi)**2 + math.sin(math.pi)**2
1.0
Usando a função dir podemos podemos ver o diretório de objetos dispońıveis para o
módulo.
>>> dir(math)
[’__doc__ ’, ’__file__ ’, ’__name__ ’, ’__package__ ’, ’acos’, ’acosh
’, ’asin’, ’asinh’, ’atan’, ’atan2’, ’atanh’, ’ceil’, ’
copysign ’, ’cos’, ’cosh’, ’degrees ’, ’e’, ’erf’, ’erfc’, ’exp’
, ’expm1’, ’fabs’, ’factorial ’, ’floor’, ’fmod’, ’frexp’, ’
fsum’, ’gamma’, ’hypot’, ’isinf’, ’isnan’, ’ldexp’, ’lgamma ’,
’log’, ’log10’, ’log1p’, ’modf’, ’pi’, ’pow’, ’radians ’, ’sin’
, ’sinh’, ’sqrt’, ’tan’, ’tanh’, ’trunc’]
Com o sinal ” ” utilizamos o último resultado calculado.
>>> # Aluguel de um carro
...
>>> val_in = 40
>>> taxa = 1.25
>>> km_perc = 120
>>> taxa*km_perc
150.0
>>> _ + val_in
190.0
No Python a tipagem das variáveis é dinâmica, portanto, é importante atentar para a
forma na qual irá atribuir valores para as variáveis. Na dúvida use a função type( ).
>>> a = 8
>>> b = 5
>>> a/b
1
>>> type(a)
<type ’int’>
>>> type(b)
<type ’int’>
>>> a = 8.
>>> b = 5.
>>> a/b
1.6
>>> type(a)
<type ’float’>
>>> type(b)
<type ’float’>
A situação acima mostrada pode causar confusão a prinćıpio, porém atribuindo as variáveis
corretamente como mostrado acima ( a=8. , b=5.), obterá o resultado desejado. Neste caso
o ponto ”. ” fará com que o python interprete como tipo de ponto flutuante, sem o ponto
interpretará como inteiro.
Se precisar converter uma variável para inteiro basta usar a função int( ).
Pode também ser conveniente converter um inteiro em ponto flutuante usando a função
float( ).
A função round( ) é utilizado para arredondar o valor já que int( ) pega apenas o inteiro
do valor.
Atribuindo dados entre aspas ‘ ‘, estará avisando ao python que o dado a atribuir é uma
string.
Observe o exemplo abaixo:
>>> a = 3.5
>>> x = int(a)
>>> type(x)
<type ’int’>
>>> x
3
>>> x = int(round(a))
>>> x
4
>>> b = ’8’
>>> type(b)
<type ’str’>
>>> y = float(b)
>>> y
8.0
Assim como outras linguagens de programação o inteiro possui um valor máximo, o
módulo sys nos informa este valor como a função sys.maxint. Acima deste valor é caracte-
rizado o typo ”long”. Observe:
>>> import sys
>>> sys.maxint
2147483647
>>> type(sys.maxint)
<type ’int’>
>>> x = sys.maxint + 1
>>> x
2147483648L
>>> type(x)
<type ’long’>
1.5 Sequências
Strings, listas e tuplas, são sequências. Elas podem ser indexados e divididos.
Tuplas e strings são imutáveis. Isso significa que não podemos mudar individualmente
elementos de uma tupla e nem caracteres de uma string. Já listas são mutáveis.
A tabela abaixo apresenta alguns comandos de sequências:
a[i] retorna o conteúdo da posição i
a[i : j] retorna os elementos i até j − 1
len( a) retorna o número de elementos da sequência
min( a) retorna o menor valor na sequência
max( a) retorna o maior valor na sequência
x in a retorna true se x ∈ a sequência a
a + b concatena a e b
n ∗ a cria n cópias da sequência a
Tabela 1 – Alguns comandos úteis para sequências.
1.5.1 Strings
Strings são ( imutáveis) sequências de caracteres. Uma string pode ser definida usando
aspas simples, dupla ou tripla.
Utiliza-se ’ ’, para atribuir a variável uma string vazia.
O número de caracteres de uma string é obtida pelo comando len( ).
Como qualquer tipo de sequência em python é válido os comandos na tabela 1. Observe:
>>> x = ’teste’
>>> type(x)
<type ’str’>
>>> y = ’este e um ’
>>> z = y + x
>>> z
’este e um teste’
>>> k = ’’
>>> k
’’
>>> len(k)
0
>>> len(z)
15
>>> z[2]
’t’
>>> z[10:14]
’test’
>>> max(z)
’u’
>>> min(z)
’ ’
Strings possui inúmeras funções úteis. Pode-se encontrar usando o comando dir( ) e help.
Não será discutido muitas funções em strings, pois não é o objetivo deste trabalho este
foco. Porém algumas funções são úteis, como: upper( ), split( ), join( ). Observe:
>>> a = ’Isto e uma sequencia ’
>>> a = a.upper()
>>> a
’ISTO E UMA SEQUENCIA ’
>>> a.split()
[’ISTO’, ’E’, ’UMA’, ’SEQUENCIA ’]
>>> a = "O cachorro esta faminto. O gato e chato. A cobra e
perigosa"
>>> a.split(".")
[’O cachorro esta faminto ’, ’ O gato e chato ’, ’ A cobra e
perigosa ’]
>>> a = a.split(".")
>>> b = ".".join(a)
>>> b
’O cachorro esta faminto. O gato e chato. A cobra e perigosa ’
1.5.2 Listas
Listas são sequências mutáveis de objetos. Atribúımos uma lista a uma variável entre
colchetes, separando cada objeto por v́ırgula. Os objetos dentro de uma lista, podem ser de
qualquer tipo. Pode-se gerar uma lista vazia apenas por [ ].
Abaixo alguns exemplos:
>>> a = [’abelha ’ , 43.98 , [1,2,3,4]]
>>> a
[’abelha ’, 43.98 , [1, 2, 3, 4]]
>>> len(a)
3
>>> len(a[2])
4
>>> type(a)
<type ’list’>
>>> type(a[2])
<type ’list’>
>>> type(a[0])
<type ’str’>
>>> type(a[1])
<type ’float’>
As operações da tabela 1 são muito úteis:
>>> a = [0,1,2,3,4,5,6]
>>> b = [7,8,9]
>>> a+b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> c = a[5:] + b
>>> c
[5, 6, 7, 8, 9]
>>> max(b)
9
>>> min(b)
7
>>> 6 in b
False
>>> 6 in a
True
Como listas são mutáveis, podemos alterar objetos nela individualmente:
>>> a = [1,2,3,4,5]
>>> a[0] = ’u’
>>> a
[’u’, 2, 3, 4, 5]
>>> a[4] = ’python ’
>>> a
[’u’, 2, 3, 4, ’python ’]
Pode-se adicionar objetos ao fim de uma lista com o comando append( ), e remover o
primeiro objeto indicado com remove( ):
>>> a = [53 , 26 , -78 , 26]
>>> a.remove (26)
>>> a
[53, -78, 26]
>>> a.append (12)
>>> a
[53, -78, 26, 12]
Um comando muito utilizado para gerar listas de inteiros é o range( ). Veremos adiante
que é muito útil para laços de repetição.
Quando digitamos apenas range( n), na qual n é um número inteiro qualquer, ele gera
uma lista de inteiros começando do 0 até n− 1 com incremento 1.
Com o range, também podemos gerar listas começandocom m, terminado em n−1, com
incremento i, com a sintaxe: range( n,m,i).
Se não indicarmos o incremento, o comando range assumirá 1.
Exemplos:
>>> range (3)
[0, 1, 2]
>>> range (3,9)
[3, 4, 5, 6, 7, 8]
>>> range (3,9,2)
[3, 5, 7]
>>> range(9,3,-1)
[9, 8, 7, 6, 5, 4]
>>> range(9,3,-2)
[9, 7, 5]
1.6 Funções
O significado de função na matemática e na programação possui significados diferen-
tes. Na programação significa uma nomeada sequência de operações que executa uma com-
putação.
Um exemplo é a função sqrt( ) do módulo math, a qual computa a raiz quadrada do
argumento inserido entre parêntesis.
>>> from math import *
>>> sqrt (4)
2.0
>>> sqrt (9)
3.0
>>> sqrt (5)
2.23606797749979
1.6.1 Definindo Funções
As Funções nos permite agrupar várias declarações em um bloco lógico.
Abaixo segue um modelo de definição de variáveis:
def minha_funcao(arg_1 , arg_2 , ... , arg_n):
’’’ Documentacao opcional ’’’
# Implementacao da funcao
return
Exemplo 1) : Calcule f( x, y) = x2 − 4 y2 − 9, para
a) x=15 e y=-2
b) x=-20 e y=10
c) x=-8 e y=5
>>> def f(x,y):
... return x**2 - 4*y**2 - 9
...
>>> f(15 , -2)
200
>>> f(-20 , 10)
-9
>>> f(-8 , 5)
-45
Exemplo 2: Defina funções para imprimir uma string centralizado entre asterisco.
>>> def retornar_asterisco(n):
... return n* "*"
...
>>> def imp_string_ast(string):
... comp_linha = 46
... ast_str = retornar_asterisco (( comp_linha -len(string))/2)
... print ast_str + string + ast_str
...
>>> imp_string_ast(’Hello World’)
***************** Hello World *****************
1.7 Controle de Fluxo
1.7.1 Condicionais
Os valores True e False são palavras reservadas do python.
Pode-se operar essas duas palavras reservadas usando lógica booleana. Abaixo segue
exemplos com os operadores and , not e or .
>>> True and True
True
>>> False and True
False
>>> a = True
>>> b = False
>>> c = a and b
>>> c
False
>>> True or False
True
>>> not False
True
>>> not True
False
Em código computacional frequentemente precisamos calcular expressões que exijam res-
postas em True e False .
Exemplos:
>>> x = 30
>>> x > 15
True
>>> x > 42
False
>>> x == 30
True
>>> x == 42
False
>>> not x == 42
True
>>> x != 42
True
>>> x >= 30
True
1.7.2 If - Then - Else
A declaração if permite a execução de código condicional. Por exemplo:
>>> a = 17
>>> if a == 0:
... print "a é zero"
... elif a < 0:
... print "a é negativo"
... else:
... print "a é positivo"
...
a é positivo
O a declaração if pode também ter uma parte else, a qual é executado quando a condição
anterior não é satisfeita.
>>> a = 34
>>> if a > 0:
... print "a é positivo"
... else:
... print "a é negativo"
...
a é positivo
Finalmente, tem o elif a qual permite a análise de vários condicionais no mesmo bloco.
>>> a = 17
>>> if a == 0:
... print "a é zero"
... elif a < 0:
... print "a é negativo"
... else:
... print "a é positivo"
...
a é positivo
1.7.3 Laço For
O laço for permite iteração sob uma sequência ( podendo ser, por exemplo uma lista ou
string). Segue um exemplo:
>>> for animal in [’animal ’ , ’gato’ , ’rato’]:
... print animal , animal.upper()
...
animal ANIMAL
gato GATO
rato RATO
Junto com o comando range( ), pode-se iterar sobre listas de incrementos inteiros.
>>> for i in range (5,10):
... print i
...
5
6
7
8
9
1.7.4 Laço While
O laço while permite repetir uma operação enquanto uma condição for verdadeira.
Exemplo 1)
Supondo que gostaŕıamos de saber quantos anos devemos esperar para obter R$200, 00
de juros a uma taxa de 5% investindo R$100, 00 numa conta poupança.
>>> dinheiro = 100
>>> taxa = 0.05
>>> anos = 0
>>> while dinheiro < 200:
... dinheiro += dinheiro*taxa
... anos = anos + 1
...
>>> print " Precisamos esperar ",anos ," anos para obter R$ ",
dinheiro ," de juros. "
Precisamos esperar 15 anos para obter R$ 207.892817941 de
juros.
Exemplo 2)
Faça um programa para calcular o fatorial de um número inteiro positivo. Calcule o
fatorial do número 15.
>>> n = input(’Digite um únmero inteiro positivo: ’)
Digite um únmero inteiro positivo: 15
>>> c = n
>>> res = 1
>>> while c > 1:
... res = res*c
... c = c - 1
...
>>> print n,’! = ’,res ,’ .’
15 ! = 1307674368000 .
2 Numpy
2.1 Funções Matemáticas
2.1.1 Funções Gerais
A biblioteca numpy fornece as principais funções matemáticas ao python. Sua nomecla-
tura é auto-explicativa. Abaixo segue uma tabela com as principais funções.
sin( x ) arctan2( x )
cos( x ) degrees( x )
tan( x ) radians( x )
arcsin( x ) unwrap( x )
arccos( x ) deg2rad( x )
arctan( x ) rad2deg( x )
hypot( x1 , x2 ) sinh( x )
cosh( x1 ) tanh( x )
arcsinh( x ) arccos( x )
arctanh( x ) exp( x )
log( x ) log10( x )
log2( x ) sqrt( x )
Tabela 2 – Funções trigonométricas.
Exemplos:
>>> x = 2.*pi/3
>>> sin(x)
0.86602540378443871
>>> cos(x)
-0.49999999999999978
>>> sin(x)**2 + cos(x)**2
0.99999999999999989
>>> log (4)
1.3862943611198906
>>> log(exp (1))
1.0
>>> log10 (10)
1.0
>>> log2 (2)
1.0
>>> hypot (3,4)
5.0
2.1.1.1 Exerćıcios
1. Calcule as seguintes funções para os valores (−11, 43, 8976, 0.00036).
a) sin(x) ex/2
b) ln(x) sin2(x) + cos(x)
log2(x)
c) ex log10(x)
2. Faça uma função em python para resolver a Equação de Colebrook descrita abaixo,
sabendo que 0 < f ≤ 1, e que a função deverá ter como argumento mı́nimo as variáveis
�
D
, Re e f ( def Colebrook(ed, Re, f))
1√
f
= −2 log
(
�/D
3, 7
+
2, 51
Re
√
f
)
Teste sua solução. Para �
D
= 0.000375 e Re = 1, 37 104, temos f = 0, 0291
2.1.2 Números Complexos
Para gerar um número complexo basta evidenciar o número imaginário acompanhando-o
do ”j”sem nenhum operando entre eles. Com isso pode-se efetuar operações básicas com as
operações convencionais. Vejam:
>>> b = -5 -2j
>>> a+b
(-2+4j)
>>> a/b
( -0.9310344827586208 -0.8275862068965517j)
>>> a*b
(-3-36j)
Abaixo é mostrado algumas funções comumente utilizadas com números complexos.
angle( z ) real( z ) imag( z ) conj( z )
Tabela 3 – Funções complexas.
>>> c = [a,b]
>>> c
[(3+6j), (-5-2j)]
>>> angle(c)
array([ 1.10714872 , -2.76108628])
>>> degrees(angle(c))
array([ 63.43494882 , -158.19859051])
>>> real(a) + real(b)
-2.0
>>> imag(a) + imag(b)
4.0
>>> conj(a)
(3-6j)
2.1.2.1 Exerćıcios
1. Resolva as seguintes operações:
a) (2 - 5i) + (-3 + 3i)
b)
(5− 2i)
(5− 6i)
− (2− 4i).(5− 2i)
c)
(3− 6i)2 + (5 + 4i)3
(2 + 5i)2
2. Faça uma função que retorne um número complexo na forma polar. Esta função deverá
retornar um array de dois elementos ao qual o primeiro deverá ser o módulo e o segundo
seu ângulo em graus.
2.2 Arrays
Array é um tipo de conjunto de dados que comporta-se de forma semelhante a listas,
exceto pelo fato de que os elementos devem ser do mesmo tipo.
Exemplos:
>>> a = array ([[ -1 ,2] ,[3. ,4]])
>>> b = array ([[-1,2],[3.,’a’]])
>>> b
array ([[’-1’, ’2’],
[’3.0’, ’a’]],
dtype=’|S3’)
>>> a
array ([[-1., 2.],
[ 3., 4.]])
>>> type(a[1,1])
<type ’numpy.float64 ’>
>>> type(b[1,1])
<type ’numpy.string_ ’>
2.2.1 Criando Arrays
Existem inúmeras formas de se criar um array. Mas a forma mais comum é a conversão
um uma lista ou tupla em array.
Exemplos:
>>> a = array ([1,6,4,7,5,3])
>>> a
array([1, 6, 4, 7, 5, 3])
>>> b = array ((1,4,3,5,6,7,8))
>>> b
array([1, 4, 3, 5, 6, 7, 8])
>>> c = array ([[ -2 ,3] ,[0 ,4]])
>>> c
array([[-2, 3],
[ 0, 4]])
Porém existem funções do numpy no qual retornam arrays. As principais estão descritas
na tabela abaixo:
empty( (l,c) ) Cria uma matriz vazia com as dimensões (l,c)
zeros( (l,c) ) Cria uma matriz de zeros com as dimensões (l,c)
ones( (l,c) ) Cria uma matriz de elementos de valor 1 com as dimensões (l,c)
eye( n ) Retorna uma matriz identidade de ordem n
identity( n ) Retorna uma matriz identidade de ordem n
Tabela 4 – Funções com Matrizes.
Exemplos:>>> empty ((4 ,4))
array ([[ 6.94885134e-310, 1.52578222e-316, 6.94884893e-310,
6.94885170e-310] ,
[ 6.94885174e-310, 6.94884729e-310, 6.94885171e-310,
1.66047005e-316] ,
[ 6.94884729e-310, 6.94885173e-310, 6.94885170e-310,
6.94885170e-310] ,
[ 6.94885170e-310, 6.94885173e-310, 6.94884858e-310,
6.94885171e -310]])
>>> ones ((4 ,4))
array ([[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]])
>>> identity (4)
array ([[ 1., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.]])
>>> eye (4)
array ([[ 1., 0., 0., 0.],
[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.]])
>>> a = zeros ((4 ,4))
>>> a
array ([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
>>> for i in range (4):
... for j in range (4):
... if i == j:
... a[i,j]=3
... else:
... a[i,j]=1
...
>>> a
array ([[ 3., 1., 1., 1.],
[ 1., 3., 1., 1.],
[ 1., 1., 3., 1.],
[ 1., 1., 1., 3.]])
2.2.1.1 Exerćıcios
1. Crie um array (10,10), com a seguinte condição:
a[i, j] = 5, i > j
a[i, j] = 10, i < j
a[1, j] = 0, i = j
2.3 Álgebra Linear
2.3.1 Utilizando arrays como matrizes
Pode-se utilizar um array como matriz matemática, algumas de suas operações são des-
critas na tabela abaixo:
linalg.det(a) Calcula o determinante de um array
dot( x, y ) retorna o produto matricial entre x e y
linalg.inv( a ) retorna a matriz inversa de a
transpose( a ) retorna a matriz transposta de a
Tabela 5 – Funções comuns para operações com matrizes matemáticas.
Com o comando matrix(a) onde a é uma sequência como lista e tuplas, atribui-se ao objeto
o tipo matrix ao qual pode-se fazer operações matriciais com os operadores convencionais.
>>> a = (0-15)*random.random_sample ((4 ,4)) + 15 # gera array com
dados aleatorios
>>> a
array ([[ 14.49042525 , 2.93107736 , 10.78718351 , 5.62335196] ,
[ 14.11931459 , 6.80130463 , 6.11838823 , 13.31783477] ,
[ 13.39207532 , 11.12517229 , 5.85024642 , 6.47237741] ,
[ 5.3987344 , 8.87055273 , 7.63533484 , 0.16405977]])
>>> linalg.inv(a)
array ([[ 0.0801668 , -0.1144587 , 0.1697062 , -0.15157086] ,
[ -0.08134552 , 0.00861623 , 0.05120213 , 0.06878894] ,
[ 0.03914155 , 0.06746016 , -0.17679747 , 0.15707683] ,
[ -0.06143099 , 0.16104189 , -0.12484469 , 0.05339945]])
>>> transpose(a)
array ([[ 14.49042525 , 14.11931459 , 13.39207532 , 5.3987344 ],
[ 2.93107736 , 6.80130463 , 11.12517229 , 8.87055273] ,
[ 10.78718351 , 6.11838823 , 5.85024642 , 7.63533484] ,
[ 5.62335196 , 13.31783477 , 6.47237741 , 0.16405977]])
>>> b = matrix(a)
>>> b**-1
matrix ([[ 0.0801668 , -0.1144587 , 0.1697062 , -0.15157086] ,
[ -0.08134552 , 0.00861623 , 0.05120213 , 0.06878894] ,
[ 0.03914155 , 0.06746016 , -0.17679747 , 0.15707683] ,
[ -0.06143099 , 0.16104189 , -0.12484469 , 0.05339945]])
>>> b.T
matrix ([[ 14.49042525 , 14.11931459 , 13.39207532 , 5.3987344 ],
[ 2.93107736 , 6.80130463 , 11.12517229 , 8.87055273] ,
[ 10.78718351 , 6.11838823 , 5.85024642 , 7.63533484] ,
[ 5.62335196 , 13.31783477 , 6.47237741 ,
0.16405977]])
2.3.1.1 Exerćıcios:
1. Resolva o sistema de equações abaixo, sabendo que R X = Y =⇒ X = R−1 Y , onde
R é a matriz dos coeficientes das equações e Y é a matriz formada pelos números após
a igualdade.
−5x− 2y + 12z − w = −9
x+ 3y − 2z + 4w = 10
−x− y − z = −7
3x− 3y + 7z + 9q = −6
2. Sabendo que o comando (a−b)∗random sample((l,c)) + b gera um array com dimensões
(l,c), de dados aleatórios num intervalo de a até b. Encontre a matriz inversa de um
array (1000,1000) de dados aleatórios obtidos num intervalo de 0 à 50000.
2.3.2 Produto Escalar e Vetorial
Podemos através dos arrays fazer a representação de vetores e efetuar produto escalar e
vetorial entre eles. Os comandos estão na tabela abaixo:
vdot( v,w ) Retorna o produto escalar dos vetores v e w
cross( v,w ) Retorna o produto vetorial dos vetores v e w
Tabela 6 – Funções de álgebra vetorial.
2.3.2.1 Exemplos
>>> u = array ([1,3,-7])
>>> v = array ([10 ,7 ,2])
>>> w = array ([-2,3,5])
>>> vdot(u,v)
17
>>> vdot(u,w)
-28
>>> cross(w,u)
array([-36, -9, -9])
>>> cross(v,u)
array([-55, 72, 23])
2.3.2.2 Exerćıcios
1. Resolva os produtos abaixo:
u = −1̂ı− 4̂− 3k̂
v = 3̂ı + 7̂− 2k̂
w = −12̂ı− 2̂ + 5k̂
a) v × w
b) w · v
c) (v × w) · u
2. Faça duas funções chamadas modulo(v) e angulo(v), para retornar respectivamente o
módulo e o ângulo de um vetor ’v’.
2.4 Polinômios
O módulo polinomial do numpy provê a capacidade de trabalhar com polinômios. Algu-
mas funções deste módulo são mostradas na tabela abaixo:
poly1d( c ou r ) Classe polinomial
polyval( p,x ) Calcula a função polinomial ao valor x
poly( seq de zeros ) Encontra os coeficientes do polinômio com dada sequência de ráızes
roots( p ) Retorna as ráızes do polinômio dado os coeficientes p
polyder( p,n ) Retorna a n-derivada do polinômio p
polyint( p,n ) Retorna a n-integral do polinômio p
polyadd( a1,a2 ) Retorna a soma de dois polinômios
polydiv( a1,a2 ) Retorna a divisão de dois polinômios
polymul( a1,a2 ) Retorna a multiplicação de dois polinômios
polysub( a1,a2 ) Retorna a subtração de dois polinômios
polyfit( x,y,n ) fita os dados em x e y com polinômio de grau n
Tabela 7 – Funções polinomiais.
2.4.0.1 Exemplos
>>> y = poly1d ([1,-3,4,9])
>>> y(2)
13
>>> y(-5)
-211
>>> print y
3 2
1 x - 3 x + 4 x + 9
>>> roots(y)
array([ 2.03717038+2.05600758j, 2.03717038 -2.05600758j,
-1.07434076+0.j ])
>>> y.r
array([ 2.03717038+2.05600758j, 2.03717038 -2.05600758j,
-1.07434076+0.j ])
>>> w = poly ([3,-2,1,6])
>>> print w
[ 1 -8 7 36 -36]
>>> w = poly1d(w)
>>> print w
4 3 2
1 x - 8 x + 7 x + 36 x - 36
>>> polydiv(w,y)
(poly1d ([ 1., -5.]), poly1d ([-12., 47., 9.]))
>>> polymul(w,y)
poly1d ([ 1, -11, 35, -8, -188, 315, 180, -324])
>>> polyder(y)
poly1d ([ 3, -6, 4])
>>> polyint(y)
poly1d ([ 0.25, -1. , 2. , 9. , 0. ])
2.5 Estat́ıstica
O numpy fornece as seguintes funções para estat́ıstica.
amin( a ) Retorna o menor valor de um array ou em torno de um eixo
amax( a ) Retorna o valor máximo de um array ou em torno de um eixo
nanmin( a ) Retorna o valor mı́nimo de um array ou em torno de um eixo ignorando qualquer NANs
nanmax( a ) Retorna o valor máximo de um array ou em torno de um eixo ignorando qualquer NANs
ptp( a ) Intervalo de valores (máx - mı́n) em torno de um eixo
percentile( a,q ) Calcula a ordem percentual dos dados num eixo especificado
average( a ) Calcula a média ponderada num array ou num eixo especificado
mean( a ) calcula a média aritmética de um array ou num eiso especificado
median( a ) Retorna a mediana de um array ou num eixo especificado
std( a ) Calcula o desvio padrão de um array ou num eixo especificado
var( a ) Calcula a variância de um array ou num eixo especificado
corrcoef( x ) Calcula o coeficiente de correlação
correlate( x,v ) Correlação cruzada de duas sequências unidimensionais
cov( m ) Estima a matriz de covariância, fornecido dados
histogram( a ) Retorna o histograma de um conjunto de dados
Tabela 8 – Funções para estat́ıstica.
Porém, acaso necessitar de algo mais sofisticado, o python possui bibliotecas especializa-
das em estat́ıstica como RPy e Pandas.
2.5.0.1 Exemplos
>>> x = (0 -100)*random.random_sample (50) + 100
>>> x
array([ 70.74907985 , 85.81978003 , 26.2201741 , 58.25684684 ,
16.98377835 , 22.37007274 , 99.35857993 , 37.34684867 ,
51.8556086 , 96.03281659 , 73.20163177 , 65.26866548 ,
44.36005051 , 6.97549693 , 55.09369156 , 90.94858756 ,
39.12069946 , 60.26148999 , 99.45753485 , 80.89664363 ,
45.39066115 , 34.28043582 , 23.34374594 , 85.76107614 ,
58.06725533 , 63.61498366 , 32.87844399 , 55.18819449 ,
35.74747921 , 13.86461598 , 85.54735216 , 69.40562517 ,
58.10182778 , 65.55740479 , 76.13031215 , 94.33315092 ,
66.9845373 , 42.09990161 , 20.31191965 , 25.74580836 ,
95.32082476 , 81.28656706 , 14.0276794 , 33.693738 ,
74.06792647 , 89.81875148 , 80.53856131, 59.37984954 ,
44.65620388 , 89.65495061])
>>> amax(x)
99.457534853183844
>>> amin(x)
6.9754969343138669
>>> ptp(x)
92.482037918869977
>>> mean(x)
57.907557231457702
>>> median(x)
58.818348186409395
>>> std(x)
26.041300224562974
2.5.0.2 Exerćıcios
1. Sabendo que o comando (a−b)∗random sample((l,c)) + b gera um array com dimensões
(l,c), de dados aleatórios num intervalo de a até b. Obtenha um array com 500 dados
aleatórios distribúıdos de 0 à 10000 e calcule a média aritmética, a variância e seu
desvio padrão.
3 Matplotlib
Matplotlib é uma biblioteca para plotagem de gráficos. Provavelmente uma das bibli-
otecas mais utilizadas do python no meio cient́ıfico, devido a gráficos com qualidade de
publicação e muita versatilidade para produzir imagens de diferentes extensões.
Um exemplo de visualização de dados pode ser observado pelo último exemplo dado na
seção anterior. Vimos um algoritmo para fitar uma curva polinomial obtido através dos
dados em x e y dos pontos a fitar. Mas afinal como ficará o gráfico desta função? observem:
>>> import numpy as N
>>> dados_x = N.array ([0 , 1 , 2 , 3 , 4 , 5])
>>> dados_y = N.array ([0. , 0.8 , 0.9 , 0.1 , -0.8 , -1.])
>>> z = N.polyfit(dados_x , dados_y , 3)
>>> p = N.poly1d(z)
>>> p
poly1d ([ 0.08703704 , -0.81349206 , 1.69312169 , -0.03968254])
>>> print p
3 2
0.08704 x - 0.8135 x + 1.693 x - 0.03968
>>> xs = N.arange (0,5,0.1)
>>> ys = p(xs)
>>> import pylab as pl
>>> pl.plot(dados_x , dados_y ,’o’,label=’dados’)
[<matplotlib.lines.Line2D object at 0x2a74f50 >]
>>> pl.plot(xs , ys ,label=’curva fitada ’)
[<matplotlib.lines.Line2D object at 0x2a79210 >]
>>> pl.xlabel(’x’)
<matplotlib.text.Text object at 0x2787250 >
>>> pl.ylabel(’y’)
<matplotlib.text.Text object at 0x2781c90 >
>>> pl.legend ()
>>> pl.show()
0 1 2 3 4 5
y
1.5
1.0
0.5
0.0
0.5
1.0
dados
curva fitada
Figura 6 – Gráfico exemplo polyfit( x, y, n )
A partir de agora vamos estudar as ferramentas de plotagem de gráficos providos pela
biblioteca matplotlib, e então conseguir entender os comandos acima, para aplicá-las em
outras situações.
3.1 Gráficos Simples
Aqui vamos começar a plotar uma função sin e cos, iniciando pela configuração padrão e
enriquecendo passo a passo, até obter um gráfico com inúmeros recursos.
Primeiramente vamos construir os dados através de vetores na qual aprendemos um pouco
na seção numpy :
>>> import numpy as np
>>> X = np.linspace( -np.pi , np.pi , 256 , endpoint=True )
>>> C , S = np.cos( X ) , np.sin( X )
A seguir importamos o módulo pylab para gerar e mostrar o gráfico, com os comandos
plot( ) e show( ).
>>> import pylab as pl
>>> pl.plot( X , C )
[<matplotlib.lines.Line2D object at 0xa1ab1ec>]
>>> pl.plot( X , S )
[<matplotlib.lines.Line2D object at 0x9568b0c>]
>>> pl.show( )
Gerando o seguinte gráfico:
4 3 2 1 0 1 2 3 41.0
0.5
0.0
0.5
1.0
Figura 7 – Gráfico sin( x) e cos( x).
3.1.1 Mudando Cores e Espessuras da linha
Obtemos então as funções cos( x) e sin( x) com as cores respectivamente azul e vermelho,
neste próximo passo vamos alterar a coloração, aumentar a espessura da linha de ambas e
alterar as dimensões da figura deixando-a mais horizontal.
>>> pl.figure( figsize = ( 10 , 6 ) , dpi = 80 )
<matplotlib.figure.Figure object at 0xb7648aec>
>>> pl.plot( X , S , color = ’green’ , linewidth = 2.5 , linestyle = ” - ” )
[<matplotlib.lines.Line2D object at 0x9fb85cc>]
>>> pl.plot( X , C , color = ’red’ , linewidth = 2.5 , linestyle = ” - ” )
[<matplotlib.lines.Line2D object at 0xa27b42c>]
>>> pl.show( )
4 3 2 1 0 1 2 3 41.0
0.5
0.0
0.5
1.0
Figura 8 – Alterando espessura e cor da linha e dimensão da figura.
Com os parâmetros abaixo, pode-se limitar os limites dos eixos e alterar a identificação
dos pontos nos eixos:
>>> pl.xlim( X.min( ) * 1.1 , X.max( ) * 1.1 )
( -3.4557519189487729 , 3.4557519189487729 )
>>> pl.ylim( C.min( ) * 1.1 , C.max( ) * 1.1 )
( -1.1000000000000001 , 1.0999165211263138 )
>>> pl.plot( X , S , color = ’green’, linewidth = 2.5 , linestyle = ’-’ )
>>> pl.plot( X , C , color = ’red’, linewidth = 2.5 , linestyle = ’-’ )
>>> pl.xticks( [ -np.pi, -np.pi/2, 0, np.pi/2, np.pi ], [ r’−π’, r’−π/2’, r’0’, r’+π/2’,
r’+π’ ] )
>>> pl.yticks( [ -1, 0, +1 ],[ r’−1’, r’0’, r’+1’ ] )
Figura 9 – Alterando extremos das caixas e nomeando pontos sobre os eixos.
Com estas opções pode-se gerar eixos, retirar a caixa sobre o gráfico e criar legendas:
>>> ax = pl.gca()
>>> ax.spines[ ’right’ ].set color( ’none’ )
>>> ax.spines[ ’top’ ].set color( ’none’ )
>>> ax.xaxis.set ticks position( ’bottom’ )
>>> ax.spines[ ’bottom’ ].set position( ( ’data’ , 0 ) )
>>> ax.yaxis.set ticks position( ’left’ )
>>> ax.spines[ ’left’ ].set position( ( ’data’ , 0 ) )
>>> pl.plot( X , S , color = ’green’ , linewidth = 2.5 , linestyle = ’-’ , label = ’seno’ )
>>> pl.plot( X , C , color = ’red’ , linewidth = 2.5 , linestyle = ’-’ , label =
’cosseno’ )
>>> pl.legend( loc=’upper left’ )
Figura 10 – Alterando extremos das caixas e nomeando pontos sobre os eixos.
3.2 Gráficos 3D
Para gráficos 3D utiliza-se a função Axes3D do módulo mpl.toolkits.mplot3d, ob-
serve:
>>> import numpy as np
>>> import pylab as pl
>>> from mpl toolkits.mplot3d import Axes3D
>>> fig = pl.figure()
>>> ax = Axes3D( fig )
>>> X = np.arange( -4 , 4 , 0.25 )
>>> Y = np.arange( -4 , 4 , 0.25 )
>>> X , Y = np.meshgrid( X , Y )
>>> R = np.sqrt( X**2 + Y**2 )
>>> Z = np.sin( R )
>>> ax.plot surface( X , Y , Z , rstride=1 , cstride=1 , cmap=’hot’ )
>>> pl.show()
Figura 11 – Gráfico 3D.
4 Sympy
4.1 O que Computação Simbólica
A computação simbólica permite que sejam realizados cálculos com expressões matemáticas
simbólicas. A biblioteca que provê esta capacidade ao python chama-se Sympy. Veja o exem-
plo abaixo da resolução de uma equação quadrática com o uso do numpy e do sympy:
>>> # Numpy
>>>
>>> poly1d ([1,-4,-9])
2
1 x - 4 x - 9
>>> y = poly1d ([1,-4,9])
>>> y.r
[ 5.60555128 -1.60555128]
>>>
>>> # sympy
>>>
>>> import sympy as sy
>>> sy.var(’x’)
>>> Y = x**2 -4*x-9
>>> sy.solve(Y,x)
>>> [2 + sqrt (13), -sqrt (13) + 2]
Observe outro exemplo interessante:
>>> import sympy as sy
>>> x, y = sy.symbols(’x, y’)
>>> expr = x + 2*y
>>> expr
x + 2*y
>>> expr + 1
x + 2*y + 1
>>> expr - x
2*y
>>> x*expr
x*(x + 2*y)
O sympy nos oferece a possibilidade de trabalhar com integrais, derivadas, limites, resol-
ver equações, trabalhar com matrizes com elementos simbólicos, isto e muito mais.
4.2 Operações Básicas
Discutiremos aqui algumas das mais básicas operações a qual precisaremos para a mani-
pulação de expressões matemáticas com o sympy.
Vamos começar importando todas as funções da biblioteca, e também gerando os objetos
simbólicos.
>>> from sympy import *
>>> x, y, z = symbols("x, y, z")
4.2.1 Substituições
Uma das coisas mais comuns que você pode querer fazer é a substituição. Como o próprio
nome diz, é a ação de substituir algo em uma expressão com outro valor ou outra expressão.
Faremos isso com o método subs.
4.2.1.1 Exemplos
a)
>>> expr = cos(x) + 1
>>> expr.subs(x,y)
cos(y) + 1
>>> expr.subs(x,0)
2
b)
>>> expr = x**y
>>> expr
x**y
>>> expr = expr.subs(y, x**y)
>>> expr
x**(x**y)
>>> expr = expr.subs(y, x**x)
>>> expr
x**(x**(x**x))
c)
>>> expr = x**3 + 4*x*y - z
>>> expr.subs ([(x, 2), (y, 4), (z, 0)])
40
4.2.1.2 Convertendo Strings em Expressões SymPy
A função sympify pode ser utilizado para converter strings em uma expressão sympy.
Veja:
>>> str_expr = "x**2 + 3*x - 1/2"
>>> expr = sympify(str_expr)
>>> expr
x**2 + 3*x - 1/2
>>> expr.subs(x, 2)
19/2
4.2.1.3 evalf
Para avaliar uma expressão numérica como ponto flutuante (float), use evalf.
>>> expr = sqrt (8)
>>> expr.evalf()
2.82842712474619
SymPy pode calcular uma expressão numérica com precisão arbitrária. Por padrão15
digitos de precisão são usados, mas você pode usar qualquer número de precisão como argu-
mento ao evalf. Como exemplo vamos calcular os 100 primeiros digitos do π.
>>> pi.evalf (100)
3.141592653589793238462643383279502884197169399375105820974944592
307816406286208998628034825342117068
Para calcular numéricamente uma expressão simbólica substituindo às variáveis numeros
de ponto flutuantes, basta usar o evalf seguido do subs. Observem:
>>> expr = cos (2*x)
>>> expr.evalf(subs={x: 2.4})
0.0874989834394464
4.2.2 lambdify
subs e evalf são bons quando se quer um simples cálculo. Mas se você pretende calcular
uma função com muitos valores (utilizando um array) existem meios mais eficientes. Por
exemplo, se você deseja calcular uma função com uma sequência de milhares de elementos,
com SymPy provavelmente deverá ser muito lento, sendo uma ótima alternativa a utilização
das bibliotecas NumPy ou SciPy para resolvê-la.
O meio mais fácil de converter uma expressão SymPy em uma que pode ser numerica-
mente calculada é fazendo o uso da função lambdify. lambdify atua como um conversor a qual
troca-se a expressão SymPy para uma biblioteca numérica, usualmente NumPy ou SciPy.
A uilização da função lambdify é descrita no exemplo abaixo:
>>> import numpy
>>> a = numpy.arange (10)
>>> expr = sin(x)
>>> f = lambdify(x, expr , "numpy")
>>> f(a)
[ 0. 0.84147098 0.90929743 0.14112001 -0.7568025
-0.95892427
-0.2794155 0.6569866 0.98935825 0.41211849]
4.3 Simplificações
Agora vamos começar a fazer uso de uma das habilidades mais interessantes da com-
putação simbólica, que é a simplificação de expressões matemáticas. O SymPy possui dezenas
de funções para executar vários tipos de simplificações. Aqui vamos conhecer as principais.
Para acesso a todas as funções de simplificações consulte http://docs.sympy.org/latest/tutorial
/simplification.html. Para continuar nesta seção vamos deixar algumas variáveis dispońıveis
para a utilização nos exemplos.
>>> from sympy import *
>>> x, y, z = symbols(’x y z’)
4.3.1 simplify
simplify é uma função geral que possui a habilidade de utilizar todas as funções de
simplificação inteligentemente para obter expressões simplificadas. Observem:
>>> simplify(sin(x)**2 + cos(x)**2)
1
>>> simplify ((x**3 + x**2 - x - 1)/(x**2 + 2*x + 1))
x - 1
Mas tomem cuidado pois a função apenas tona as expressões simples e não a menor
posśıvel, para isso deve-se utilizar a função correta para cada caso. Por exemplo a função
x2 + 2x+ 1 aplicada a simplify não retorna (x+ 1)2, mas factor sim. Vejam:
>>> y = x**2 + 2*x + 1
>>> simplify(y)
x**2 + 2*x + 1
>>> factor(y)
(x + 1)**2
4.3.2 Funções de Simplificação Polinomial
4.3.2.1 expand
expand é uma das mais comuns funções de simplificação do SymPy. Ele tem muitos
escopos, por agora nos atentaremos a expandir expressões polinomiais.
>>> expand ((x + 1)**2)
x**2 + 2*x + 1
>>> expand ((x + 2)*(x - 3))
x**2 - x - 6
4.3.2.2 factor
A função factor fatora a expressão polinomial.
>>> factor(x**3 - x**2 + x - 1)
(x - 1)*(x**2 + 1)
>>> factor(x**2*z + 4*x*y*z + 4*y**2*z)
z*(x + 2*y)**2
4.3.2.3 colect
Esta função provê deixar em evidência algum fator na expressão.
>>> expr = x*y + x - 3 + 2*x**2 - z*x**2 + x**3
>>> expr
x**3 - x**2*z + 2*x**2 + x*y + x - 3
>>> collected_expr = collect(expr , x)
>>> collected_expr
x**3 + x**2*( -z + 2) + x*(y + 1) - 3
4.3.2.4 apart
A função apart decompõe a expressão em frações parciais.
>>> expr = (4*x**3 + 21*x**2 + 10*x + 12)/(x**4 + 5*x**3 + 5*x**2
+ 4*x)
>>> expr
(4*x**3 + 21*x**2 + 10*x + 12)/(x**4 + 5*x**3 + 5*x**2 + 4*x)
>>> apart(expr)
(2*x - 1)/(x**2 + x + 1) - 1/(x + 4) + 3/x
4.3.3 Simplificaçõs Trigonométricas
4.3.3.1 trigsimp
Para simplificar expressões usando entidades trigonométricas, use trigsimp
>>> trigsimp(sin(x)**2 + cos(x)**2)
1
>>> trigsimp(sin(x)**4 - 2*cos(x)**2* sin(x)**2 + cos(x)**4)
cos(4*x)/2 + 1/2
>>> trigsimp(sin(x)*tan(x)/sec(x))
sin(x)**2
>>> trigsimp(cosh(x)**2 + sinh(x)**2)
cosh (2*x)
>>> trigsimp(sinh(x)/tanh(x))
cosh(x)
4.3.3.2 expand trig
Para expandir funções trigonométricas com entidades de soma ou ângulos múltiplos.
>>> expand_trig(cos (3*x))
4*cos(x)**3 - 3*cos(x)
>>> expand_trig(sin(x + y))
sin(x)*cos(y) + sin(y)*cos(x)
>>> expand_trig(tan (2*x))
2*tan(x)/(-tan(x)**2 + 1)
4.4 Cálculo Diferencial e Integral
4.4.1 Derivadas
Para resolver derivadas use a função diff.
>>> diff(cos(x),x)
-sin(x)
>>> diff(exp(x**2), x)
2*x*exp(x**2)
diff pode efetuar derivadas múltiplas. Para efetuar derivadas múltiplas basta adicionar
n-vezes a variável como argumento, ou adicionar após o argumento da variável a quantidade
de vezes a qual deverá derivar.
>>> diff(x**4, x, x, x)
24*x
>>> diff(x**4, x, 3)
24*x
Esta função também efetua derivadas de várias variáveis, bastando adicionar as variáveis
como argumento da função, lembrando que a ordem de derivação será seguida da esquerda
para a direita.
>>> expr = exp(x*y*z)
>>> diff(expr , x, y, y, z, z, z, z)
x**3*y**2*(x**3*y**3*z**3 + 14*x**2*y**2*z**2 + 52*x*y*z + 48)*
exp(x*y*z)
>>> diff(expr , x, y, 2, z, 4)
x**3*y**2*(x**3*y**3*z**3 + 14*x**2*y**2*z**2 + 52*x*y*z + 48)*
exp(x*y*z)
>>> diff(expr , x, y, y, z, 4)
x**3*y**2*(x**3*y**3*z**3 + 14*x**2*y**2*z**2 + 52*x*y*z + 48)*
exp(x*y*z)
diff também pode ser chamado como método.
>>> expr.diff(x, y, y, z, 4)
x**3*y**2*(x**3*y**3*z**3 + 14*x**2*y**2*z**2 + 52*x*y*z + 48)*
exp(x*y*z)
4.4.2 Integrais
Para calcular integrais usamos a função integrate. Podemos com a função, calcular uma
integral indefinida colocando como argumento apenas as variáveis, e também pode-se calcular
uma integral definida colocando como argumento uma sequência com a variável, o limite
inferior e o limite superior. Observe:
>>> Y = x**4* cos (2*x)
>>> integrate(Y,x)
x**4* sin(2*x)/2 + x**3* cos(2*x) - 3*x**2* sin(2*x)/2 - 3*x*cos(2*x
)/2 + 3*sin(2*x)/4
>>> integrate(Y,(x,0,10))
985* cos (20) + 19403* sin (20)/4
Também pode-se calcular integrais multiplas apenas adicionando as informações das ou-
tras variáveis como argumento. Vejam:
>>> Z = x**3 - y**2* cos(x)
>>> integrate(Z,x,y)
x**4*y/4 - y**3* sin(x)/3
>>> integrate(Z,(x,0,3) ,(y,-10,1))
-1001*sin(3)/3 + 891/4
4.5 Limites
SymPy pode calcular o limite de expressões simbólicas como
lim
x→x0
f(x)
Com a seguinte sintaxe: limit(f(x),x,x0).
>>> limit(sin(x)/x, x, 0)
1
Para calcular o limites laterais basta adicionar ”+”ou ”−”como um terceiro argumento
ao limite.
>>> limit (1/x, x, 0, ’+’)
oo
>>> limit (1/x, x, 0, ’-’)
-oo
5 Exerćıcios de Fixação
1. Faça uma função para a conversão de miĺımetro para polegada e vice-versa. Faça a
função imprimir na tela mensagem semelhante a ” 1 polegada = 25,4 mm”, e faça as
conversões correspondentes.
a) Converta para polegada as medidas em miĺımetros: 55,3 ; 689,2 ; 23,1 ; 98,35 ; 12,7
; 4985,22 ; 0,5432 ; 15549,13 ; 0,1
b) Converta para miĺımetro as medidas em polegadas: 0,593 ; 2,5 ; 6,831 ; 38,476 ;
962,197 ; 49,434 ; 111,639 ; 726,3 ; 0,005
2. Encontre os valores das correntes elétricas principais do circuito abaixo:
Figura 12 – Circuito para o exerćıcio 2.
3. Uma análise muito importante para tratamento de água industrial é śılica solúvel
alto teor, que é uma análise espectrofotométrica. Para se realizar análises de śılica
solúvel alto teor, o analista deve primeiramente realizar a curva de calibração para o
espectrofotômetro e reagentes que irá utilizar. Um analista realizando uma curva de
calibração obteve os seguintes dados:
Concentração (mg/L) Absorbância
5 0,263
10 0,458
15 0,62
20 0,781
Tabela 9 – Dados para curva de calibração de śılica solúvel.
Determine:
a) A equação de calibração do equipamento, e o coeficiente de determinação (r2).
b) Encontre a concentração dasanálises realizadas.
Ponto de Coleta Absorbância Concentração (mg/L)
Alimentação caldeira 0,118
Caldeira 0,691
torre de resfriamento 01 0,422
torre de resfriamento 02 0,318
poço 0,253
4. A posição de uma part́ıcula que se desloca ao longo de uma linha reta é definida pela
relação x = 0, 3 t3− 1, 8/t2− 4, 5 t+ 12, onde x é expresso em metros e t em segundos.
Determine:
a) O instante em que a velocidade será zero.
b) A posição e a distância percorrida pela part́ıcula nesse instante.
c) A aceleração da part́ıcula nesse instante.
d) Faça um gráfico da posição, velocidade e aceleração em função do tempo.
e) A distância. percorrida pela part́ıcula de t = 4 s a t = 6 s
5. Resolva a equação transcendental −2 x− 3 cos(x2) = 0 executando os passos:
a) Faça um gráfico da função informando uma faixa aproximada de x ao qual o zero
da função se encontra.
b) Faça uma função com os argumentos: x (faixa de x encontrado acima), p (precisão),
para encontrar o zero da função com um erro menor que 0,00001.
Referências
[1] PYTHON SCIENTIFIC LECTURE NOTES. In: EUROSCIPY 2012., 2012/3. Dis-
pońıvel em: <http://scipy-lectures.github.com>. Acesso em: 21 nov de 2014.
[2] FANGOHR, H. Python for Computational Science and Engineering. 1. ed. Nova York:
Cambridge, 2006.
[3] LANGTANGEN, H. P. A Primer on Scientific Programming with Python. 2. ed. Ber-
lim: Springer, 2011.
[4] MADRONA, F. E. Pressões em Silos Esbeltos com Descarga Excêntrica. 2008. Dis-
sertação (Mestrado em Engenharia de Estruturas) - Escola de Engenharia de São
Carlos, Universidade de São Paulo, São Carlos, 2008.
[5] KIUSALAAS, J. Numerical Methods in Engineering with Python. 1. ed. Nova York:
Cambridge, 2005.
[6] https://www.python.org/doc/essays/blurb/
View publication statsView publication stats
https://www.researchgate.net/publication/307925106
	Sumário
	Primeiros Contatos
	Ambientes de Desenvolvimento
	Terminal
	Ipython
	Spyder
	Diferenças entre Python 2.x e 3.x
	Importando Módulos de Bibliotecas
	Comandos Básicos
	Sequências
	Strings
	Listas
	Funções
	Definindo Funções
	Controle de Fluxo
	Condicionais
	If - Then - Else
	Laço For
	Laço While
	Numpy
	Funções Matemáticas
	Funções Gerais
	Exercícios
	Números Complexos
	Exercícios
	Arrays
	Criando Arrays
	Exercícios
	Álgebra Linear
	Utilizando arrays como matrizes
	Exercícios:
	Produto Escalar e Vetorial
	Exemplos
	Exercícios
	Polinômios
	Exemplos
	Estatística
	Exemplos
	Exercícios
	Matplotlib
	Gráficos Simples
	Mudando Cores e Espessuras da linha
	Gráficos 3D
	Sympy
	O que Computação Simbólica
	Operações Básicas
	Substituições
	Exemplos
	Convertendo Strings em Expressões SymPy
	evalf
	lambdify
	Simplificações
	simplify
	Funções de Simplificação Polinomial
	expand
	factor
	colect
	apart
	Simplificaçõs Trigonométricas
	trigsimp
	expand_trig
	Cálculo Diferencial e Integral
	Derivadas
	Integrais
	Limites
	Exercícios de Fixação
	Referências

Continue navegando