我正在求解非线性薛定谔方程(NLSE),
在哪里是一个复值函数,可以写为为了真实的。现在,对于特定的初始条件集,我发现会发生相位错,因此频率存在奇点,.
我的问题是,相位奇点会影响模型的准确性吗?此外,在物理上,为什么在 WKB 假设下导出的方程中会出现相位的快速变化?这是否意味着方程不是一致有效的?
下面将提供一个示例。
我正在使用分步伪光谱方法。我的代码是用 Fortran 编写的,但我发现我可以使用我在网上找到的 Matlab 代码重现结果,如下所示。
初始条件采用以下形式
为了一个常数,表示信号的啁啾,由于色散可能导致数据包聚焦。数据包的演变过程如图 1 所示。
现在,有问题的现象发生在周围当幅度变为 0,因此相位没有很好地定义。这导致了奇点. 图 2 显示了一个更好的图像。
我们看到,随着幅度在组的前部和后部趋向 0,即数据包分裂,相位开始变得奇异。注意,我已经淘汰了10 倍来说明我的观点。
注意,幅度启发式地似乎变化缓慢,但相位显然具有快速变化,其中数据包幅度变小。这是否意味着我的结果不再是物理的?最后,这是题外话,什么设置了标志在这些奇点?
注意,为了检查该方案的数值准确性,我确认能量是守恒的. 此外,NLSE 存在精确的解决方案,我用所使用的分辨率和步长确认了很长时间的解决方案。最后,线性波速的 CFL 条件 (这里)被服从。我玩过分辨率和时间步长,发现它们给出了相同的结果。
Matlab脚本:
% This Matlab script file solves the nonlinear Schrodinger equation
% with the first order split-step Fourier method due to Hardin and Tappert.
% Andre Weideman, 1995
%
N=512; %number of fourier modes
dt = 0.001; %time step
M=300; % number of time steps
t=0:dt:M*dt-dt;
L=4*pi; % size of the domain
I=sqrt(-1);
% J=100;
h = L/N; % Space step
n = [-N/2:1:N/2-1]'; % Indices
x = n*h; % Grid points
%----------------------------------------
% IC: Chirped sech packet
u=sqrt(2)*sech(x).*exp(-I*x.^2);
%----------------------------------------
U = u; % Compute initial condition; save it in U
e = -4*n.*n*pi*pi/L/L; % Squares of wavenumbers.
for m = 1:1:M % Start time evolution
u = exp(dt*I*(abs(u).*abs(u))).*u; % Solve nonlinear part of NLS
c = fftshift(fft(u)); % Take Fourier transform
c = exp(dt*I*e).*c; % Advance in Fourier space
u = ifft(fftshift(c)); % Return to physical space
U = [U u];
end