Enviar um café pro programador

Mostrando postagens com marcador SciPy. Mostrar todas as postagens
Mostrando postagens com marcador SciPy. Mostrar todas as postagens

Regressão Linear em Python - O método dos mínimos quadrados

 Neste tutorial, vamos aprender como aplicar o método dos mínimos quadrados para fazer uma regressão linear em seus dados experimentais.

O que é Regressão Linear

Como o nome pode sugerir, é uma técnica onde tentaremos transformar uma série de dados em uma    linha.

Ela é muito útil para tentarmos estimarmos ou prevermos novos valores, sem precisarmos realizar novamente o experimento.

Por exemplo, vamos supor que os pontos azuis abaixo sejam referente aos experimentos que você realizou em laboratório:

Método dos mínimos quadrados

No exemplo que fizemos, usamos uma mola e várias massas. Para cada massa m, temos um tamanho de mola l. Colocamos a massa no eixo X e o comprimento no eixo Y.

Note na imagem acima, que a maioria dos pontos ficarem mais ou menos alinhados. O que a regressão linear faz é tentar achar uma reta 'ótima', mais próxima desses pontos.

Assim, você pode estimar qual seria o valor de uma mola para uma determinada massa, sem precisar fazer o experimento. Obviamente, é uma aproximação.

Método dos mínimos quadrados

Existem vários métodos e maneiras de se fazer regressão, inclusive de qualquer tipo de curva que você imaginar, não somente de retas.

O método mais conhecido, é o do mínimos quadrados. Veja que existe uma distância de cada bolinha (experimento que você fez) até nossa reta otimizada por regressão linear:

Teoria dos erros método dos mínimos quadrados

O nosso objetivo é pegar essa distância, que  é o erro e minimizar o máximo possível eles, e gerar a reta de equação: 

  • y = A + B.x

Você pode achar a demonstração desse método em livros universitários que falam sobre Teoria dos Erros. As fórmulas para A e B são:

Análise de erros

Dados coletados e fórmula

No laboratório de Física da Universidade Federal do Ceará, pegamos uma mola menor e uma maior (apropriadas para as experiências), colocamos elas pendurada na vertical, e calculamos o tamanho final dela, para cada massa. Fizemos 7 experimentos em cada mola, e o resultado foi:
Experimento de Hooke da mola

Para nosso tutorial, vamos gerar o gráfico para a mola menor. Queremos provar que a lei de Hooke para o sistema massa-mola é obedecido.

Equilíbrio do sistema massa-mola:

  • −k∆x + mg = 0

Nos experimentos, medimos o tamanho l final da mola, que é obtido pela expressão acima:

  • L = Lo + (k/g)*m

Vamos fazer a regressão linear dessa fórmula, através do método dos mínimos quadrados, com a reta:

  • y = A + Bx
Onde:

y ⇔ l

x ⇔ m

Regressão Linear: Fazendo os Cálculos e gráficos

Obviamente, existe tudo isso (e muito mais) prontinho em Python, para ser usado. Bastando só inserir seus dados e ele vai fazer tudo. Mas, provavelmente seu professor vai pedir que você faça isso 'na mão', pelo menos a primeira vez.

E isso é o correto. Implementar, na unha, as coisas vai te fazer um cientista ou engenheiro bem mais capacitado, vai te fazer entender melhor como as coisas funcionam e caso precise mudar algo, vai poder mexer no código e na matemática.

É muito importante, principalmente para TCC, mestrado, doutorado etc, entender bem o que está ocorrendo, pois você pode ter que fazer algo novo, para seu trabalho.

Então vamos, lá.

Primeiro, importamos a biblioteca numpy (para os cálculos) e a matplotlib.pyplot (para gerar o gráfico). 

Depois, criamos dois arrays, um com as massas (massa,em gramas) e outro com o valor das distensões da mola (delta_x, em centímetros), medidos no laboratório. 

Seja L0 o comprimento inicial da mola, então os comprimentos finais serão dados por L0 + delta_x

Como fizemos 7 medições, N=7. E agora é só fazer os cálculos das fórmulas de A e B.
Fizemos cada uma separadamente, para melhor entender, e depois jogamos tudo para ter as variáveis A e B. Por fim, geramos o array y com os novos dos comprimentos estimados, parar gerar a reta.

