Solução de uma equação de onda com condições de contorno periódicas
Resolva uma equação de onda em 1D com condições de contorno periódicas.
Especifique uma equação de onda com condições de contorno absorventes. Note que o valor de Neumann é pela primeira vez derivado de .
In[1]:=
![Click for copyable input](assets.pt-br/solve-a-wave-equation-with-periodic-boundary-condi/In_70.png)
eqn = D[u[t, x], {t, 2}] ==
D[u[t, x], {x, 2}] +
NeumannValue[-Derivative[1, 0][u][t, x], x == 0 || x == 1];
Especifique as condições iniciais para a equação de onda.
In[2]:=
![Click for copyable input](assets.pt-br/solve-a-wave-equation-with-periodic-boundary-condi/In_71.png)
f[x_] = D[0.125 Erf[(x - 0.5)/0.125], x];
vInit[x_] = -D[f[x], x];
ic = {u[0, x] == f[x], Derivative[1, 0][u][0, x] == vInit[x]};
Especifique uma condição de contorno tal que a solução no contorno direito é propagada para o lado esquerdo.
In[3]:=
![Click for copyable input](assets.pt-br/solve-a-wave-equation-with-periodic-boundary-condi/In_72.png)
bc = PeriodicBoundaryCondition[u[t, x], x == 0,
TranslationTransform[{1}]];
Resolva a equação utilizando o método de elemento finito.
In[4]:=
![Click for copyable input](assets.pt-br/solve-a-wave-equation-with-periodic-boundary-condi/In_73.png)
ufun = NDSolveValue[{eqn, ic, bc}, u, {t, 0, 2}, {x, 0, 1},
Method -> {"MethodOfLines"}];
Visualize a função de onda periódica.
In[5]:=
![Click for copyable input](assets.pt-br/solve-a-wave-equation-with-periodic-boundary-condi/In_74.png)
plots = Table[
Plot[ufun[t, x], {x, 0, 1}, PlotRange -> {-0.1, 1.3}], {t, 0,
2, .1}];
ListAnimate[plots]
![](assets.pt-br/solve-a-wave-equation-with-periodic-boundary-condi/swf_3.png)