Variedades Diferenciáveis
Conceito de variedade diferenciável, atlas e cartas, funções suaves entre variedades, espaço tangente, fibrado tangente, imersões e submersões, variedades com fronteira.
Used in: engenharia
Variedades: Superfícies Generalizadas
Uma variedade é um espaço que localmente "parece" com o espaço euclideano. A superfície da Terra é uma variedade 2-dimensional: em cada ponto, uma região suficientemente pequena pode ser mapeada num pedaço plano (como um mapa geográfico).
A diferença é que as coordenadas locais (mapas) podem não cobrir o espaço inteiro — precisamos de vários mapas sobrepostos (um atlas). A condição de "diferenciabilidade" exige que as transições entre mapas sejam suaves.
Exemplos de variedades: a esfera S², o toro T², grupos de Lie como SO(3) (rotações 3D), o espaço de configurações de robôs articulados.
Espaço Tangente e Fibrado Tangente
Vetores Tangentes
Definição via derivações: Um vetor tangente em é uma derivação — aplicação linear satisfazendo a regra de Leibniz:
Em coordenadas locais ao redor de p, os vetores formam uma base de :
(Fonte: Lee §3; Carroll §2.3)
Diferencial e Pullback
Para suave, o diferencial (pushforward):
Em coordenadas: (Jacobiano!).
Para 1-formas, o pullback :
(Fonte: Lee §3; do Carmo, Riemannian Geometry §0)
Fibrado Tangente
O fibrado tangente é:
com estrutura de variedade 2n-dimensional. A projeção envia .
Um campo vetorial é uma seção com .
Colchete de Lie: Para campos X, Y:
(Fonte: Lee §8; Carroll §2)
Real scenarios with market data and step-by-step calculations
Implementação: Projeção Estereográfica da Esfera S²
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# ── Projeção estereográfica S² → ℝ² ─────────────────────
# Do polo norte N = (0,0,1): p = (x,y,z) → (X,Y)
def proj_norte(x, y, z):
"""Projeção estereográfica do polo norte."""
denom = 1 - z
return x / denom, y / denom
def proj_sul(x, y, z):
"""Projeção estereográfica do polo sul."""
denom = 1 + z
return x / denom, y / denom
def inv_norte(X, Y):
"""Inversa da projeção do polo norte."""
denom = 1 + X**2 + Y**2
return 2*X/denom, 2*Y/denom, (X**2+Y**2-1)/denom
# ── Verificar que a mudança de cartas é C^∞ ───────────────
# Composição: φ_sul ∘ φ_norte^{-1}: ℝ²\{0} → ℝ²\{0}
# (X,Y) → ponto na esfera → (X',Y')
def mudanca_cartas(X, Y):
"""Mudança de cartas: norte → sul. Deve ser X'=X/(X²+Y²), etc."""
x, y, z = inv_norte(X, Y)
return proj_sul(x, y, z)
# Verificar: para (X,Y) = (1,1)
X0, Y0 = 1.0, 1.0
Xp, Yp = mudanca_cartas(X0, Y0)
r_sq = X0**2 + Y0**2
print(f"Mudança de cartas em (1,1):")
print(f" Resultado: ({Xp:.4f}, {Yp:.4f})")
print(f" Esperado: ({X0/r_sq:.4f}, {Y0/r_sq:.4f})")
print(f" Fórmula: (X,Y) → (X/(X²+Y²), Y/(X²+Y²)) — inversão no círculo")
# ── Visualização: Atlas da esfera ─────────────────────────
fig = plt.figure(figsize=(14, 5))
# Esfera com meridionais e paralelos
ax1 = fig.add_subplot(131, projection='3d')
u = np.linspace(0, 2*np.pi, 50)
v = np.linspace(0, np.pi, 25)
xs = np.outer(np.cos(u), np.sin(v))
ys = np.outer(np.sin(u), np.sin(v))
zs = np.outer(np.ones(u.shape), np.cos(v))
ax1.plot_surface(xs, ys, zs, alpha=0.3, color='lightblue')
ax1.set_title('S² (esfera)')
# Projeção do polo norte
ax2 = fig.add_subplot(132)
phi_vals = np.linspace(0, 2*np.pi, 200)
for theta in [np.pi/6, np.pi/3, np.pi/2, 2*np.pi/3, 5*np.pi/6]:
x_sph = np.sin(theta) * np.cos(phi_vals)
y_sph = np.sin(theta) * np.sin(phi_vals)
z_sph = np.cos(theta) * np.ones_like(phi_vals)
# Não plotar perto do polo norte (z~1)
mask = z_sph < 0.95
if mask.sum() > 0:
Xp, Yp = proj_norte(x_sph[mask], y_sph[mask], z_sph[mask])
ax2.plot(Xp, Yp, 'b-', lw=0.8, alpha=0.7)
ax2.set_xlim(-5, 5); ax2.set_ylim(-5, 5)
ax2.set_title('Carta Norte: S²\\{N} → ℝ²')
ax2.grid(True, alpha=0.3); ax2.set_aspect('equal')
# Projeção do polo sul
ax3 = fig.add_subplot(133)
for theta in [np.pi/6, np.pi/3, np.pi/2, 2*np.pi/3, 5*np.pi/6]:
x_sph = np.sin(theta) * np.cos(phi_vals)
y_sph = np.sin(theta) * np.sin(phi_vals)
z_sph = np.cos(theta) * np.ones_like(phi_vals)
mask = z_sph > -0.95
if mask.sum() > 0:
Xp, Yp = proj_sul(x_sph[mask], y_sph[mask], z_sph[mask])
ax3.plot(Xp, Yp, 'r-', lw=0.8, alpha=0.7)
ax3.set_xlim(-5, 5); ax3.set_ylim(-5, 5)
ax3.set_title('Carta Sul: S²\\{S} → ℝ²')
ax3.grid(True, alpha=0.3); ax3.set_aspect('equal')
plt.tight_layout()
plt.savefig('atlas_esfera.png', dpi=150)
print("\nFigura salva: atlas_esfera.png")
# ── SO(3): Fórmula de Rodrigues ────────────────────────────
print("\n── Fórmula de Rodrigues (SO(3)) ──")
def rodrigues(omega, theta):
"""Rotação de ângulo theta em torno do eixo omega (unitário)."""
omega = omega / np.linalg.norm(omega)
wx, wy, wz = omega
K = np.array([[0, -wz, wy],
[wz, 0, -wx],
[-wy, wx, 0]]) # Matriz antisimétrica de omega
return np.eye(3) + np.sin(theta)*K + (1-np.cos(theta))*K@K
# Rotação de 90° em torno do eixo z
R = rodrigues([0, 0, 1], np.pi/2)
print("Rotação 90° em torno de z:")
print(np.round(R, 4))
v_test = np.array([1, 0, 0])
print(f"R * (1,0,0) = {np.round(R @ v_test, 4)} (deve ser (0,1,0))")
# Verificar R^T R = I e det R = 1
print(f"R^T R = \n{np.round(R.T @ R, 10)}")
print(f"det(R) = {np.linalg.det(R):.6f}")
Saída esperada:
Mudança de cartas em (1,1):
Resultado: (0.5000, 0.5000)
Esperado: (0.5000, 0.5000)
Fórmula: (X,Y) → (X/(X²+Y²), Y/(X²+Y²)) — inversão no círculo
Rotação 90° em torno de z:
[[ 0. -1. 0.]
[ 1. 0. 0.]
[ 0. 0. 1.]]
R * (1,0,0) = [0. 1. 0.] (deve ser (0,1,0))
det(R) = 1.000000
(Fonte: Lee §1 — atlas da esfera; Goldstein §4.5 — Rodrigues)
To continue
Referências Bibliográficas
- Lee, J.M. Introduction to Smooth Manifolds, 2ª ed. Springer, 2013. A referência principal moderna: completo, rigoroso e bem escrito.
- do Carmo, M.P. Riemannian Geometry. Birkhäuser, 1992. §0 (manifolds, maps). Introdução clássica.
- Spivak, M. A Comprehensive Introduction to Differential Geometry, Vol. I, 3ª ed. Publish or Perish, 1999. Tratamento mais detalhado.
- Warner, F.W. Foundations of Differentiable Manifolds and Lie Groups. Springer, 1983. Abordagem funcional-analítica.
- Hirsch, M.W. Differential Topology. Springer, 1976. Teorema de Sard, Whitney — com provas completas.
- Carroll, S. Spacetime and Geometry. Addison-Wesley, 2004. §2 (variedades em relatividade geral).
- Misner, C.W.; Thorne, K.S.; Wheeler, J.A. Gravitation. §9 (variedades diferenciáveis).
- Hatcher, A. Algebraic Topology. Cambridge, 2002. §§2.2–2.3 (orientação, homologia). Disponível livremente no site do autor.
- Hall, B. Lie Groups, Lie Algebras, and Representations, 2ª ed. Springer, 2015. §1 (grupos de Lie e SU(2)).
- Spong, M.W. et al. Robot Modeling and Control. Wiley, 2005. §§2–3 (SO(3), espaços de configuração em robótica).