Colocamos, para aqueles que desejarem, o cálculo das incertezas de A, B, y e da constante da mola. Lembrando que o parâmetro A fica em centímetros e B fica com cm/gramas.

Como a gravidade usada é 9.8 m/s², não se esqueça de passar as outras unidades para o SI.

Nossos dados experimentais, os pontos, foram plotados com a scatter (dispersão), depois usamos uma reta pontilhada para plotar a linha da regressão, e por fim um gráfico de erros.


Note que, ao final do script, coloquei vários prints, para ir exibindo os valores das variáveis e cálculos realizados, uma etapa importante para você ir acompanhando e conferindo se está tudo ok. É muito fácil e comum cometermos erros ao longo do desenvolvimento de scripts para assuntos científicos.

Nosso script fica:

import numpy as np
import matplotlib.pyplot as plt

# Massas(em gramas) e respectivas Distensões da mola deltax (em centímetros)
massa = np.array([10.7, 20.6, 30.8, 41.1, 50.9, 60.8, 71.2])
delta_x = np.array([6.4, 8.0, 8.8, 10.0, 11.0, 12.8, 13.5])

#Comprimentos totais da mola
L0 = 5.0
L = L0 + delta_x

# Seja: l = l0 + Bm a equação da reta que relaciona o tamanho
# final da mola (l), com seu tamanho inicial (l0) e o valor da massa (m)
# B representa a constante g/k (onde g é a acelaração da gravidade) e k
# a constante da mola

## Regressão linear: y = A + Bx
# x é a massa e y é o l

# Número de experimentos
N = 7

# Somatório de x[i] (massas)
S_m = massa.sum()

# Somatório de l[i] (comprimentos)
S_l = L.sum()

# Somatório dos quadrados x²[i] das massas
S_m2 = sum(i*i for i in massa)

# Somatório dos quadrados dos comprimentos l²[i]
S_l2 = sum(i*i for i in L)

# Somatório dos produtos de cada massa pelo seu respectivo comprimento final m[i]*l[i]
S_ml = 0.0
for i in range(N):
  S_ml = S_ml + massa[i]*L[i]

# Colocando tudo na fórmula
delta = N*S_m2 - (S_m*S_m)
A = ((S_m2 * S_l) - S_m * S_ml)/(delta)
B = ((N*S_ml) - S_m * S_l)/(delta)

# Reta com os novos valores, Yi
y = np.array(A + B*massa)

# Incerteza de y, A e B, com uma unidade de incerteza
residuo=0.0
y=y.round(1)
A=round(A,1)
B=round(B,1)

for i in range(N):
  residuo = residuo + np.power(y[i] - A - B*massa[i], 2)

dy = round(np.sqrt(residuo/(N-2)),1)
dA = round(dy * np.sqrt(S_m2/delta),1)
dB = round(dy * np.sqrt(N/delta),1)

# B e seu erro dB estão em centimetros/gramas = 10 metros/kilogramas
B_kgm = B*10.0
dB_kgm = dB*10.0

# Constante da mola, e seu erro propagado de B
# pois B = g/k
K = 9.8/B_kgm
dK = dB_kgm * ( 9.8/(B_kgm*B_kgm) )

# Gerando o gráfico
fig, ax = plt.subplots()
fig.suptitle('Massa(g) x Tamanho da mola (cm)')
plt.rcParams.update({'font.size': 12})

ax.title.set_text('Curso Python Progressivo')
ax.scatter(massa, L, marker='.', s=1)
ax.plot(massa, y, color='red', linestyle='--', label='reta mmq')
ax.errorbar(massa, L, yerr=dy, fmt='.k', label='dados experimentais')
ax.legend(loc="lower right")
plt.show()


print("Somatorio das massas: ", S_m)
print("Somatorio quadrado das massas: ", S_m2)
print("Somatorio comprimento: ", S_l)
print("Somatorio quadrado do scomprimentos: ", S_l2)
print("Somatorio massa pelo comprimento menores: ", S_ml)
print("Delta: ", delta)
print("A: %.2f cm"% A)
print("B: %.2f cm/g"% B)
print("Reta da mola: y = %.1f + %.1f*m" % (A, B))
print("Erro y: ", dy)
print("Erro A: ", dA)
print("Erro B: ", dB)
print("Constante: ", K)
print("Erro de k: ", dK)
print("K = %.1f +- %.1f" %(K, dK))

