Math ClubMath Club
v1 · padrão canônico

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

Choose your door

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.

Choose your door

Curvatura de Gauss e Theorema Egregium

Segunda Forma Fundamental

Para superfície SR3S \subset \mathbb{R}^3 com normal unitária n\mathbf{n}:

Segunda forma fundamental: II(X,Y)=g(Xn,Y)=g(n,XY)II(X,Y) = -g(\nabla_X \mathbf{n}, Y) = g(\mathbf{n}, \nabla_X Y)

Em coordenadas: bij=njirb_{ij} = -\mathbf{n}\cdot\partial_j\partial_i \mathbf{r}

Curvatura principal κ1,κ2\kappa_1, \kappa_2: autovalores do operador de forma B=g1bB = g^{-1}b.

(Fonte: do Carmo, Differential Geometry of Curves and Surfaces, §3; Lee, Riemannian Manifolds §8)

Curvatura de Gauss

K=κ1κ2=det(bij)det(gij)K = \kappa_1\kappa_2 = \frac{\det(b_{ij})}{\det(g_{ij})}

Curvatura média: H=κ1+κ22H = \frac{\kappa_1 + \kappa_2}{2}

Theorema Egregium de Gauss (1827): K pode ser calculada apenas com os coeficientes da primeira forma fundamental gijg_{ij} e suas derivadas — sem usar a imersão em ℝ³:

K=R1212det(gij)K = \frac{R_{1212}}{\det(g_{ij})}

(Fonte: do Carmo, DG of Curves and Surfaces, §4.3; Spivak Vol. III §1)

Fórmula de Brioschi

Para superfície paramétrica r(u,v)\mathbf{r}(u,v) com E=g11,F=g12,G=g22E = g_{11}, F = g_{12}, G = g_{22}:

K=12Evv+Fuv12Guu12EuFu12EvFv12GuEF12GvFGoutro(EGF2)2K = \frac{\begin{vmatrix} -\frac{1}{2}E_{vv}+F_{uv}-\frac{1}{2}G_{uu} & \frac{1}{2}E_u & F_u-\frac{1}{2}E_v \\ F_v - \frac{1}{2}G_u & E & F \\ \frac{1}{2}G_v & F & G \end{vmatrix} - \text{outro} }{(EG-F^2)^2}

(Fonte: do Carmo, DG of Curves and Surfaces §4.3; Struik, Lectures on Classical Differential Geometry)

Choose your door

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.)

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.