非线性薛定谔方程的数值代码

合集下载

非线性薛定谔方程数值解的MATLAB仿真

非线性薛定谔方程数值解的MATLAB仿真

admin[非线性薛定谔方程数值解的MATLAB仿真]——利用分步快速傅里叶变换对光纤中光信号的传输方程进行数值求解1、非线性薛定谔方程非线性薛定谔方程(nonlinear Schrodinger equation ,NLSE)是奥地利物理学家薛定谔于1926 年提出的,应用在量子力学系统中。

由于量子力学主要研究粒子的动力学运动状态,所以不能运用牛顿力学公式来表示。

通常在量子力学中,研究系统的状态一般通过波函数(x ,t)来表示。

而对波函数的研究主要是求解非线性薛定谔方程。

本文主要研究光脉冲在光纤中传输状态下的演变。

一般情况下,光脉冲信号在光纤中传输时,同时受到光纤的色散和非线性效应的影响。

通过Maxwell 方程,考虑到光纤的色散和非线性效应,可以推导出光信号在光纤中的传输方程,即非线性薛定谔方程。

NLSE 是非线性偏微分方程,一般很难直接求出解析解,于是通过数值方法进行求解。

具体分为两大类:(1)分布有限差分法(split-step finite differencemethod ,SSFD);(2)分步傅里叶变换法(split-step Fourier transform method ,SSFT)。

一般情况,在达到相同精度,由于分步傅里叶变换法采用运算速度快的快速傅里叶变换,所以相比较有限差分法运算速度快一到两个数量级。

于是本文介绍分步傅里叶变换法来对光纤中光信号的传输方程,即非线性薛定谔方程进行数值求解。

并通过MATLAB 软件对结果数值仿真。

非线性薛定谔方程的基本形式为:22||t xx iu u u u =+其中u 是未知的复值函数.目前,采用分步傅立叶算法(Split step Fourier Method)求解非线性薛定谔方程的数值解应用比较多。

分步傅立叶方法最早是在1937年开始应用的,这种方法己经被证明是相同精度下数值求解非线性薛定愕方程最快的方法,部分原因是它采用了快速傅立叶变换算法(Fast Fourier Transform Algorithm)。

非线性薛定谔方程 runge-kutta

非线性薛定谔方程 runge-kutta

非线性薛定谔方程 runge-kutta
非线性薛定谔方程 runge-kutta
非线性薛定谔方程,即非线性常微分方程,是用于描述物理系统的状
态变化的重要方程,可用于描述各种物理系统的动力学和稳定性问题。

Runge-Kutta方法是一种常用的数值解决非线性薛定谔方程的方法。

Runge-Kutta方法可以求解一阶非线性薛定谔方程,也可以求解多阶非线性薛定谔方程,不需要求解方程的精确解,而是对方程的近似解。

它的基本思想是:将时间区间[t0,t1]划分为若干小的时间步长,将每
次步长的解看作是一个函数,再用多项式拟合这个函数,从而得到方
程的近似解。

Runge-Kutta方法的特点是求解精度高,计算量少,但它也有一定的局限性,即要求解的方程必须是可以求导的,对于非线性或不可导的方程,Runge-Kutta方法就不能使用了。

另外,Runge-Kutta方法只能求
解单变量的非线性薛定谔方程,而多变量的非线性薛定谔方程则无能
为力。

总之,Runge-Kutta方法是一种有效的解决非线性薛定谔方程的方法,它的优点是求解精度高,计算量少,但也有一定的限制,不能解决某
些复杂的问题。

288 268 非线性薛定谔方程

288 268 非线性薛定谔方程

v c
k nω
n
c
将k在ω0附近展开:
k
k0
k ω
|w0
(w w0 )
1 2
2k ω2
|w0
(w w0 )2
...
对 E作付里叶变换: E(x,t) 1
e(k, ω)ei(ω•tk•x)d kd ω

e(x,t) 1
E(x, t)ei(ω•tk•x)dxd t

