8 Bibliotecas Python para Cálculos Matemáticos — Da stdlib ao NumPy e SciPy

Python oferece uma variedade impressionante de bibliotecas para cálculos matemáticos — desde funções básicas na própria linguagem até ferramentas poderosas para álgebra simbólica, otimização e análise dimensional. Se você está começando com Python (veja nosso guia de início) ou já domina o básico, conhecer essas bibliotecas vai ampliar bastante o que você consegue fazer com números.

Este artigo apresenta 8 bibliotecas essenciais: quatro da biblioteca padrão (math, statistics, decimal, fractions) e quatro externas muito usadas (NumPy, SymPy, SciPy, Pint). Cada uma resolve um tipo de problema diferente. Use a tabela de referência rápida abaixo para navegar direto até a que você precisa.

Referência rápida

Links diretos para cada biblioteca:

BibliotecaUso
mathFunções básicas
statisticsMédia, mediana, desvio
decimalPrecisão decimal
fractionsFrações exatas
numpyNumPy
sympySymPy
scipySciPy
pintPint

Biblioteca padrão

Essas quatro bibliotecas vêm com o Python — não é preciso instalar nada.

math — Funções matemáticas básicas

O módulo math traz funções clássicas de matemática: raiz quadrada, trigonometria, logaritmos, potências e constantes como π e e. É a escolha certa quando você precisa de operações numéricas simples e eficientes, sem dependências externas.

math_demo.py
import math

# Hypotenuse: sqrt(3²+4²) = 5
print(math.sqrt(3**2 + 4**2))  # 5.0

# Sine of 30° (radians)
print(math.sin(math.radians(30)))  # 0.5

# Log base 10
print(math.log10(1000))  # 3.0

O exemplo abaixo mostra a hipotenusa de um triângulo 3-4-5, o seno de 30 graus (convertendo de graus para radianos) e o logaritmo na base 10. Para cálculos científicos mais pesados, NumPy costuma ser mais rápido; para o dia a dia, math resolve.

statistics — Média, mediana, desvio

O módulo statistics foi adicionado no Python 3.4 para estatística descritiva básica. Ele calcula média, mediana, moda, variância e desvio padrão de sequências de números. Ideal para análises rápidas sem precisar do NumPy.

stats_demo.py
import statistics

data = [120, 180, 250, 300, 420]
print(statistics.mean(data))    # 254.0
print(statistics.median(data))  # 250
print(statistics.stdev(data))   # ~118.9

No exemplo, usamos uma lista de valores (por exemplo, preços ou tempos de resposta) e obtemos a média, a mediana e o desvio padrão. Para datasets grandes ou operações vetorizadas, NumPy ainda é preferível.

decimal — Precisão decimal exata

Números em ponto flutuante (float) usam representação binária e podem gerar erros de arredondamento — como o famoso 0.1 + 0.2 ≠ 0.3. O módulo decimal usa aritmética decimal de precisão arbitrária, essencial para dinheiro e medições que exigem exatidão.

decimal_demo.py
from decimal import Decimal

# Float trap: 0.1 + 0.2
print(0.1 + 0.2)  # 0.30000000000000004

# Decimal for exact precision
price = Decimal("19.99")
with_tax = price * (1 + Decimal("0.10"))
print(with_tax)  # 21.989

No exemplo, mostramos a armadilha do float e, em seguida, usamos Decimal para calcular um preço com taxa de 10% sem perder precisão.

fractions — Números racionais

O módulo fractions representa números como frações exatas (numerador/denominador), evitando erros de ponto flutuante em operações com razões. Útil para cálculos que precisam manter a forma fracionária.

fractions_demo.py
from fractions import Fraction

# 2/5 + 1/10 = 4/10 + 1/10 = 1/2
print(Fraction(2, 5) + Fraction(1, 10))  # 1/2

No exemplo, somamos 2/5 e 1/10 e obtemos 1/2 como resultado exato, sem conversão para float.

Bibliotecas externas

Essas bibliotecas exigem pip install. São padrão em ciência de dados, engenharia e pesquisa.

NumPy — Arrays e computação numérica

NumPy é a base da computação numérica em Python. Oferece arrays multidimensionais eficientes e uma enorme quantidade de funções para operações vetorizadas. Quase toda biblioteca de ciência de dados (pandas, scikit-learn, etc.) depende do NumPy.

numpy_demo.py
import numpy as np

arr = np.array([1.0, 2.0, 3.0, 4.0, 5.0])
norm = (arr - arr.mean()) / arr.std()
print(norm.mean(), norm.std())  # ~0.0, ~1.0

O exemplo normaliza um array (média 0, desvio 1) — uma operação comum em machine learning e análise de dados.

SymPy — Álgebra simbólica

SymPy faz álgebra simbólica: derivadas, integrais, equações, simplificações. Em vez de aproximações numéricas, você trabalha com expressões exatas (símbolos, frações, raízes).

sympy_demo.py
from sympy import symbols, diff, solve

x = symbols('x')
expr = x**3 - x
print(diff(expr, x))  # 3*x**2 - 1
print(solve(expr, x))   # [-1, 0, 1]

No exemplo, definimos um símbolo x, derivamos x³−x e resolvemos a equação para encontrar as raízes.

SciPy — Otimização e ciência

SciPy estende o NumPy com algoritmos científicos: otimização, integração, interpolação, processamento de sinais, estatística avançada e muito mais. É a ferramenta padrão para problemas numéricos em pesquisa e engenharia.

scipy_demo.py
from scipy.optimize import minimize

# Minimum of x² + 3x + 2
result = minimize(lambda x: x[0]**2 + 3*x[0] + 2, [0])
print(result.x)   # [-1.5]
print(result.fun)  # -0.25

O exemplo minimiza a função quadrática x²+3x+2. O mínimo está em x=−1,5 com valor −0,25.

Pint — Unidades e dimensões

Pint permite trabalhar com unidades físicas (km, h, m/s, etc.) de forma segura. Evita erros como somar metros com pés ou confundir velocidade com aceleração. Muito útil em física, engenharia e simulações.

pint_demo.py
from pint import UnitRegistry

ureg = UnitRegistry()
speed = 120 * ureg.km / (2 * ureg.h)
print(speed)                    # 60 km/h
print(speed.to(ureg.m / ureg.s))  # 16.67 m/s

No exemplo, calculamos 120 km em 2 horas e convertemos o resultado para m/s.

Resumo

Visão geral das 8 bibliotecas:

  • math — Funções básicas (sqrt, sin, log, etc.)
  • statistics — Média, mediana, desvio padrão
  • decimal — Precisão decimal exata (dinheiro, medições)
  • fractions — Números racionais exatos
  • NumPy — Arrays e computação vetorizada
  • SymPy — Álgebra simbólica (derivadas, equações)
  • SciPy — Otimização, integração, algoritmos científicos
  • Pint — Unidades e conversões dimensionais

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *