Wolfram 内核开发人员,毕业于美国加州伯克利大学,物理学博士。
Korteweg–de Vries (KdV)方程在物理学的许多领域都有应用,例如等离子体磁流波、离子声波、非谐振晶格振动、低温非线性晶格声子波包的热激发、液体气体混合物的压力表等。
Korteweg–de Vries (KdV) 方程是一個描述浅水波表面动态的数学模型:
ut+3u2x+uxxx=0
这个模型是一個可积的偏微分方程而且存在所谓孤立子的特殊解。以下的指令在Mathematica的环境中对KdV方程进行数值模拟以呈现两個孤立子交互影响的动态表现。
eq=D[u[x,t],t]+D[u[x,t],{x,3}]+3D[u[x,t]^2,x]==0;
pbc={u[-15,t]==u[15,t],(u^(1,0))[-15,t]==(u^(1,0))[15,t],(u^(2,0))[-15,t]==(u^(2,0))[15,t]};
ic=u[x,0]==(u0[x]=0.5(2 Sech[0.5Sqrt[2](x-8)]^2+3 Sech[0.5Sqrt[3](x+8)]^2));
Plot[u0[x], {x, -15, 15},
PlotLabel -> Style["初始条件", Black, Thick, 20], PlotStyle -> Black,
PlotTheme -> "Detailed",
FrameLabel -> {Style["x", 16, Black], Style["u", 16, Black]}]
{usol} = Quiet@
NDSolve[{eq, pbc, ic}, u, {x, -15, 15}, {t, 0, 30},
Method -> "StiffnessSwitching"]
Panel[Row[{Animate[
Plot[u[x, t] /. usol, {x, -15, 15}, PlotRange -> {0, 1.7},
PlotStyle -> Black, Frame -> True,
FrameLabel -> {Style["x", 16, Black],
Style["u", 16, Black]}], {t, 0, 20}, TrackedSymbols :> t,
AnimationRunning -> False], Spacer[30],
DensityPlot[u[x, t] /. usol, {x, -15, 15}, {t, 0, 20},
ColorFunction -> GrayLevel, ImageSize -> {300, 300},
FrameLabel -> {"x", "t"}, PlotLegends -> Automatic]},
Alignment -> {Center, Center}], Appearance -> "Frameless"]
Mathematica提供了一个简单且直观的环境对KdV方程求解,而且运算结果可以直接在Mathematica界面中动态或静态的呈现。这个特点在教学以及研究上有着相当的帮助。