Primitivní rozplývání pomocí dvou balíků pohybujících se různou rychlostí

puls1=Integrate[Cos[k z],{k,k0-dk,k0}]//FullSimplify
puls2=Integrate[Cos[k zz],{k,k0,k0+dk}]//FullSimplify
Plot[{-2.5+puls1,puls2,3.5+puls1+puls2}/.{k0->10,dk->1,zz->z},{z,-15,15}]

Manipulate[
Plot[{-2.5+((Sin[(dk-k0) z]+Sin[k0 z])/z),((-Sin[k0 zz]+Sin[(dk+k0) zz])/zz),3.5+((Sin[(dk-k0) z]+Sin[k0 z])/z)+((-Sin[k0 zz]+Sin[(dk+k0) zz])/zz)}/.{k0->10,dk->1,zz->z-dz},{z,-10,20},PlotRange->{-4,6},PlotPoints->1000,MaxRecursion->0],
{dz,0,15}]

Rozplývání balíku pro disperzní vztah tvaru ω = α (k^2)

Budeme potřebovat Fresnelovy integrály...

Integrate[Cos[(x^2)],x]

Integrate[Cos[a (x^2)+b x+c],x]//FullSimplify

A takhle už vypadá balík okolo dominantního vlnového čísla (Subscript[k, 0]) s šířkou spektra Δk

fce=FullSimplify@Integrate[Cos[a (k^2)t-k z],{k,k0-dk/2,k0+dk/2}]

Plot[fce/.{a->1,k0->5,dk->1,t->0.1},{z,-20,20},PlotRange->{-1,1},Axes->None]

anim1=Table[Plot[fce/.{a->1.,k0->5.,dk->1.,t->tt},{z,-7.5,32.5},PlotRange->{-1,1},Axes->None],{tt,0.1,2.5,0.03}];

Export["rozplyvani1.gif",anim1,"GIF"]
Export["rozplyvani1.avi",anim1,"AVI"]

Odtransformujeme pohyb vlnového balíku jako celku pomocí změny souřadnic z’ = z + 2α (Subscript[k, 0]) t,
kde 2α (Subscript[k, 0])= (Subscript[v, g])

fcetrans=(fce/.{z->zz+(2 a k0) t})/.zz->z

anim2=Table[Plot[fcetrans/.{a->1.,k0->5.,dk->1.,t->tt},{z,-20,20},PlotRange->{-1,1},Axes->None],{tt,0.1,2.5,0.03}];

Export["rozplyvani2.gif",anim2,"GIF"]
Export["rozplyvani2.avi",anim2,"AVI"]

anim2b=Table[Plot[fcetrans/.{a->1.,k0->5.,dk->1.,t->tt},{z,-20,20},PlotRange->{-1,1},Axes->None],{tt,0.1,10,0.1}];
Export["rozplyvani2b.gif",anim2b,"GIF"]
Export["rozplyvani2b.avi",anim2b,"AVI"]

A nakonec budeme snímky pořizovat tak, abychom “vizuálně zastavili” nosnou vlnu, pohybující se rychlostí (Subscript[v, ϕ]) = α (Subscript[k, 0]),
tzn. časové intervaly je nutno volit tak, aby nosna vlna se pohla právě o 1 vlnovou délku, tzn. Δz = (Subscript[λ, 0]) = ((2π)/(Subscript[k, 0])) = (Subscript[v, ϕ]) Δt, tzn. Δt = ((2π)/(α ((Subscript[k, 0])^2)))

anim3=Table[Plot[fcetrans/.{a->1.,k0->5.,dk->1.,t->tt},{z,-20,20},PlotRange->{-1,1},Axes->None],{tt,0.1,20,((2. π)/25)}];
Export["rozplyvani3.gif",anim3,"GIF"]
Export["rozplyvani3.avi",anim3,"AVI"]

anim3b=Table[Plot[fcetrans/.{a->1.,k0->5.,dk->1.,t->tt},{z,-40,40},PlotRange->{-1,1},Axes->None],{tt,0.1,80,((6. π)/25)}];
Export["rozplyvani3b.gif",anim3b,"GIF"]
Export["rozplyvani3b.avi",anim3b,"AVI"]