Math ClubMath Club
v1 · padrão canônico

Série de Autofunções e Expansão Espectral

Aplicação da teoria de Sturm-Liouville à solução de EDPs: separação de variáveis em geometrias gerais, convergência das expansões, coeficientes de Fourier-SL e exemplos em calor, onda e Laplace.

Used in: engenharia

Choose your door

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

Expansão Espectral em Engenharia

Análise Modal de Estruturas

A equação de vibração de uma membrana utt=c2Δuu_{tt} = c^2\Delta u tem modos normais {ϕmn,ωmn}\{\phi_{mn}, \omega_{mn}\}. A resposta a excitação periódica f(x,y,t)=F(x,y)cos(Ωt)f(x,y,t) = F(x,y)\cos(\Omega t) é:

u=mnFmnωmn2Ω2ϕmn(x,y)cos(Ωt)u = \sum_{mn} \frac{F_{mn}}{\omega_{mn}^2 - \Omega^2}\phi_{mn}(x,y)\cos(\Omega t)

Ressonância: quando Ωωmn\Omega \approx \omega_{mn}, a resposta explode → projeto deve evitar que a frequência de excitação coincida com frequência natural.

Simulação Numérica por Expansão Modal

import numpy as np
from scipy.linalg import eigh

def laplacian_2d_fd(Nx, Ny):
    """Laplaciano discreto 2D (Dirichlet) por diferenças finitas."""
    N = Nx * Ny
    hx, hy = 1.0/(Nx+1), 1.0/(Ny+1)
    
    # Laplaciano 1D em cada direção
    Lx = (np.diag(2*np.ones(Nx)) - np.diag(np.ones(Nx-1),1) - np.diag(np.ones(Nx-1),-1)) / hx**2
    Ly = (np.diag(2*np.ones(Ny)) - np.diag(np.ones(Ny-1),1) - np.diag(np.ones(Ny-1),-1)) / hy**2
    
    # Produto de Kronecker: L2D = Lx⊗Iy + Ix⊗Ly
    Ix = np.eye(Nx)
    Iy = np.eye(Ny)
    return np.kron(Lx, Iy) + np.kron(Ix, Ly)

# Resolver problema de autovalores em (0,1)×(0,1)
Nx, Ny = 20, 20
L = laplacian_2d_fd(Nx, Ny)
eigvals, eigvecs = eigh(L, subset_by_index=range(min(10, Nx*Ny)))

print("10 menores autovalores (numérico vs. exato (m²+n²)π²):")
exact = sorted([(m**2 + n**2)*np.pi**2 for m in range(1,6) for n in range(1,6)])[:10]
for i, (num, ex) in enumerate(zip(eigvals[:10], exact)):
    print(f"  λ_{i+1}: {num:.4f} vs {ex:.4f} (erro {abs(num-ex)/ex*100:.2f}%)")

# Resolver equação do calor u_t = Δu, u(x,y,0) = sin(πx)sin(πy)
hx = 1.0/(Nx+1)
x = np.linspace(hx, 1-hx, Nx)
y = np.linspace(1/(Ny+1), 1-1/(Ny+1), Ny)
X, Y = np.meshgrid(x, y)
f0 = np.sin(np.pi*X)*np.sin(np.pi*Y)  # CI

# Coeficientes: c_n = <f, φ_n>
cn = eigvecs.T @ f0.ravel()

# Solução em t=0.1
t = 0.1
u = (eigvecs * np.exp(-eigvals * t)[np.newaxis, :]) @ cn

# Comparar com solução exata: e^{-2π²t}sin(πx)sin(πy)
u_exact = np.exp(-2*np.pi**2*t)*np.sin(np.pi*X)*np.sin(np.pi*Y)
err = np.max(np.abs(u.reshape(Ny, Nx) - u_exact))
print(f"\nErro máximo em t={t}: {err:.4e}")

Referência: Haberman, Applied PDE, §5.7–5.9; Strauss, PDE, §10.3.

To continue

Referências Bibliográficas

  • Haberman, R. Applied Partial Differential Equations, 5ª ed. Pearson, 2013. Caps. 5–8 (Sturm-Liouville, expansão espectral, retângulo, disco). Referência principal para aplicações.
  • Strauss, W.A. Partial Differential Equations: An Introduction, 2ª ed. Wiley, 2008. Caps. 4, 10 (calor, onda, Laplace por separação de variáveis).
  • Evans, L.C. Partial Differential Equations, 2ª ed. AMS, 2010. §§6–7 (teoria de Hilbert e espectro do Laplaciano).
  • Stakgold, I.; Holst, M. Green's Functions and Boundary Value Problems, 3ª ed. Wiley, 2011. Cap. 7–8 (SL e expansão espectral para EDPs).
  • Reed, M.; Simon, B. Methods of Modern Mathematical Physics, Vol. IV: Analysis of Operators. Academic Press, 1978. §§XIII (lei de Weyl e funções de traço). Avançado.
  • Kac, M. "Can One Hear the Shape of a Drum?" American Mathematical Monthly, 73(4):1–23, 1966. (Artigo clássico sobre autovalores e geometria.)

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

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