Gráfico da regressão linear:

Método dos mínimos quadrados em Python


Código no github:

https://github.com/jarlissonmoreira/PythonProgressivo/blob/main/Regressao%20Linear/RegressaoLinear.py


Regressão Linear usando a biblioteca SciPy

Agora vamos deixar o Python fazer (quase) tudo por nós. Para isso, importamos a biblioteca SciPy, e desde o conjunto de funções stats, onde iremos uar a função linregress para fazer a regressão linear de nossos dados.

Lembre-se: você vai precisar de dois conjuntos de valores de mesmo tamanho, para passar para a linregress. Essa função retorna um conjunto de parâmetros, como o A e B (intercept e slope), previamente calculados, além de outros, como erros padrões.

Nosso código fica:

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

def func(x):
  return result.slope * x + result.intercept

# Massas(g) e respectivas Distensões da mola (cm)
massa = np.array([10.7, 20.6, 30.8, 41.1, 50.9, 60.8, 71.2])
delta_x = np.array([6.4, 8.0, 8.8, 10.0, 11.0, 12.8, 13.5])

# Comprimento total da mola
L0=5.0
L = np.array(L0 + delta_x)

# Armazenando os parametros
# Retorna a tupla com: B(coefieciente angular da reta), intercept (A, onde toca o eixo x), 
# rvalue (coeficiente Pearson de correlação), pvalue (valor-p da probabilidade), 
# stderr (erro padrão do parâmetro slope), intercept_stderr (erro padrão do parâmetro intercept)
result = stats.linregress(massa, L)

modelo = list(map(func, massa))

# Gerando o gráfico
fig, ax = plt.subplots()
fig.suptitle('Massa(g) x Tamanho da mola (cm), com SciPy')
plt.rcParams.update({'font.size': 12})
ax.title.set_text('Curso Python Progressivo')
ax.scatter(massa, L, marker='.')
ax.plot(massa, modelo, color='red', linestyle='--', label='reta mmq')
plt.show()

## Imprimindo os dados
print("B (coeficiente angular): ",result.slope)
print("A (onde incercepta o eixo x): ", result.intercept)
print("rvalue : ", result.rvalue)
print("pvalue : ", result.pvalue)
print("stderr (erro padrão do slope, B): ", result.stderr)
print("intercept_stderr (erro padrão do incercept, A): ",result.intercept_stderr)

E o gráfico:

SciPy, stats e linregress

Ao final, imprimimos os valores calculados pela linregress(). Veja que os valores de A e B realmente bateram com aqueles que calculamos antes. Porém, não deu exato, pois em nossos cálculos tivemos o cuidado de arredondar para uma casa decimal, pois nossas medições tinham apenas uma casa decimal. Sempre tomem cuidado com os algoritmos significativos.

Bibliotecas para Programação Científica - NumPy, SymPy, SciPy, Matplotlib e Pandas

 Nesta seção, de nosso curso de Programação Científica com Python, vamos te apresentar as principais bibliotecas para se trabalhar com Computação Numérica e Ciência de Dados, que são:

  • NumPy
  • SciPy
  • SymPy
  • Matplotlib
  • Pandas
  • Outros
São ferramentas que serão necessárias você instalar, para dar continuidade em nosso curso.

NumPy - O pacote fundamental da Computação Científica

Essa biblioteca é a base de toda a computação numérica (Numerical Python), que usamos para trabalharmos com Array, especificamente.

Pacote NumPy para Data Science e Machine Learning


Embora tenha muita semelhança com as Listas, os arrays tem uma característica especial de ser possível fazer operações aritméticas com eles, diferente dos outros tipos de sequências.

Com a library do NumPy, vamos aprender a armazenar dados em um array e como manipular essas informações de uma maneira bem fácil. Se é da área de exatas, certamente já ouvir falar em matrizes, que no mundo da computação científica é conhecida por array multidimensional, também tratadas pelo NumPy.

O que é possível fazer com o NumPy:
  • Criar, adicionar, remover e ordenas os elementos de um array
  • Alterar tamanhos e formatos de arrays e matrizes
  • Fazer operações aritméticas com arrays
  • Achar elementos máximos, mínimos, médias, soma etc
  • Gerar números aleatórios
  • Fazer cálculos matemáticos, como raiz quadrada, somatório, funções trigonométricas, hiperbólicas, arredondamentos, expoentes, logaritmos, numéricos completos, Bessel etc
  • Álgebra linear
  • Estatística
  • Operação com bits
