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 tem modos normais . A resposta a excitação periódica é:
Ressonância: quando , 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.)