NLSE的导出
上式称为Lax方程。算符L、M 称为Lax对。找到Lax对就可以
用反散射法求解非线性方程。
反散射法结果
对于一般的NLSE,i h h 2 2 b | |2 V (x,t)
2m
分四种情况讨论:
NLSE的反散射解法
V (x,t) 0,b const 0 V (x,t) const,b 0
E i ω e, E ike
t
x
ω ~ i , k ~ i
t
xkk0Fra bibliotekk ω
|w0
(w w0 )
1 2
2k ω2
|w0
(w w0 )2
...
k k ' ω 1 k ''( ω)2 2
i ik ' 1 k '' 2 x t 2 t2
E E 1 2E
i ik ' k ''
冲形成孤立波。
NLSE的解析解法
反散射解法
微扰法
高阶NLSE
变分法
NLSE的反散射解法
Schrödinger方程的反散射问题 已知散射数据km, Cm(km), R(k), T(k), ψ(x→∞),则位势 u(x)为:

标准非线性薛定谔方程的解析解与数值解

标准非线性薛定谔方程的解析解与数值解

+
βu
u2
+
v2
=0
空间离散偏微分方程组(36)得:
(33) (34)
(1) (35) (36)
6
∂ui ∂t
=
−α
vi+1
− 2vi + vi−1 ∆x2
+ β vi (ui2
+ vi2 )
∂vi ∂t

ui+1
− 2ui ∆x2
+
ui−1

β ui
(ui2
+
vi2 )
(37)
其中 ui (t) = u(xi ,t), vi (t) = v(xi ,t), xi = i∆x,i = 1, 2,..., m −1.
υ ''(ξ ) = 3a1 prF 2 − 3a1 pqF + b1rpFG
(14) (15) (16)
将(14),(15),(16)式代入(13)式,并注意到(2),(3)可得到
−Za13F 3 + (3a1 prX − 3Za0a12 − 6Za1b12r )F 2 + (−3a1 pqX p
标准非线性薛定谔方程的解析解与数值解
母应坤
(2006061102)
(黔南民族师范学院 物理与电子科学系,贵州 都匀 558000)
摘 要 :本文分别介绍了非线性薛定谔方程的两种求解方法即解析法与数值法,并对其
解析解和数值解进行了简单的分析和讨论。
关键词 :非线性薛定谔方程 ;精细积分;Riccati 方程求解法 ;Weierstrass 椭圆函数解
− 3Za02b1
+
Zb13q p

(完整版)基于MATLAB的快速傅里叶的非线性薛定谔方程

(完整版)基于MATLAB的快速傅里叶的非线性薛定谔方程

GP方程很好的描述BEC的行为
iht
r,t




h2 2m
2
Vext
r

g

r,t

2


r,t

非线性项
G-P方程是非线性薛定谔(Nonlinear Schrödinger)方程的一种, 这类方程大多都只能通过数值办法求解。
2020/2/14
理论物理
7/50
Outline
➢ Matlab程序的实现 ➢ Matlab实例
2020/2/14
理论物理
8/50
III. 算符劈裂算法
Gross-Pitaevskii (G-P)方程:
iht
r,
t




h2 2m
2
Vext
r


g r,t 2
非线性项


r,t

it r,t H Tˆ Vˆextnon r,t
2020/2/14
理论物理
5/50
Outline
➢ 玻色-爱因斯坦凝聚 (BECs) ➢ Gross-Pitaevskii (G-P) 方程 ➢ 算符劈裂算法 (Operator-Splitting methods)
虚时演化 实时演化
➢ 傅里叶变换(离散DFT和快速FFT)
离散傅里叶变换(DFT)算法 快速傅里叶变换(FFT)算法
➢ Matlab程序的实现 ➢ Matlab实例
2020/2/14
理论物理
6/50
II. Gross-Pitaevskii (G-P) 方程
薛定谔(Schrödinger)方程:

非线性薛定谔方程形式

非线性薛定谔方程形式

非线性薛定谔方程形式
非线性薛定谔方程形式
非线性薛定谔方程形式,简称NLSE,是一类众多物理模型和理论框架
的基础之一,它提供了连续的描述与研究特定物理系统的方法。

它的
发展源于19世纪末罗素以及拉普拉斯的探究,主要用来研究电子在复
杂结构中的行为。

NLSE的几何形式如下:i*(∂/∂z)ψ(z,t)+ (1/2)*(∂^2/∂t^2)ψ(z,t) + f(|ψ(z,t)|^2)ψ(z,t)= 0。

其中,ψ(z,t)
是时间和空间变量之和,z是空间变量,t是时间变量,f(|ψ(z,t)|^2)表示非线性因素,它使得研究者无法解决NLSE,即找到其固定的解决方案。

因此,研究者只能求出NLSE的近似解决方案。

NLSE可以应用于许多研究领域,如电磁场理论、光子学、激光技术、
量子力学、量子电动力学以及凝聚态物理学等。

许多物理学家认为,NLSE提供了一种统一的研究框架,可以帮助我们理解许多复杂的物理
系统。

NLSE也可以用于解决量子物理学中许多热力学问题,如量子热力学、
量子统计力学、量子热力学、量子流体力学等。

它可以用来解释由原
子和分子的行为引起的复杂的热力学行为,也可以用来研究量子系统
中的质量和能量的流动。

NLSE的最新发展,如超几何光学,还提供了一种新的模型来描述复杂
的光学系统,能够准确预测复杂的介质中的光学响应,并提供新的计
算技术。

总之,NLSE是一种综合框架,它提供了一种可以描述物理系统和量子
热力学行为的方法,并可以用来解决许多复杂的物理问题。

它是许多
研究领域的基础,有助于我们更加深入地理解物理系统和量子热力学。

非线性薛定谔方程的数值计算研究

非线性薛定谔方程的数值计算研究

[ ]姚 启 钧. 学 教 程 [ . 3 光 M] 3版 . 京 : 等 教 育 出 版 社 ,0 2 北 高 20. [ ]李 继 陶 , 4 陈祯 培 . 计 光 学 基 础 [ . 都 : 川 大 学 出 版 社 ,9 8 统 M] 成 四 I 18 .
[ ]J W. oma ,Sai i l pisM] Ne y r A WiyItrc neP biain 1 8 . 5 . Go d n tt t a O t [ . w ok: l nesi c u l t ,9 5 sc c e e c o
20 0 9年 第 2期
( 第 6 总 7期 )
牡 丹 江师 范 学院 学 报 ( 自然 科 学版 )
J u n lo u a ia g Noma ie st o r a f M d nin r lUnv riy
N O 2, 0 . 2 09 To a t IN0 6 7
光 纤传输 模 型是用 非线 性薛 定谔 方程 来描 述 的, 因此 光纤 传输 系统 的模 拟 离 不 开求 解 非 线 性 薛 定谔 方程口 ] 非线 性薛 定谔 方程 是一个 非 线性 . 偏 微 分 方 程 , 个 别 特 殊 情 况 应 用 逆 散 射 方 法 可 除 以求 得解 析解 外 , 在一般 情况 下无 法求 出解 析解 , 只能求 出其数 值 解. 了 深 入 了解 光 纤 的 非 线性 为 效应 , 常采用 数 值 方 法 或 半解 析 方 法 进 行 分析 通 处理 . 目前 常用 的数 值模 拟 方法 有 分 裂 步 长 快速 傅 立 叶 变 换 (a t o r rt n fr 算 法 、 fs— ui —r som) F e a 龙
a + O 十 i A A .  ̄

