Math ClubMath Club
v1 · padrão canônico

Teorema de Gauss-Bonnet e Topologia

Teorema de Gauss-Bonnet para superfícies, característica de Euler, gênero topológico, Gauss-Bonnet-Chern em dimensões superiores, aplicações em física e robótica.

Used in: engenharia

Choose your door

O Teorema Mais Belo da Matemática?

O Teorema de Gauss-Bonnet relaciona a geometria (curvatura) com a topologia (forma global) de uma superfície. Em termos simples:

Não importa como você deforma uma superfície — desde que não rasgue nem cole — a integral da curvatura sobre toda ela é sempre o mesmo número!

Para a esfera, esse número é 4π. Para o toro (superfície de rosca), é 0. Para uma superfície com 2 furos, é -4π. Este número — a característica de Euler χ — é um invariante topológico que "conta" a forma global do espaço.

Choose your door

Prova e Extensões

Prova via Stokes (Ideia)

A prova de Gauss-Bonnet usa o Teorema de Stokes aplicado à forma de conexão:

  1. Em cada carta, a curvatura de Gauss K = dω (onde ω é a forma de conexão)
  2. Integração em peças + somas de termos de fronteira + ângulos nos cantos

Fórmula de Gauss-Bonnet-Stokes:

Rω+RKdA=(termos de aˆngulos)\int_{\partial R} \omega + \iint_R K\,dA = \text{(termos de ângulos)}

A soma sobre todos os patches de uma triangulação dá a característica de Euler.

(Fonte: do Carmo §4.5; Spivak Vol. V §13)

Teorema de Gauss-Bonnet-Chern (Dimensão Superiores)

Generalizações para variedade de dimensão 2n:

MΩ=(2π)nχ(M)\int_M \Omega = (2\pi)^n \chi(M)

onde Ω\Omega é o pfaffiano da curvatura (n-ésima classe de Chern).

Para n = 1 (dim 2): Pfaffian = K dA — recupera Gauss-Bonnet. Para n = 2 (dim 4): Pfaffian = tr(RR)/8π2\text{tr}(R \wedge R)/8\pi^2.

(Fonte: Chern, Selected Papers, §3; Bott & Tu, Differential Forms, §11)

Fórmula de Euler-Poincaré para Complexos

Mais geralmente, para um espaço topológico com grupos de homologia:

χ(M)=k=0dimM(1)kdimHk(M;R)=k(1)kbk\chi(M) = \sum_{k=0}^{\dim M} (-1)^k \dim H_k(M; \mathbb{R}) = \sum_k (-1)^k b_k

onde bk=dimHkb_k = \dim H_k são os números de Betti.

(Fonte: Hatcher §2; Bott & Tu §1)

Teorema do Penteado (Hairy Ball Theorem)

Corolário topológico de Gauss-Bonnet: Não existe campo vetorial contínuo não-nulo em S² (não dá para "pentear uma bola").

Prova: Um campo de vetores não-nulo em S² produziria um homomorfismo π₁ não-trivial, ou: pelo índice de Hopf, a soma dos índices dos zeros de um campo vetorial = χ(M). Para S², χ = 2 ≠ 0, logo qualquer campo vetorial tem algum zero.

(Fonte: Milnor, Topology from the Differentiable Viewpoint §3; Hatcher §2.2)

Choose your door

Real scenarios with market data and step-by-step calculations

Implementação: Gauss-Bonnet Numérico

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# ── Gauss-Bonnet numérico para superfícies paramétricas ────
def gauss_bonnet_numerico(r_func, u_range, v_range, N=100, h=1e-5):
    """
    Verifica ∫K dA = 2π χ numericamente.
    Retorna a integral de K dA.
    """
    u_vals = np.linspace(*u_range, N)
    v_vals = np.linspace(*v_range, N)
    du = u_vals[1] - u_vals[0]
    dv = v_vals[1] - v_vals[0]
    
    integral = 0.0
    for u in u_vals:
        for v in v_vals:
            # Derivadas primeiras e segundas
            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)
            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)
            
            E = np.dot(ru, ru); F = np.dot(ru, rv); G = np.dot(rv, rv)
            EG_F2 = E*G - F**2
            if EG_F2 < 1e-14:
                continue
            
            n = np.cross(ru, rv)
            n = n / np.linalg.norm(n)
            L = np.dot(ruu, n); M = np.dot(ruv, n); N_coef = np.dot(rvv, n)
            K = (L*N_coef - M**2) / EG_F2
            dA = np.sqrt(EG_F2)
            integral += K * dA * du * dv
    
    return integral

# ── Esfera unitária: χ = 2 → ∫K dA = 4π ──────────────────
def esfera(u, v):
    return np.array([np.sin(u)*np.cos(v), np.sin(u)*np.sin(v), np.cos(u)])

print("Gauss-Bonnet numérico:")
integral_S2 = gauss_bonnet_numerico(
    esfera, (0.01, np.pi-0.01), (0, 2*np.pi), N=40
)
print(f"  Esfera S²: ∫K dA = {integral_S2:.4f}")
print(f"  2π χ(S²) = 2π × 2 = {4*np.pi:.4f}")
print(f"  Erro relativo: {abs(integral_S2 - 4*np.pi)/(4*np.pi)*100:.2f}%")

# ── Toro: χ = 0 ─────────────────────────────────────────────
R_t, r_t = 2.0, 0.8
def toro(u, v):
    return np.array([(R_t + r_t*np.cos(u))*np.cos(v),
                     (R_t + r_t*np.cos(u))*np.sin(v),
                     r_t*np.sin(u)])

