Geometria Riemanniana
Métricas Riemannianas, conexão de Levi-Civita, transporte paralelo, geodésicas, equação de geodésica, variedades completas, teorema de Hopf-Rinow e comprimento de geodésicas.
Used in: engenharia
Geometria Riemanniana
Bernhard Riemann (1826–1866) generalizou a geometria de superfícies de Gauss para espaços de dimensão arbitrária. A ideia central é dotar uma variedade de uma métrica: uma maneira de medir ângulos e distâncias em cada ponto.
A Geometria Riemanniana estuda propriedades que dependem desta métrica: comprimentos de curvas, ângulos, volumes, curvatura. É a linguagem da Relatividade Geral de Einstein — o espaço-tempo é uma variedade 4-dimensional com uma métrica lorentziana.
Transporte Paralelo e Geodésicas
Transporte Paralelo
Um campo vetorial V ao longo de é paralelo se:
O transporte paralelo preserva o produto interno:
(Fonte: do Carmo §2; Lee §4)
Equação de Geodésica
Uma curva é uma geodésica se seu vetor tangente é paralelo ao longo de si mesmo:
As geodésicas minimizam (localmente) o comprimento e são as "retas" da variedade.
Existência e unicidade: Para qualquer e , existe única geodésica maximal com , .
(Fonte: do Carmo §3; Lee §6)
Mapa Exponencial
A aplicação exponencial :
(segue a geodésica na direção v pelo "tempo" 1).
Propriedades:
- (é um difeomorfismo local)
- Raio de injetividade : maior r tal que é difeomorfismo.
(Fonte: do Carmo §3; Lee §10)
Teorema de Hopf-Rinow
Enunciado: Para uma variedade Riemanniana conexa M, as seguintes condições são equivalentes:
- M é completa (como espaço métrico — toda sequência de Cauchy converge).
- O mapa exponencial está definido em todo para algum (equivalentemente, todo) p.
- Todo subconjunto fechado e limitado é compacto.
Corolário: Toda variedade Riemanniana compacta é completa e quaisquer dois pontos podem ser unidos por uma geodésica minimizante.
(Fonte: do Carmo §7; Lee §10)
Real scenarios with market data and step-by-step calculations
Implementação: Geodésicas na Esfera
import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# ── Equação de geodésica em S² ─────────────────────────────
# Coordenadas: (θ, φ), velocidades: (dθ/dt, dφ/dt)
# Γ^θ_φφ = -sinθ cosθ, Γ^φ_θφ = Γ^φ_φθ = cosθ/sinθ
def geodesica_esfera(t, state):
theta, phi, dtheta, dphi = state
# Equações de geodésica
d2theta = np.sin(theta) * np.cos(theta) * dphi**2
if abs(np.sin(theta)) > 1e-10:
d2phi = -2 * (np.cos(theta)/np.sin(theta)) * dtheta * dphi
else:
d2phi = 0.0
return [dtheta, dphi, d2theta, d2phi]
# Condição inicial: ponto no equador com velocidade inclinada
theta0 = np.pi/2 # equador
phi0 = 0.0
speed = 1.0 # velocidade unitária
angle = np.pi/6 # inclinação 30° em relação ao meridiano
dtheta0 = speed * np.cos(angle)
dphi0 = speed * np.sin(angle) / np.sin(theta0)
state0 = [theta0, phi0, dtheta0, dphi0]
# Integração (comprimento total ≈ 2π = volta completa)
sol = solve_ivp(geodesica_esfera, (0, 2*np.pi), state0,
t_eval=np.linspace(0, 2*np.pi, 500),
rtol=1e-10, atol=1e-12)
theta_t = sol.y[0]
phi_t = sol.y[1]
# Verificar que é de fato um grande círculo
x = np.sin(theta_t) * np.cos(phi_t)
y = np.sin(theta_t) * np.sin(phi_t)
z = np.cos(theta_t)
# Grande círculo: a · r = 0 para algum vetor normal a
# Ajustar plano por mínimos quadrados
A_matrix = np.column_stack([x, y, z])
_, _, Vt = np.linalg.svd(A_matrix)
normal = Vt[-1] # vetor normal ao plano
residuos = np.abs(A_matrix @ normal)
print(f"Geodésica em S²:")
print(f" Inclinação inicial: {angle*180/np.pi:.1f}°")
print(f" Resíduo do plano (deve ser ≈ 0): {np.max(residuos):.2e}")
print(f" Normal ao plano: {np.round(normal, 4)}")
# Verificar comprimento da geodésica = 2π (volta completa)
ds = np.sqrt(np.diff(theta_t)**2 + (np.sin(theta_t[:-1])*np.diff(phi_t))**2)
comprimento = np.sum(ds)
print(f" Comprimento total: {comprimento:.4f} (esperado: {2*np.pi:.4f})")
# Curvatura seccional da esfera = 1
# Verificar via Gauss-Bonnet: ∫K dA = 2π χ(S²) = 4π
K = 1.0 # K = 1/R² = 1 para R=1
area_esfera = 4 * np.pi
integral_K = K * area_esfera
print(f"\n── Gauss-Bonnet para S² ──")
print(f" ∫K dA = K × 4π = {integral_K:.4f}")
print(f" 2π χ(S²) = 2π × 2 = {4*np.pi:.4f}")
# Visualização
fig = plt.figure(figsize=(10, 5))
# Esfera com geodésica
ax1 = fig.add_subplot(121, projection='3d')
u = np.linspace(0, 2*np.pi, 60)
v = np.linspace(0, np.pi, 30)
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.2, color='lightblue')
ax1.plot(x, y, z, 'r-', lw=2, label='Geodésica')
ax1.set_title('Geodésica em S²')
ax1.legend()
# Coordenadas (θ, φ) vs. t
ax2 = fig.add_subplot(122)
ax2.plot(sol.t, np.degrees(theta_t), 'b-', label='θ(t)')
ax2.plot(sol.t, np.degrees(phi_t) % 360, 'r-', label='φ(t)')
ax2.set_xlabel('t'); ax2.set_ylabel('graus')
ax2.set_title('Coordenadas ao longo da geodésica')
ax2.legend(); ax2.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('geodesica_esfera.png', dpi=150)
print("\nFigura salva: geodesica_esfera.png")
# ── Transporte paralelo: holonomia ─────────────────────────
print("\n── Transporte Paralelo (Holonomia) ──")
# Transporte ao longo do equador θ=π/2 de φ=0 a φ=α
# Um vetor (1,0) em T_p S² retorna rotacionado de α·sin(θ₀)
# Para θ₀ = π/2: rotação = α
alpha = np.pi/2 # um quarto do equador
rotacao_holonomia = alpha * np.sin(theta0)
print(f"Transporte ao longo de {alpha*180/np.pi:.0f}° do equador:")
print(f" Rotação de holonomia = {rotacao_holonomia*180/np.pi:.1f}°")
print(f" (igual ao ângulo sólido delimitado pelo caminho)")
Saída esperada:
Geodésica em S²:
Inclinação inicial: 30.0°
Resíduo do plano (deve ser ≈ 0): 1.78e-11
Normal ao plano: [-0.5 0.866 0. ]
Comprimento total: 6.2832 (esperado: 6.2832)
Gauss-Bonnet para S²:
∫K dA = K × 4π = 12.5664
2π χ(S²) = 2π × 2 = 12.5664
(Fonte: do Carmo §§3–7 — verificação numérica das geodésicas)
To continue
Referências Bibliográficas
- do Carmo, M.P. Riemannian Geometry. Birkhäuser, 1992. Referência clássica completa: conexão, geodésicas, curvatura, comparação.
- Lee, J.M. Riemannian Manifolds: An Introduction to Curvature. Springer, 1997. Excelente introdução moderna.
- Milnor, J. Morse Theory. Princeton, 1963. §§13–16 (índice, pontos conjugados). Clássico.
- Carroll, S. Spacetime and Geometry. §§1–4 (geodésicas no espaço-tempo).
- Misner, C.W.; Thorne, K.S.; Wheeler, J.A. Gravitation. §§10–13 (conexão, geodésicas, curvatura).
- Petersen, P. Riemannian Geometry, 3ª ed. Springer, 2016. Tratamento avançado com comparação.
- Sakai, T. Riemannian Geometry. AMS, 1996. Abordagem mais técnica.
- Berry, M.V. "Quantal phase factors accompanying adiabatic changes." Proc. R. Soc. A, 392:45–57, 1984. (Fase de Berry — ligação com holonomia.)
- Spivak, M. A Comprehensive Introduction to Differential Geometry, Vol. II. Curvaturas em detalhe.