Documentação oficial do NumPy:

Como instalar o NumPy:
Se estiver usando o Jupyter notebook, não precisa fazer nada.

Para trabalhar diretamente numa IDE em sua máquina, utilize o pip no terminal de comandos de seu sistema operacional:
  • pip3 install numpy
Ou
  • pip install numpy

SymPy - Símbolos científicos em Python

Não sei se já percebeu, mas quase tudo em programação é feito através de números e textos, corretos?

Mas, e para exibir o símbolo de uma integral?
E de um somatório? Uma equação ordinária?
Imagine ter que estudar e lidar com uma função que tem trigonometria, logaritmo, números complexos etc, e tudo em uma fração?

É aí que entra a biblioteca SymPy (Symbolic Python). Com ela, além de fazer todos os cálculos possíveis que usualmente fazemos, ele exibe os símbolos (como o da raiz quadrada, a divisão com numerador em cima e denominador embaixo e tudo mais o que você puder fazer no papel, faremos no Python. 
Biblioteca Sympy para computação matemática
Com o SymPy, podemos trabalhar com:

  • Polinômios (fatorar, decompor, dividir...)
  • Cálculo (limite, derivada, integral, série de Taylor)
  • Equações (polinomiais, algébricas, diferencial, diofantinas e sistemas)
  • Análise Combinatória (combinação, permutação, arranjos, binômio de Newton)
  • Fórmulas de Física
  • Matemática discreta e Lógica
  • Matrizes (determinantes, autovalor/vetor)
  • Geometria
  • Estatística
  • Cristografia
  • Gráficos (plot)
Vejam um exemplo bonitinho no Jupyter notebook:
Fórmulas de Física no Python

Para instalar o Sympy: 

  • pip install sympy ou 
  • pip3 install sympy

Documentação oficial do SymPy:

https://docs.sympy.org/latest/index.html


SciPy - O Python na Computação Científica

As duas bibliotecas anteriores são usadas para cálculos matemáticos, no geral. E são essenciais, afinal a Matemática é a base para toda a ciência, principalmente de exatas.

Mas é com a library SciPy que vamos adentrar, especificamente, nas ciências, com a programação em Python.
SciPy scientific library


Ela se dá especialmente bem com a NumPy, principalmente quando precisamos fazer otimizações e integrações numéricas, tanto que sua estrutura de dados básica é o array multidimensional (matriz).

O SciPy acaba por 'estender' algumas funcionalidades do NumPy, generalizando mais algumas funções, como as da álgebra linear e da transformada de Fourier, por exemplo.

A biblioteca SciPy é mais usada, principalmente, para:
  • Equações algébricas
  • Equações diferenciais
  • Interpolação
  • Problemas envolvendo autovalor
  • Integração
  • Otimização
  • Funções e distribuições estatísticas
  • Algoritmos fundamentais para todas as ciências
  • Processamento de Sinais
  • Processamento multidimensional de imagens
  • Transformadas de Fourier
  • Spatial data structures (sistemas de informações geográficos, computação gráfica, robótica e outras áreas)
Veja um exemplo de uso da SciPy com o software de mapas e informações geográficas ArcGis:
Computação científica com Python

Para instalar o SciPy: 

  • pip install scipy ou 
  • pip3 install scipy
Guia oficial do usuário SciPy:

Matplotlib - Gráficos e visualizações de dados

Agora que já aprendemos quais as ferramentas que existem e que usaremos para fazer cálculos numéricos, precisamos de uma maneira para exibir essas informações.

E é aí que entra a poderosa biblioteca Matplotlib, de mathematical plotting library, cujo propósito é o de exibir saídas e visualizações, que é algo bem mais amplo e poderoso do que simplesmente 'exibir gráficos', como veremos ao longo de nosso curso de Programação Científica com Python.

Com pouquíssimas linhas de código seremos capazes de construir os mais diversos tipos de imagens e gráficos, em excelente resolução e de maneira bem flexível e configurável. Se já usou o MATLAB alguma vez, saiba que vai ter tudo o que ele oferece, e muito mais, graças ao poder e versalidade do Python.

A título de curiosidade, essa library foi criado por um neurocientista e biólogo, chamado John Hunter, mostrando que cientistas também podem se tornar exímios programadores. Não sinta medo se aparecer algo estranho ou difícil, em primeiro momento. Com o tempo e prática, vai ver que programar é uma das coisas mais simples e belas de se fazer.

Confesso que foi uma tarefa árdua achar imagens que ilustrassem o que é possível fazer com o Matplotlib:
Como criar gráficos em Python

Por isso, convido todos a digitarem 'matplotlib' no Google imagens e ver a infinidade de possibilidades que essa biblioteca do Python nos fornece:
Gráficos para Ciência de dados

A biblioteca do Matplotlib nos fornecesse a possibilidade de se criar e trabalhar com:
  • Plot de linhas
  • Plot scatter (gráficos de dispersão)
  • Plot stem (Diagrama de ramos e folhas)
  • Plot em 2D e 3D
  • Plot de contorno
  • Plot polares
  • Stack Plot (gráficos de pilha)
  • Box Plot (gráficos de caixa)
  • Error Plot (margem de erro)
  • Violin Plot
  • Plot de mapas de cores
  • Plot interativos (suportam tratamento de eventos e possibilidade de se mudar os dados de maneira dinâmica)
  • Gráficos de barra
  • Gráficos de pizza (pie chart)
  • Histograma
  • Customização de figuras, legendas, rótulos, eixos, títulos, subplots, grids de imagens etc
  • Mapas e projeções cartográficas (Basemap e Cartopy)
  • Portável e multi-plataforma
  • Integração com outras ferramentas, com o LaTeX e o Microsoft Excel
  • Qualidade de imagens do nível de publicações científicas
  • Total integração com o NumPy
  • Integração com o Jupyter Notebook
  • Possibilidade de se trabalhar com animações e renderizações rápidas
Para instalar o Matplotlib, acesse o terminal de comando de seu sistema operacional e digite:
pip install matplotlib
ou
pip3 install matplotlib

Veja a documentação oficial do Matplotlib em:

Pandas e a ciência de dados (data science)

Certamente você já ouviu falar em ciência de dados (ou mais especificamente, análise e processamento de dados). Se tornou algo tão grande, tão importante e com tão poucas pessoas que tem conhecimento na área, que é comum de ouvirmos falar até em meios não-acadêmicos, como na TV mesmo ou como propaganda em alguma rede social sua.

Em nosso curso de computação numérica com Python, iremos utilizar a poderosíssima e famosa biblioteca pandas, que vai nos permitir fazer uma vasta gama de operações com todos os tipos de dados que você imaginar.

Iremos aprender a trabalhar com Series e Dataframes (dados em série e tabela de dados), mais precisamente quebrando essas informações, unindo, classificando, agrupando, extraindo estatísticas, percebendo padrões, convertendo dados etc.

Por exemplo, vamos supor que o órgão oficial da sua cidade está coletando informação de onde chove, em 10 locais de sua cidade. Pega informações a cada hora. Ou seja, 240 dados diariamente (10mm de chuva, 15mm de chuva, 0 mm de chuva etc).

Se você pegar um mês desses dados, vai ter mais de 7000 informações, porém não vai conseguir concluir nada. Afinal, você analisou só um mês.

Mas vamos supor que você consiga 20 anos dessas informações. São quase 2 milhões de dados.
Dá pra fazer algo manualmente? Bem inviável, concorda?

É aí que entra a programação em Python e, especificamente, o pandas. Podemos pegar os dados ano a ano e ver como ele se comporta. Que anos choveu mais ou menos? Ou foi estável? É possível notar mudanças climáticas em sua cidade, e usar isso em um artigo acadêmico.

E que tal agora a gente selecionar por mês? Quanto que choveu em cada mês, de cada ano? Tem meses que chovem mais? Certamente, apenas olhando os dados, você saberia dizer que época chove mais, quanto que chove, que meses tem seca (assim, gerar informações para a criação de projetos contra seca ou alagamentos!), e por aí vai.

Veja bem, é possível analisar milhões e milhões de dados desses, com pouquíssimas linhas de código, extrair todo tipo de informação que você possa imaginar e até mostrar isso de maneira gráfica.

O motivo do nome ser pandas é porque pandas são fofos, e é simplesmente apaixonante trabalhar com esta biblioteca:
Curso de ciência de dados com Python


Documentação do pandas

Adivinha? Para instalar o pandas, digite o comando:
pip install pandas
ou
pip3 install pandas

No terminal de comando de seu sistema operacional.

Machine Learning e a Inteligência Artificial

Assim como a ciência de dados, muitíssimo provavelmente você ouviu falar num campo de estudo e trabalho chamado Machine Learning, ou aprendizado de máquina, em nossa língua.

Em nossa apostila Programação Científica em Python, iremos apresentar uma biblioteca para aprender e trabalhar com Machine Learning, vamos aprender como criar programas que irão detectar padrões em dados, ver coisas que nós humanos não conseguimos ver, através da teoria do aprendizado computacional.

Inteligência artificial em Python

Sim. É possível programarmos e ensinarmos as máquinas a: 
  • Reconhecer padrões
  • Aprender com erros
  • Criação de algoritmos
  • Fazer previsões
  • Tomar decisões

E tudo isso é a base para toda a inteligência artificial.

Ficou satisfeito com o que é possível fazer nas ciências, com o Python?
Pois bem, não mostrei nem 1% do que é possível. Bem vindo ao fantástico mundo da programação.

Chega de moleza com sua máquina, nos próximos tutoriais vamos colocar a mão na massa e aprender como fazer o hardware pegar fogo, de tanto trabalhar e calcular.

Python para Programação Científica e Computação Numérica

 Por que usar Python para programação científica? Qual a vantagem? O que o Python oferece para cientistas e engenheiros?

Este texto faz parte de nosso curso de Programação Científica em Python.

História da Programação Científica

Geralmente quando se fala em programação, ou computação de uma maneira geral, as pessoas se referem a PC's, softwares como o Office, Sistemas Operacionais como Windows, jogos, editores de imagem e vídeo, navegadores, sites, celulares, aplicativos etc.

Ou seja, informática.

Mas, na verdade, computação vem de computar, que significa simplesmente contar. É comum esquecermos mas, computação/programação é matemática pura, é lógica, raciocínio. É ciência.

Com o tempo, a programação foi sendo usada fora do ambiente científico, e está muitíssimo presente na vida das pessoas.

Então, não deve ser surpresa para você saber que grande parte da computação foi desenvolvida com o propósito científico.

MUITA coisa que usamos no dia a dia teve sua criação e início de uso em meios acadêmicos e em setores de pesquisa e desenvolvimento (P & D) de grandes empresas, com a AT & T.

Em décadas passadas (antes dos anos 2000), era praticamente o Fortran e o C que dominavam o meio acadêmico, como linguagens de propósito científico.

Era fácil, bem fácil, um livro de C++ ter mais de 1500 páginas, com a documentação das funções, bibliotecas e pacotes que estavam a disposição dos pesquisadores.

Ou seja, era difícil. Não importava se você era Matemático, Físico, Químico, Engenheiro ou de qualquer outra área, você tinha que estudar e dominar tão bem a programação como os programadores 'puros'.

Então, era algo bem 'nichado'. Poucas pessoas já vão para o meio científico. E dessas, as que usavam programação como ferramenta, eram bem menos ainda.

Computação Científica

Porém, mesmo sendo algo bem específico, ela foi evoluindo muito durante as décadas, com novas linguagens voltadas para programação numérica, novas ferramentas, programas, frameworks etc.

E dentre essas ferramentas, hoje em dia, o Python é a que mais se destaca.


O Python e a Programação Científica

E graças ao nosso querido e amado Python, essa barreira da dificuldade e escassez de ferramentas, vem sendo mudada radicalmente.

Com seu propósito de ser uma linguagem de fácil aprendizado e rápida codificação, a programação científica já é ensinada e usada desde o primeiro semestre de grande parte dos cursos de exatas, no Brasil e no mundo.

Por ser um projeto gratuito e livre, um batalhão de programadores, engenheiros, físicos, matemáticos, químicos e profissionais de outras graduações (Oceanografia, Geologia, Estatística, Biologia, Economia, Contabilidade etc etc etc) se uniram e passaram a criar ferramentas próprias, para cada propósito, e disponibilizaram elas publicamente para quem desejar usar em seus projetos.

Deseja simular ondas do mar e marés? Tem pacotes pra isso, feito por profissionais da área, que programaram em Python.

Realizou diversos experimentos e deseja plotar gráficos (de qualquer tipo), de maneira bem fácil e rápida? Só importar alguma biblioteca, já tem tudo isso pronto.

Quer simular interação de átomos? Galáxias se expandindo? Colisão de um meteoro? Tem de tudo e mais um pouco, pronto em Python, feito por físicos, astrofísicos, químicos e amantes da área.

Está projetando um prédio, uma ponte, uma montanha-russa? Acredite, muitas outras pessoas já precisaram fazer isso, e criaram diversas funções em Python, de modo que hoje é bem fácil fazer isso com essa linguagem.

Certamente já ouviu falar em Data Science (Ciência de dados), Deep Learning e Machine Learning, não é? A linguagem Python é pioneira nesses ramos.

Inteligência Artificial? Respira com Python.

Quer criar gráficos lindos e maravilhosos? Em 2D e 3D? Girar as figuras, 'entrar', 'sair' delas, puxar pra cima e pra baixo, pra um lado e outro, estilo futurista? Tem bibliotecas prontas pra isso, basta fornecer seus dados, informando o que deseja fazer, que o Python faz.

Simulação 3D com Python


Está com uma equação complicadíssima em mãos, de seu curso de Matemática ou de Física (seja graduação, mestrado, doutorado ou pós-doc) ? Deixa o Python fazer as contas por você, pois existem pacotes com funções de cálculo numérico prontinhas.

Acredite, praticamente tudo que você precisa, outras pessoas já precisaram e desenvolveram ferramentas, de modo que hoje em dia é, basicamente, aprender a usar elas.

E aprendendo a programar, aqui no Python Progressivo, caso você venha a estudar, pesquisar e desenvolver coisas novas no mundo científico, você vai ter bagagem em computação o suficiente para criar suas ferramentas e disponibilizar para o mundo.

Imagina cientistas, universidades e empresas usando código criado por você? Dá pra contar nos dedos quem pode se dar ao luxo de colocar isso em um currículo. Se você fizer, se prepare para a enxurrada de convites para palestras, bolsas e simpósios ao redor do mundo.

Não importa o que você esteja estudando ou no que esteja trabalhando, tem alguém na China, na Rússia, na Índia, Estados Unidos e Europa fazendo o mesmo. E a linguagem que vamos nos comunicar é o Python.

Seja você um Bioquímico, Agrônomo ou doutor em Cristalografia, sempre que precisar fazer contas ou simular algo, você vai aprender a programar usando o Python, para que sua máquina faça todo o trabalho pesado por você.

Para isso, basta estudar pelo curso Python Progressivo.


Programaçao Científica no Python Progressivo

Estudaremos os seguintes assuntos científicos (da Matemática, Física, Computação, Engenharia etc), usando o Python:

  • Vetores, Matrizes e Arrays multidimensionais
  • Cálculo (limites, derivadas, integrais e séries)
  • Equações
  • Equações diferenciais ordinárias
  • Equações diferenciais parciais
  • Álgebra Linear (equações lineares, equações não-lineares, autovalor etc)
  • Plottagem (como criar e visualizar gráficos)
  • Otimização
  • Interpolação (polinômios)
  • Análise e Processamento de dados
  • Estatística
  • Modelagem estatística (Regressão Linear, Regressão Discreta, Modelo de Poisson, Times Series)
  • Estatística Bayesiana
  • Processamento de SInais (Fourier, Filtro de sinais, Convolução, Análise Espectral)
  • Machine Learning (Regressão, Classificação, Clustering)
  • Python com Latex
  • Animações
  • Conjuntos de Mandelbrot


Usaremos diversas ferramentas prontas para usar com o Python, como as bibliotecas e pacotes:

  • NumPy
  • SciPy
  • SymPy
  • Pandas (Series, DataFrame, TimeSeries)
  • Seaborn
  • h5py
  • PyTables
  • Cython, Numba
  • Miniconda e Conda
Contamos com sua contribuição nos comentários. Deixe suas dúvidas, sua sugestão, erratas e não esqueça de dizer de onde você, o que estuda e o que está fazendo usando o Python.