
主要的求解问题如图片所示,代码如下:
ClearAll["`*"](*清除变量*)
LB=-50;
RB=1000;
r0=10;
b=1;
\[Sigma]=0.5;
m=1;
\[CapitalOmega]h=1;
rh=1;
tl=30;
Ar[r_]:=(m \[CapitalOmega]h)/(1+ProductLog[E^(-1+r/rh)/rh])^2;
Br[r_]:=(-4 m^2 rh^2 \[CapitalOmega]h^2+ProductLog[E^(-1+r/rh)/rh] (2+4 m^2+(-1+4 m^2) ProductLog[E^(-1+r/rh)/rh]))/(4 rh^2 (1+ProductLog[E^(-1+r/rh)/rh])^4);
kge=D[\[Psi][r,t],{t,2}]==2 I Ar[r] D[\[Psi][r,t],t]+D[\[Psi][r,t],{r,2}]+Br[r] \[Psi][r,t]+NeumannValue[-Derivative[0,1][\[Psi]][r,t],r==LB]+NeumannValue[Derivative[0,1][\[Psi]][r,t],r==RB];
gaussian=Exp[-(r-r0+ t)^2/b^2] Exp[-I \[Sigma](r-r0+t)];
gaussian0[r_]=gaussian/. t->0;
ic={\[Psi][r,0]==gaussian0[r],Derivative[0,1][\[Psi]][r,0]==E^(-((r-r0)^2/b^2)-I (r-r0) \[Sigma]) (-((2 (r-r0))/b^2)-I \[Sigma])};
sol=NDSolve[{kge,ic},\[Psi],{r,LB,RB},{t,0,tl},Method->{"MethodOfLines","SpatialDiscretization"->{"FiniteElement"}}(*,AccuracyGoal\[Rule]5,PrecisionGoal\[Rule]5,MaxSteps\[Rule]InfinityMaxStepFraction\[Rule]0.001,WorkingPrecision\[Rule]15*)]
gaussian=Exp[-(r-r0+ t)^2/b^2] Exp[-I \[Sigma](r-r0+t)];
gaussian0[r_]=gaussian/. t->0;
D[gaussian,t]/. t->0
Plot[Evaluate[Abs[gaussian0[r]]],{r,LB,RB},PlotRange->{{LB,RB},{-1,1}}]
Plot[Evaluate[Abs[\[Psi][r,0]]/. sol],{r,LB,RB},PlotRange->All]
最直观的问题在于,我将计算结果中的t=0时刻的数据画图后,和我设置的初值条件差距特别大...想请教一下这是什么原因,以及该如何解决。谢谢!