非线性微分方程的量子力学方程

非线性微分方程的量子力学方程

非线性微分方程的量子力学方程在科学的发展过程中,有许多的学科经历了从经典到量子的转变。

其中,量子力学的产生离不开对于微分方程的研究。

在量子力学中,非线性微分方程的研究尤为重要,因为很多物理现象都可以用非线性微分方程来描述,如薛定谔方程、KdV方程、NLS 方程等。

本文主要讨论非线性微分方程在量子力学中的应用。

一、薛定谔方程
薛定谔方程是一种描述量子系统的波函数的方程,它的一般形式是:
iℏ∂ψ/∂t= Hψ
其中H为哈密顿量,ψ为波函数。

当H为非线性时,薛定谔方程就成为了非线性薛定谔方程。

非线性薛定谔方程的解析解很难求得,因此人们使用各种不同的数值计算方法来解决它们。

二、KdV方程
KdV方程是一种描述非线性波的方程,它的一般形式是:
∂u/∂t+6u∂u/∂x+∂³u/∂x³=0
其中u为波的振幅。

KdV方程可以通过Hirota方法与量子反常
理论相联系,并且可以使其被解释为一种含运动方程的量子力学。

三、NLS方程
NLS方程是一种描述非线性波的方程,它的一般形式是:
i∂u/∂t+∂²u/∂x²+2|u|²u=0
其中u为波函数。

NLS方程在量子光学中得到了广泛应用,特
别是在二次谐波生成和光压效应等方面。