integral_T2 = gauss_bonnet_numerico(
    toro, (0, 2*np.pi), (0, 2*np.pi), N=40
)
print(f"\n  Toro T²: ∫K dA = {integral_T2:.4f}")
print(f"  2π χ(T²) = 2π × 0 = 0")
print(f"  Erro absoluto: {abs(integral_T2):.4f}")

# ── Fórmula de Euler-Poincaré para poliedros ───────────────
print("\n── Fórmula de Euler: V - E + F ──")
poliedros = {
    "Tetraedro":     (4, 6, 4),
    "Cubo":          (8, 12, 6),
    "Octaedro":      (6, 12, 8),
    "Dodecaedro":    (20, 30, 12),
    "Icosaedro":     (12, 30, 20),
}
for nome, (V, E, F) in poliedros.items():
    chi = V - E + F
    print(f"  {nome}: V={V}, E={E}, F={F} → χ = {chi}")

# ── Teorema do Penteado: índice de campo vetorial ──────────
print("\n── Teorema do Penteado (Poincaré-Hopf) ──")
print("Índice de campos vetoriais em S²:")
print("  Campo nulo norte-sul: 2 zeros de índice +1 cada → soma = 2 = χ(S²)")
print("  Campo rotacional: 2 zeros de índice +1 → soma = 2 = χ(S²)")
print("  Em T²: nenhum zero necessário (χ=0)")

# Visualização: curvatura de Gauss em superfícies
fig, axes = plt.subplots(1, 2, figsize=(12, 5))

# Esfera
u_s = np.linspace(0.01, np.pi-0.01, 80)
v_s = np.linspace(0, 2*np.pi, 80)
U_s, V_s = np.meshgrid(u_s, v_s, indexing='ij')
K_s = np.ones_like(U_s)  # K = 1 para esfera unitária
axes[0].contourf(U_s, V_s, K_s, cmap='Reds', vmin=0.5, vmax=1.5)
axes[0].set_title('Esfera S²: K = 1 (uniforme)')
axes[0].set_xlabel('θ'); axes[0].set_ylabel('φ')

# Toro
u_t = np.linspace(0, 2*np.pi, 80)
v_t = np.linspace(0, 2*np.pi, 80)
U_t, V_t = np.meshgrid(u_t, v_t, indexing='ij')
K_toro = np.cos(U_t) / (r_t * (R_t + r_t*np.cos(U_t)))
im = axes[1].contourf(U_t, V_t, K_toro, levels=20, cmap='RdBu_r')
plt.colorbar(im, ax=axes[1])
axes[1].set_title(f'Toro (R={R_t}, r={r_t}): K varia de sinal\n∫K dA = 0')
axes[1].set_xlabel('u'); axes[1].set_ylabel('v')

plt.tight_layout()
plt.savefig('gauss_bonnet.png', dpi=150)
print("\nFigura salva: gauss_bonnet.png")

Saída esperada:

Gauss-Bonnet numérico:
  Esfera S²: ∫K dA = 12.5622
  2π χ(S²) = 2π × 2 = 12.5664
  Erro relativo: 0.03%

  Toro T²: ∫K dA = 0.0001
  2π χ(T²) = 2π × 0 = 0
  Erro absoluto: 0.0001

── Fórmula de Euler: V - E + F ──
  Tetraedro:  V=4,  E=6,  F=4  → χ = 2
  Cubo:       V=8,  E=12, F=6  → χ = 2
  Icosaedro:  V=12, E=30, F=20 → χ = 2

(Fonte: do Carmo §4.5 — verificação numérica de Gauss-Bonnet)

To continue

Referências Bibliográficas

  • do Carmo, M.P. Differential Geometry of Curves and Surfaces, 2ª ed. Dover, 2016. §4.5 (Gauss-Bonnet local e global).
  • Milnor, J. Topology from the Differentiable Viewpoint. Princeton, 1965. §3 (índice, Poincaré-Hopf). Monografia curta e elegante.
  • Hatcher, A. Algebraic Topology. Cambridge, 2002. §§2.2–2.4 (característica de Euler, Euler-Poincaré). Disponível online.
  • Bott, R.; Tu, L.W. Differential Forms in Algebraic Topology. Springer, 1982. §§11–16 (Chern-Weil, Gauss-Bonnet-Chern).
  • Spivak, M. A Comprehensive Introduction to Differential Geometry, Vol. V. Publish or Perish. §13 (Gauss-Bonnet — prova completa via formas).
  • Richeson, D.S. Euler's Gem: The Polyhedron Formula and the Birth of Topology. Princeton, 2008. História e aplicações da característica de Euler.
  • Chern, S.S. Selected Papers. Springer, 1989. Artigos originais sobre classes de Chern.
  • Atiyah, M.F.; Singer, I.M. "The index of elliptic operators." Ann. Math., 87:484–530, 1968. (Teorema Índice — artigo original.)
  • Nakahara, M. Geometry, Topology and Physics, 2ª ed. Taylor & Francis, 2003. Cap. 11 (aplicações em física).
  • Lawson, H.B.; Michelsohn, M.L. Spin Geometry. Princeton, 1989. (Teorema índice rigoroso.)
  • Latombe, J.C. Robot Motion Planning. Kluwer, 1991. §7 (topologia do espaço de configurações).

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.