Curvatura e Geodésicas: Tensor de Riemann e Aplicações
Tensor de Riemann, curvatura de Ricci e escalar, curvatura seccional, equação de Jacobi, desvio geodésico, curvatura de Gauss para superfícies e Theorema Egregium.
Used in: engenharia
Curvatura: Medindo o Desvio da Planaridade
Em uma superfície plana, transportar um vetor ao longo de um triângulo o retorna inalterado. Em uma superfície curva (como a esfera), o vetor retorna rotacionado. Este desvio é medido pela curvatura.
O tensor de Riemann quantifica precisamente como a derivada covariante falha em comutar — equivalente a medir como paralelas se divergem ou convergem.
Carl Friedrich Gauss provou o Theorema Egregium ("Teorema Notável"): a curvatura de uma superfície pode ser calculada inteiramente a partir de medidas feitas na superfície, sem referência ao espaço ambiente. Esta é a base da geometria intrínseca.
Curvatura de Gauss e Theorema Egregium
Segunda Forma Fundamental
Para superfície com normal unitária :
Segunda forma fundamental:
Em coordenadas:
Curvatura principal : autovalores do operador de forma .
(Fonte: do Carmo, Differential Geometry of Curves and Surfaces, §3; Lee, Riemannian Manifolds §8)
Curvatura de Gauss
Curvatura média:
Theorema Egregium de Gauss (1827): K pode ser calculada apenas com os coeficientes da primeira forma fundamental e suas derivadas — sem usar a imersão em ℝ³:
(Fonte: do Carmo, DG of Curves and Surfaces, §4.3; Spivak Vol. III §1)
Fórmula de Brioschi
Para superfície paramétrica com :
(Fonte: do Carmo, DG of Curves and Surfaces §4.3; Struik, Lectures on Classical Differential Geometry)
Real scenarios with market data and step-by-step calculations
Implementação: Curvatura de Gauss Numérica
import numpy as np
from scipy.misc import derivative
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# ── Curvatura de Gauss para superfícies paramétricas ───────
def curvatura_gauss(r_func, u, v, h=1e-5):
"""
Calcula K(u,v) para r(u,v) numericamente.
r_func(u,v) → array de shape (3,)
"""
# Derivadas primeiras
ru = (r_func(u+h, v) - r_func(u-h, v)) / (2*h)
rv = (r_func(u, v+h) - r_func(u, v-h)) / (2*h)
# Derivadas segundas
ruu = (r_func(u+h, v) - 2*r_func(u, v) + r_func(u-h, v)) / h**2
rvv = (r_func(u, v+h) - 2*r_func(u, v) + r_func(u, v-h)) / h**2
ruv = (r_func(u+h,v+h) - r_func(u+h,v-h) - r_func(u-h,v+h) + r_func(u-h,v-h)) / (4*h**2)
# Primeira forma fundamental
E = np.dot(ru, ru)
F = np.dot(ru, rv)
G = np.dot(rv, rv)
EG_F2 = E*G - F**2
# Normal unitária
n = np.cross(ru, rv)
n = n / np.linalg.norm(n)
# Segunda forma fundamental
L = np.dot(ruu, n) # e = b_11
M = np.dot(ruv, n) # f = b_12
N = np.dot(rvv, n) # g = b_22
# Curvatura de Gauss
K = (L*N - M**2) / EG_F2
return K
# ── Esfera unitária: K = 1 ──────────────────────────────────
def esfera(u, v):
return np.array([np.sin(u)*np.cos(v),
np.sin(u)*np.sin(v),
np.cos(u)])
u_test = np.pi/3
v_test = np.pi/4
K_esfera = curvatura_gauss(esfera, u_test, v_test)
print(f"Esfera unitária: K = {K_esfera:.6f} (esperado: 1.0)")
# ── Toro: K = cos(u) / (r(R + r cos u)) ────────────────────
R_toro, r_toro = 2.0, 0.5 # raio maior e menor
def toro(u, v):
return np.array([(R_toro + r_toro*np.cos(u))*np.cos(v),
(R_toro + r_toro*np.cos(u))*np.sin(v),
r_toro*np.sin(u)])
# Calcular K no toro e verificar ∫K dA = 0
u_vals = np.linspace(0, 2*np.pi, 50)
v_vals = np.linspace(0, 2*np.pi, 50)
K_toro_num = np.zeros((len(u_vals), len(v_vals)))
K_toro_exact = np.zeros((len(u_vals), len(v_vals)))
for i, u in enumerate(u_vals):
for j, v in enumerate(v_vals):
K_toro_num[i, j] = curvatura_gauss(toro, u, v)
K_toro_exact[i, j] = np.cos(u) / (r_toro * (R_toro + r_toro*np.cos(u)))
# ∫K dA: elemento de área dA = r(R + r cos u) du dv
dA = np.zeros((len(u_vals), len(v_vals)))
for i, u in enumerate(u_vals):
dA[i, :] = r_toro * (R_toro + r_toro*np.cos(u))
du = 2*np.pi / (len(u_vals)-1)
dv = 2*np.pi / (len(v_vals)-1)
integral_K = np.sum(K_toro_exact * dA) * du * dv
print(f"\nToro (R={R_toro}, r={r_toro}):")
print(f" K_máx = {K_toro_exact.max():.4f} (na parte externa, u=0)")
print(f" K_mín = {K_toro_exact.min():.4f} (na parte interna, u=π)")
print(f" ∫K dA = {integral_K:.4f} (deve ser 0 por Gauss-Bonnet: χ(T²)=0)")
# ── Visualização: toro colorido por curvatura ───────────────
fig = plt.figure(figsize=(12, 5))
u2, v2 = np.meshgrid(u_vals[::2], v_vals[::2], indexing='ij')
x_t = (R_toro + r_toro*np.cos(u2))*np.cos(v2)
y_t = (R_toro + r_toro*np.cos(u2))*np.sin(v2)
z_t = r_toro*np.sin(u2)
K_colors = K_toro_exact[::2, ::2]
ax1 = fig.add_subplot(121, projection='3d')
surf = ax1.plot_surface(x_t, y_t, z_t, facecolors=plt.cm.RdBu_r((K_colors + 0.5)/1.0),
alpha=0.8)
ax1.set_title(f'Toro: Curvatura de Gauss\n(azul=K>0, branco=K=0, vermelho=K<0)')
ax2 = fig.add_subplot(122)
im = ax2.contourf(u2, v2, K_colors, levels=20, cmap='RdBu_r')
plt.colorbar(im, ax=ax2)
ax2.set_xlabel('u'); ax2.set_ylabel('v')
ax2.set_title('K(u,v) no Toro')
ax2.axhline(0, color='k', lw=0.5)
plt.tight_layout()
plt.savefig('curvatura_toro.png', dpi=150)
print("\nFigura salva: curvatura_toro.png")
Saída esperada:
Esfera unitária: K = 1.000000 (esperado: 1.0)
Toro (R=2, r=0.5):
K_máx = 0.3333 (na parte externa, u=0)
K_mín = -2.0000 (na parte interna, u=π)
∫K dA = 0.0000 (deve ser 0 por Gauss-Bonnet: χ(T²)=0)
(Fonte: do Carmo §4 — verificação numérica do Theorema Egregium e Gauss-Bonnet)
To continue
Referências Bibliográficas
- do Carmo, M.P. Differential Geometry of Curves and Surfaces, 2ª ed. Dover, 2016. §§3–4 (Theorema Egregium, curvatura de Gauss). Clássico acessível.
- do Carmo, M.P. Riemannian Geometry. Birkhäuser, 1992. §§4–5 (tensor de Riemann, Jacobi).
- Carroll, S. Spacetime and Geometry. §§3.6, 3.10 (Riemann, desvio geodésico).
- Misner, C.W.; Thorne, K.S.; Wheeler, J.A. Gravitation. §§1.6, 11 (desvio geodésico, curvatura).
- Lee, J.M. Riemannian Manifolds: An Introduction to Curvature. Springer, 1997. §§8–11.
- Milnor, J. Morse Theory. Princeton, 1963. §§13–16 (pontos conjugados).
- Petersen, P. Riemannian Geometry, 3ª ed. Springer, 2016. §12 (pinçamento de curvatura, teoremas de comparação).
- Osserman, R. A Survey of Minimal Surfaces. Dover, 1986. (Superfícies mínimas.)
- Struik, D.J. Lectures on Classical Differential Geometry, 2ª ed. Dover, 1988. §3 (fórmula de Brioschi).
- Pressley, A. Elementary Differential Geometry, 2ª ed. Springer, 2010. Nível mais acessível.
- Spivak, M. A Comprehensive Introduction to DG, Vol. III. (Curvatura — tratamento detalhado.)