总之,非线性微分方程在量子力学中得到了广泛应用,并成为
了研究一些物理现象的重要工具。

未来随着技术的不断进步,相
信非线性微分方程在量子力学中的应用会变得更加丰富和多样化。

基于matlab的非线性薛定谔方程的数值算法研究

基于matlab的非线性薛定谔方程的数值算法研究
首先, 可以将方程 (4­1) 归一化振幅:U A( z , T ) /
P0 ,P0 是入射脉冲的峰值功率,
此时方程(4­1)可改写为:
­ 2 ­

U i 2U U P0 i | U | 2 U 2 z 2 4 T
(4­2)
3. 分步傅立叶数值算法
目前, 采用分步傅立叶算法(Split step Fourier Method)求解非线性薛定谔方程的数值解应 用比较多。 分步傅立叶方法最早是在1937年开始应用的, 这种方法己经被证明是相同精度下 数值求解非线性薛定愕方程最快的方法,部分原因是它采用了快速傅立叶变换算法 (Fast Fourier Transform Algorithm)。基于MATLAB科学计算软件以及MATLAB强大的符号计算功 能,完全可以实现分步傅立叶数值算法来对脉冲形状和频谱进行仿真。
其中 F 和 F 分别表示傅立叶变换和反傅立叶变换运算。 Step2 非线性算符方程的求解
~
i z ~ U ( z , T ) F{exp[( 2 ) ] F [U (0, T )]} 2 2
Hale Waihona Puke (4­7)ˆ 的方程如下: 非线性部分 N
U P0 i | U | 2 U z
为了使用分步傅立叶法求解方程(4­2),将方程(4­2)写成以下形式:
U ˆN ˆ )U (D z
进一步,可以得出如下方程(4­3):
i 2U 2 T 2 ˆ D 2 ˆ P i | U | 2 N 0
(4­3)
然后,按照步骤 step1 和步骤 step2,依次计算方程(4­3)的线性算符和非线性算符。最后 在步骤 step3 中,运行步骤 step1 和步骤 step2 的 MATLAB 程序,得出线性算符和非线性算 符的精确数值解及其仿真曲线。 Step1 线性算符方程的求解

非线性薛定谔方程的数值代码

非线性薛定谔方程的数值代码

⾮线性薛定谔⽅程的数值代码>> %This code solves the NLS equation with the split-step method >> % idu/dz-sgn(beta2)/2d^2u/d(tau)^2+N^2*|u|^2*u=0>> %Specify input parameters>> clear all;%distance=input;%beta2=input;N=1;%soliton ordermshape=input;chirp0=0;%input pulse chirp(default value)%---set simulation parametersnt=1024;Tmax=32;%FFT points and window sizestep_num=round(20*distance*N^2);% No.of z steps todeltaz=distance/step_num;%step size in zdtau=(2*Tmax)/nt; %step size in tau%---tau and omega arraystau=(-nt/2:nt/2-1)*dtau; %temporal gridomega=(pi./Tmax).*[(0:nt/2-1) (-nt/2:-1)] ;%frequency gird%---Input Field profileif mshape==0uu=sech(tau).*exp(-0.5i*chirp0*tau.^2); %solitonelse %super-Gaussianuu=exp(-0.5*(1+1i*chirp0).*tau.^(2*mshape));end%---Plot input pulse shape and spectrumtemp=fftshift(ifft(uu)).*(nt*dtau)/sqrt(2*pi);%spectrumfigure;subplot(2,1,1);plot(tau,abs(uu).^2,'--k');hold on;axis([-20 20 0 inf]);xlabel('Normalized Time')ylabel('Normalized Power')title('Input and Output Pulse Shape and Spectrum');subplot(2,1,2);plot(fftshift(omega)./(2.*pi),(abs(temp)).^2,'k');hold on;axis([-5 5 0 inf]);xlabel('Normalized Frequency')ylabel('Normalized Power')%store dispersive phase shifts to speedup codedispersion=exp(i*0.5*beta2*omega.^2*deltaz); %phase factorhhz=1i*N^2*deltaz;%nonlinear phase factor%**********************[Beginning of MAIN Loop]************************* % scheme:1/2N->D->1/2N;first half step nonlineartemp=uu.*exp(abs(uu).^2*hhz/2); %note hhz/2for n=1:step_numf_temp=ifft(temp).*dispersion;uu=fft(f_temp);temp=uu.*exp(abs(uu).^2*hhz);enduu=temp.*exp(-abs(uu).^2*hhz/2); %Final fieldtemp;fftshift(ifft(uu)).*(nt*dtau)/sqrt(2*pi);% Final spectrum%**********************[End of MAIN Loop]*************************%---Plot output pulse shape and spectrumsubplot(2,1,1)plot(tau,abs(uu).^2,'--k')subplot(2,1,2)plot(fftshift(omega)./(2.*pi),abs(temp).^2,'k')。

数值分析中求解非线性方程的MATLAB求解程序(6种)

数值分析中求解非线性方程的MATLAB求解程序(6种)

数值分析中求解非线性方程的MATLAB求解程序(6种)1.求解不动点function [k,p,err,P]=fixpt(g,p0,tol,max1)%求解方程x=g(x) 的近似值,初始值为p0%迭代式为Pn+1=g(Pn)%迭代条件为:在迭代范围内满足|k|<1(根及附近且包含初值)k为斜率P(1)=p0;for k=2:max1P(k)=feval(g,P(k-1));err=abs(P(k)-P(k-1));relerr=err/(abs(P(k))+eps);p=P(k);if (err<tol)|(relerr<tol)break;endendif k==max1disp('超过了最长的迭代次数')endP=P';2.二分法function [c,err,yc]=bisect(f,a,b,delta)%二分法求解非线性方程ya=feval(f,a);yb=feval(f,b);if ya*yb>0break;endmax1=1+round((log(b-a)-log(delta))/log(2));for k=1:max1c=(a+b)/2;yc=feval(f,c);if yc==0a=c;b=c;elseif yb*yc>0b=c;yb=yc;elsea=c;ya=yc;endif b-a<deltabreak;endendc=(a+b)/2;err=abs(b-a);yc=feval(f,c);3.试值法function [c,err,yc]=regula(f,a,b,delta,epsilon,max1) %试值法求解非线性方程%f(a)和飞(b)异号ya=feval(f,a);yb=feval(f,b);if ya*yb>0disp('Note:f(a)*f(b)>0');endfor k=1:max1dx=yb*(b-a)/(yb-ya);c=b-dx;ac=c-a;yc=feval(f,c);if yc==0break;elseif yb*yc>0b=c;yb=yc;elsea=c;ya=yc;enddx=min(abs(dx),ac);if abs(dx)<delta|abs(yc)<epsilonbreak;endendc;err=abs(b-a)/2;yc=feval(f,c);4.求解非线性方程根的近似位置function R=approot(X,epsilon)%求解根近似位置%为了粗估算方程f(x)=0在区间[a,b]的根的位置,%使用等间隔采样点(xk,f(xk))和如下的评定准则:%f(xk-1)与f(xk)符号相反,%或者|f(xk)|足够小且曲线y=f(x)的斜率在%(xk,f(xk))附近改变符号。

288 268 非线性薛定谔方程

288 268 非线性薛定谔方程

NLSE的数值解法
光孤子在光纤中传输满足NLSE:i
q z
1 2
2q t 2
|
q
|2
q
iq
假设光纤无损耗,取 0
初值条件为:q(t, z 0) Asec ht
采用差分格式:
i
q
i1
j
q i1 j
1
(
q
j
i1 1
2q j
i1
q i1 j1
qi j1
2q j
i
qi j1
)
1
(|
q
i
|2
q
i
|
q
En (z) A0 (i)n exp(i z)Jn (2Cz)
离散非线性薛定谔方程
其中Jn是n阶贝塞尔函数。当假设入射光束是低功率时 将 会得到离散衍射,也就是光束的能量分散到波导阵列的量的
边瓣;当入射光束为高功率时,得到的则是光学局域态,此 时沿波导阵列的光场分布为:
En
(z)
A0
exp[i(2C
B( )
n
2
C j (k j )ek j
j 1
1
2
R(k)eik dk
对于一般的非线性方程 u k(u) , t
首先选择一个微分算子L=L
(u,
ux,
…),使:L
,
d
dt
0
NLSE的反散射解法
再选另一个线性算子M=M(u,ux,…) , 使: t M Lt L t t t t Lt LM M ML Lt (ML LM ) [M , L]
K. G. Makris, J. Hudock, D. N.Christodoulides, and G. I. Stegeman,“ Lattice surface solitons"

非线性薛定谔方程的物理意义

非线性薛定谔方程的物理意义

非线性薛定谔方程的物理意义
非线性薛定谔方程通常的(线性)薛定谔方程不仅具有明确的量子力学意义,而且还能描述各种弱色散缓慢调制波动,其计及量子或经典弱非线性效应后的各种修正形式即为NLS方程.典型的NLS方程仅含立方非线性项iΨt+Ψxx±2|Ψ|2Ψ=0 它也具有上述线性情况下的双重意义,例如在量子力学中Ψ可代表弱互作用非理想玻色气体的凝聚波函数,而在经典波动意义下Ψ则可代表深水表面波、Langmuir等离子体波及Kerr介质中超短脉冲光波之调制波幅.因其色散与非线性效应得以微妙。

它的意义是:在量子力学中Ψ可代表弱互作用非理想玻色气体的凝聚波函数,而在经典波动意义下Ψ则可代表深水表面波、Langmuir 等离子体波及Kerr介质中超短脉冲光波之调制波幅.因其色散与非线性效应得以微妙。

量子力学非线性薛定谔方程的迹公式

量子力学非线性薛定谔方程的迹公式
对于区间[ , 单值矩阵 被定义为 一 ] () L() A= A …L. ( )

ia ) n ( :∑ c ,
式 中
( 1 )

用量 子力 学逆 散射方 法 的标 准步骤能 够证 明运动 积 分生 成 函数 的 r:d+D具有 性质
收稿 日期 :0 1 0 2 2 0 —1 —1 作 者简介 : 国延(9 3 , 副教授 . 究量子 力学理论 海 15 一) 男, 研
y = 等( 1 。 ( 1 ? 一 一 ) ∑ 一)
y = 2( ^ l i

1 。 ( 1 ( 一y , ( ) ) ∑ 一)y 1 3 1 ) (1( y i ∑ 一)y 一 + 垲) .
y =
2( i

i r^ pi ) ∑ ~ n () ( ( 札) .
维普资讯
文 章 编 号 :23 38 20 ) 1 0 7 3 05 —22 (02 0 —04 —0
量 子 力学 非 线性 薛 定谔 方 程 的 迹 公 式
海 国 延
( 宁夏 太学 物理与电气信 息工程 系 , 宁夏 银 川 70 2 ) 50 1
( l 一 ∑ y t) 一 i : “

( ) 一 : 一 )1 半 ( i ,4 1x y ()
方程(4的第二个等式是在 — 时得到 的 . 1) 叼 类似地
2 量子 规范 变换
下 面计算 系数 C . 用一 个 规 范 变换 采 来 变
() e ) +( ) () 三 x ( 。一) 1 p 报 ( 自然科 学版 ) : ( , ( ]=0 r )r ) . () 5
第 2 卷 3
在 文献 [] , 符 r ) 6中 算 ( 的谱 是 在 极 限 △一 0 , Ⅳ +*,i 一 / N=L=常数 的情 况下计 算 出 来 的 . 动 运 的局域 积 分 可 由 r ^ ( ( ) 当 一 + ) 的逆 幂展 开 系 数得到, 即

非线性薛定谔方程

非线性薛定谔方程

非线性薛定谔方程
非线性薛定谔方程(Nonlinear Schrödinger Equation,
简称NLSE)是描述一维量子力学中非线性光学现象的方程。

它可以用来描述具有波动性的物质或波动现象,比如光子
在非线性介质中传播、超导电子对的行为等。

一般情况下,非线性薛定谔方程可以写成如下形式:
i ∂ψ/∂t + (∇²/2m + V)ψ + g |ψ|²ψ = 0
其中,i是虚数单位,∂ψ/∂t表示波函数ψ对时间的导数,∇²是拉普拉斯算子,m是粒子的质量,V是势能函数,g
是非线性项。

该方程的第一项描述了波函数随时间的演化,第二项描述
了波函数的动能和势能,第三项描述了非线性效应。

非线性薛定谔方程的解通常是表示波的幅度和相位的波函数ψ。

在求解非线性薛定谔方程时,常会采用数值方法,如有限差分法、有限元法等。

非线性薛定谔方程数值解的MATLAB仿真

非线性薛定谔方程数值解的MATLAB仿真

1、非线性薛定谔方程非线性薛定谔方程(nonlinear Schrodinger equation ,NLSE)是奥地利物理学家薛定谔于1926 年提出的,应用在量子力学系统中。

由于量子力学主要研究粒子的动力学运动状态,所以不能运用牛顿力学公式来表示。

通常在量子力学中,研究系统的状态一般通过波函数(x ,t)来表示。

而对波函数的研究主要是求解非线性薛定谔方程。

本文主要研究光脉冲在光纤中传输状态下的演变。

一般情况下,光脉冲信号在光纤中传输时,同时受到光纤的色散和非线性效应的影响。

通过Maxwell 方程,考虑到光纤的色散和非线性效应,可以推导出光信号在光纤中的传输方程,即非线性薛定谔方程。

NLSE 是非线性偏微分方程,一般很难直接求出解析解,于是通过数值方法进行求解。

具体分为两大类:(1)分布有限差分法(split-step finite differencemethod ,SSFD);(2)分步傅里叶变换法(split-step Fourier transform method ,SSFT)。

一般情况,在达到相同精度,由于分步傅里叶变换法采用运算速度快的快速傅里叶变换,所以相比较有限差分法运算速度快一到两个数量级。

于是本文介绍分步傅里叶变换法来对光纤中光信号的传输方程,即非线性薛定谔方程进行数值求解。

并通过MATLAB 软件对结果数值仿真。

非线性薛定谔方程的基本形式为:22||t xx iu u u u =+其中u 是未知的复值函数.目前,采用分步傅立叶算法(Split step Fourier Method)求解非线性薛定谔方程的数值解应用比较多。

分步傅立叶方法最早是在1937年开始应用的,这种方法己经被证明是相同精度下数值求解非线性薛定愕方程最快的方法,部分原因是它采用了快速傅立叶变换算法(FastFourier Transform Algorithm)。

基于MATLAB 科学计算软件以及MATLAB 强大的符号计算功能,完全可以实现分步傅立叶数值算法来对脉冲形状和频谱进行仿真。

高斯光束的非线性薛定谔方程

高斯光束的非线性薛定谔方程
kx = (pi/Xmax)*[(0:np/2-1) (-np/2:-1)]; ky = kx;
kt = (pi/Tmax)*[(0:np/2-1) (-np/2:-1)];
[X Y T]=meshgrid(x,y,t);
[KX KY KT]=meshgrid(kx,ky,kt);
shading interp
xlabel('X');
ylabel('Y');
zlabel('|u|^2');
title('Output Pulse');
figure
isosurface(x,y,t,uu,0.008);
axis equal;
colormap([0 0 1]);
H2=Hn(ni-1);
Hn(ni)=2*hr*H2-2*(ni-2)
H=expand(Hn(n+1));
% END
%---初始化
z = 4;
np=100; Xmax=8; Ymax=8; Tmax=6;
for n=1:step_num
display(sprintf('%d',n));
hhz = exp(-1i*((1-sg.*V).*abs(uu).^2+p*V)*deltaz);
A1 = uu.*hhz;
A2 = fftn(A1);
A3 = A2.*dispersion;
Hn(1:n+1)=nan;
if n==0
Hn(1)=1;
else if n==1
Hn(2)=2*hr;
else

基于MATLAB的快速傅里叶的非线性薛定谔方程

基于MATLAB的快速傅里叶的非线性薛定谔方程
虚时演化 算符劈裂:
ˆ ˆ ˆB ˆ )t exp( At ) exp( B ˆ t ) exp( At ) exp ( A 2 2
it
可以发现,虚时演 化初始波函数总是随着 时间的演化指数衰减, 最后得到是一个实数解。 ˆ ˆ exp T ˆ r, 0 r, exp T exp V
非线性项
G-P方程是非线性薛定谔(Nonlinear Schrö dinger)方程的一种, 这类方程大多都只能通过数值办法求解。
2014-12-1
理论物理
7/50
Outline
玻色-爱因斯坦凝聚 (BECs)
Gross-Pitaevskii (G-P) 方程
算符劈裂算法 (Operator-Splitting methods)
对于求解定态的情况(基态):
ˆ V ˆ it r, t H T ext non r, t E r, t
定态解总可以写成: 虚时演化:


r, t eiEt r,0 eiEt cn E r
n
能量E对应的 本征态
ˆ V ˆ i T ext non


r, 0
同样我们需要先利用 傅里叶变换先把波函数变 换到动量空间。
2014-12-1
理论物理
15/50
III. 2. 实时演化
对于定态的实时演化情况(基态):
ˆ V ˆ it r, t H T ext non r, t E r, t
2
r, e
ˆ V ˆ T ext non


r, 0

python薛定谔方程

python薛定谔方程

python薛定谔方程薛定谔方程是描述量子力学体系演化的基本方程之一,可以用Python 进行数值求解。

以下是一个简单的Python代码示例:```pythonimport numpy as npimport matplotlib.pyplot as plt# 定义哈密顿量def hamiltonian(psi, x, V, dx, hbar, m):# 计算势能项pot = V(x)*psi# 计算动能项laplacian_psi = np.gradient(np.gradient(psi, dx), dx)kin = -hbar**2/(2*m)*laplacian_psi# 返回哈密顿量return kin + pot# 定义时间演化函数def time_evolution(psi, x, V, dt, hbar, m):# 计算哈密顿量H = hamiltonian(psi, x, V, dx, hbar, m)# 计算演化算符U = np.exp(-1j*dt/hbar*H)# 演化波函数psi = U.dot(psi)# 返回演化后的波函数return psi# 设置参数hbar = 1m = 1L = 10N = 1000dx = L/Nx = np.linspace(-L/2, L/2, N)V = lambda x: 0.5*x**2 # 谐振子势能dt = 0.01t_max = 10# 初始化波函数psi = np.exp(-x**2/2)psi /= np.sqrt(np.sum(np.abs(psi)**2*dx))# 演化波函数for i in range(int(t_max/dt)):psi = time_evolution(psi, x, V, dt, hbar, m)# 绘制波函数的模方plt.plot(x, np.abs(psi)**2)plt.show()```上述代码中,首先定义了哈密顿量和时间演化函数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
tau=(-nt/2:nt/2-1)*dtau; %temporal grid
omega=(pi./Tmax).*[(0:nt/2-1) (-nt/2:-1)] ;%frequency gird
%---Input Field profile
if hirp0*tau.^2); %soliton
else %super-Gaussian
uu=exp(-0.5*(1+1i*chirp0).*tau.^(2*mshape));
end
%---Plot input pulse shape and spectrum
temp=fftshift(ifft(uu)).*(nt*dtau)/sqrt(2*pi);%spectrum
distance=input;%
beta2=input;
N=1;%soliton order
mshape=input;
chirp0=0;%input pulse chirp(default value)
%---set simulation parameters
nt=1024;Tmax=32;%FFT points and window size
figure;subplot(2,1,1);
plot(tau,abs(uu).^2,'--k');hold on;
axis([-20 20 0 inf]);
xlabel('Normalized Time')
ylabel('Normalized Power')
title('Input and Output Pulse Shape and Spectrum');
>> %This code solves the NLS equation with the split-step method
>> % idu/dz-sgn(beta2)/2d^2u/d(tau)^2+N^2*|u|^2*u=0
>> %Specify input parameters
>> clear all;%
subplot(2,1,2);
plot(fftshift(omega)./(2.*pi),(abs(temp)).^2,'k');hold on;
axis([-5 5 0 inf]);
xlabel('Normalized Frequency')
ylabel('Normalized Power')
%store dispersive phase shifts to speedup code
dispersion=exp(i*0.5*beta2*omega.^2*deltaz); %phase factor
hhz=1i*N^2*deltaz;%nonlinear phase factor
%**********************[Beginning of MAIN Loop]*************************
step_num=round(20*distance*N^2);% No.of z steps to
deltaz=distance/step_num;%step size in z
dtau=(2*Tmax)/nt; %step size in tau
%---tau and omega arrays
%---Plot output pulse shape and spectrum
subplot(2,1,1)
plot(tau,abs(uu).^2,'--k')
subplot(2,1,2)
plot(fftshift(omega)./(2.*pi),abs(temp).^2,'k')
% scheme:1/2N->D->1/2N;first half step nonlinear
temp=uu.*exp(abs(uu).^2*hhz/2); %note hhz/2
for n=1:step_num
f_temp=ifft(temp).*dispersion;
uu=fft(f_temp);
temp=uu.*exp(abs(uu).^2*hhz);
end
uu=temp.*exp(-abs(uu).^2*hhz/2); %Final field
temp;fftshift(ifft(uu)).*(nt*dtau)/sqrt(2*pi);% Final spectrum
%**********************[End of MAIN Loop]*************************
相关文档
最新文档