Considere uma corda vibrante de comprimento
que satisfaz a equação da onda,
Suponha que as extremidades da corda estão fixas e que a corda é colocada em movimento sem velocidade inicial da posição inicia
Encontre o deslocamento
da corda (não vale nada se não fizer os cálculos passo a passo, e o código em matlab/python para fazer os gráficos).
(a) Faça o gráfico de
vs
para os seguintes valores fixos de
(b) Faça o gráfico de
vs
para os seguintes valores fixos de
;
© Faça o gráfico de
para os seguintes intervalos de
e
.
(a) Faça o gráfico de
© Faça o gráfico de
Passo 1
Nesse exercício, temos uma corda vibrante de comprimento L=30 que satisfaz a equação da onda 100 u_{xx}=u_{tt}, com extremidades em x=0 e x=30 fixas (u(0,t)=u(30,t)=0). A condição inicial é u(x,0)=f(x), onde f(x)=x/10 para 0≤x≤10 e f(x)=(30−x)/20 para 10<x≤30, e velocidade inicial u_t(x,0)=0. Vamos resolver por separação de variáveis e séries de Fourier.
Passo 2
Começamos assumindo a solução por separação de variáveis na forma u(x,t)=X(x)T(t). Substituindo em u_{tt}=c^2u_{xx} com c^2=100, obtemos T’’/c^2T=X’’/X=−λ. As condições de contorno X(0)=X(30)=0 levam aos autovalores λ_n=(nπ/30)^2, n=1,2,3,…. A frequência angular é ω_n=c√{λ_n}=10·(nπ/30)=nπ/3.
Passo 3
A forma geral da série, atendendo às condições de contorno e velocidade inicial zero, é
Para encontrar A_n, usamos a condição inicial u(x,0)=f(x)=\sum A_n\sin(nπx/30).
Passo 4
O coeficiente A_n vem da expansão em série de Fourier-seno:
onde k=nπ/30. Calculando e simplificando as integrais por partes, chega-se a
Passo 5
Portanto a solução completa é
Passo 6
Para traçar os gráficos, podemos truncar a soma em n=1…N (por ex. N=100) e usar o seguinte script em Python (alternativa Matlab semelhante):
import numpy as np
import matplotlib.pyplot as plt
# parâmetros
i_max = 100
L = 30
c = 10
# funções
def u(x,t):
s = 0
for n in range(1, i_max+1):
A = 3*np.sin(n*np.pi/3)/(n**2*np.pi**2)
s += A * np.sin(n*np.pi*x/L) * np.cos(n*np.pi*t/(L/c))
return s
# (a) u vs x para t em [0,4,5,7,10,15]
t_list = [0,4,5,7,10,15]
x = np.linspace(0, L, 400)
plt.figure()
for t in t_list:
plt.plot(x, u(x,t), label=f't={t}')
plt.legend(); plt.xlabel('x'); plt.ylabel('u(x,t)')
# (b) u vs t para x em [10,15,20]
t = np.linspace(0, 50, 500)
plt.figure()
for x0 in [10,15,20]:
plt.plot(t, u(x0,t), label=f'x={x0}')
plt.legend(); plt.xlabel('t'); plt.ylabel('u(x,t)')
# (c) superfície u(x,t)
xv, tv = np.meshgrid(np.linspace(0,L,200), np.linspace(0,100,200))
uv = u(xv, tv)
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(); ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(xv, tv, uv, cmap='viridis')
ax.set_xlabel('x'); ax.set_ylabel('t'); ax.set_zlabel('u')
plt.show()
Com esse código você terá (a) gráficos de u versus x nos instantes pedidos, (b) u versus t nos pontos x fixos e © a superfície u(x,t) em 0<x<30, 0<t<100.
Resposta
u(x,t)=\displaystyle\sum_{n=1}{\infty}\frac{3,\sin\bigl(\tfrac{n\pi}{3}\bigr)}{n{2}\pi^{2}};\sin\Bigl(\tfrac{n\pi x}{30}\Bigr);\cos\Bigl(\tfrac{n\pi t}{3}\Bigr)