Math ClubMath Club
v1 · padrão canônico

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

Choose your door

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.

Choose your door

Transporte Paralelo e Geodésicas

Transporte Paralelo

Um campo vetorial V ao longo de γ(t)\gamma(t) é paralelo se:

DVdt=γ˙V=0,ou sejadVkdt+Γijkγ˙iVj=0\frac{DV}{dt} = \nabla_{\dot\gamma} V = 0, \quad \text{ou seja} \quad \frac{dV^k}{dt} + \Gamma^k_{ij}\dot\gamma^i V^j = 0

O transporte paralelo Pt:Tγ(0)MTγ(t)MP_t: T_{\gamma(0)}M \to T_{\gamma(t)}M preserva o produto interno:

g(Ptu,Ptv)=g(u,v)(isometria linear)g(P_t u, P_t v) = g(u,v) \quad (\text{isometria linear})

(Fonte: do Carmo §2; Lee §4)

Equação de Geodésica

Uma curva γ\gamma é uma geodésica se seu vetor tangente é paralelo ao longo de si mesmo:

Dγ˙dt=γ˙γ˙=0γ¨k+Γijkγ˙iγ˙j=0\frac{D\dot\gamma}{dt} = \nabla_{\dot\gamma}\dot\gamma = 0 \quad \Longleftrightarrow \quad \ddot\gamma^k + \Gamma^k_{ij}\dot\gamma^i\dot\gamma^j = 0

As geodésicas minimizam (localmente) o comprimento e são as "retas" da variedade.

Existência e unicidade: Para qualquer pMp \in M e vTpMv \in T_pM, existe única geodésica maximal γv\gamma_v com γv(0)=p\gamma_v(0) = p, γ˙v(0)=v\dot\gamma_v(0) = v.

(Fonte: do Carmo §3; Lee §6)

Mapa Exponencial

A aplicação exponencial expp:TpMM\exp_p: T_pM \to M:

expp(v)=γv(1)\exp_p(v) = \gamma_v(1)

(segue a geodésica na direção v pelo "tempo" 1).

Propriedades:

  • d(expp)0=idTpMd(\exp_p)_0 = \text{id}_{T_pM} (é um difeomorfismo local)
  • Raio de injetividade inj(p)\text{inj}(p): maior r tal que exppB(0,r)\exp_p|_{B(0,r)} é 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:

  1. M é completa (como espaço métrico — toda sequência de Cauchy converge).
  2. O mapa exponencial expp\exp_p está definido em todo TpMT_pM para algum (equivalentemente, todo) p.
  3. 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)

Choose your door

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.

Updated on 2026-05-29 · Author(s): Clube da Matemática

Found an error? Open an issue on GitHub or submit a PR — open source forever.