Résolvez une équation d'onde avec des conditions aux limites périodiques
Résolvez une équation d'onde 1D avec des conditions aux limites périodiques.
Spécifiez une équation d'onde avec l'absorption des conditions aux limites. Veuillez remarquer que la valeur de Neumann est la première dérivée temporelle de .
In[1]:=
![Click for copyable input](assets.fr/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];
Spécifiez les conditions initiales pour l'équation d'onde.
In[2]:=
![Click for copyable input](assets.fr/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]};
Spécifiez une condition aux limites périodique telle que la solution à la limite droite se propage au côté gauche.
In[3]:=
![Click for copyable input](assets.fr/solve-a-wave-equation-with-periodic-boundary-condi/In_72.png)
bc = PeriodicBoundaryCondition[u[t, x], x == 0,
TranslationTransform[{1}]];
Résolvez l'équation en utilisant la méthode des éléments finis.
In[4]:=
![Click for copyable input](assets.fr/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"}];
Visualisez la fonction d'onde périodique.
In[5]:=
![Click for copyable input](assets.fr/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.fr/solve-a-wave-equation-with-periodic-boundary-condi/swf_3.png)