Przykład 5: jednowymiarowe (jedna współrzędna przestrzenna x oraz czas t) równanie falowe (S.Wolfram)

ClearAll["Global`*"]

eq3={c^2 D[y[x,t],{x,2}]-D[y[x,t],{t,2}]==0}

s31=Simplify[DSolve[eq3,y[x,t],{x,t}],c>0]

W równaniu powyższym nie występowały ani warunki początkowe, ani warunki brzegowe, więc rozwiązanie zadane jest przez dwie zupełnie dowolne funkcje (!) jednej zmiennej posiadające drugie pochodne.

Teraz wprowadzimy warunki początkowe i brzegowe.

Warunki początkowe: równanie jest drugiego rzędu w czasie, więc musimy podać postać funkcji i jej pierwszej pochodnej w chwili t=0.
Fizycznie dla fali na strunie o skończonej długości, [-L,L], odpowiada to podaniu kształtu struny w chwili t=0 oraz rozkładu prędkości punktów struny w chwili t=0

wp3={y[x,0]==Exp[-(x^2)],Derivative[0,1][y][x,0]==0}

Warunki brzegowe: zakładamy, że fala występuje na strunie o skończonej długości, [-L,L], która jest sztywno umocowana na obu końcach

L=1;

wb3={y[-L,t]==E^(-1),y[L,t]==E^(-1)}

c=1;tmax=5;

s32=NDSolve[{eq3,wp3,wb3},y,{x,-L,L},{t,0,tmax}]

Plot3D[Evaluate[y[x,t]/.s32[[1]]],{t,0,tmax},{x,-L,L},AxesLabel->{"t","x","y(x,t)"}]

Plot[Evaluate[y[x,0]/.s32[[1]]],{x,-L,L},PlotRange->{-1/2,1.1}]

Plot[Evaluate[y[x,0.3]/.s32[[1]]],{x,-L,L},PlotRange->{-1/2,1.1}]

Plot[Evaluate[y[x,1]/.s32[[1]]],{x,-L,L},PlotRange->{-1/2,1.1}]

Plot[Evaluate[y[x,1.3]/.s32[[1]]],{x,-L,L},PlotRange->{-1/2,1.1}]

Plot[Evaluate[y[x,1.6]/.s32[[1]]],{x,-L,L},PlotRange->{-1/2,1.1}]

Plot[Evaluate[y[x,2]/.s32[[1]]],{x,-L,L},PlotRange->{-1/2,1.1}]

Plot[Evaluate[y[x,2.5]/.s32[[1]]],{x,-L,L},PlotRange->{-1/2,1.1}]

Animate[Plot[Evaluate[y[x,t]/.s32[[1]]],{x,-L,L},PlotRange->{-1/2,1.1},AxesLabel->{"x","y(x,t)"}],{t,0,4}]

(*  ClearAll["Global`*"]  *)