时空破灭 时空破灭
关注数: 8 粉丝数: 46 发帖数: 318 关注贴吧数: 8
请教一下NDSolve求解偏微分方程时遇到的结果不准确该如何解决 主要的求解问题如图片所示,代码如下: 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时刻的数据画图后,和我设置的初值条件差距特别大...想请教一下这是什么原因,以及该如何解决。谢谢!
1 下一页