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

合集下载

非线性薛定谔方程数值解的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)。

非线性-二阶系统的MATLAB仿真设计

非线性-二阶系统的MATLAB仿真设计

非线性-二阶系统的MATLAB仿真设计
介绍
本文档旨在介绍如何使用MATLAB进行非线性二阶系统的仿
真设计。

非线性系统在现实世界中广泛存在,因此了解其行为和性
能对于工程师和研究人员来说至关重要。

步骤
步骤1: 定义系统模型
首先,我们需要定义二阶非线性系统的模型。

在MATLAB中,可以使用差分方程或状态空间模型来表示系统。

确保将系统的非线
性特性准确地考虑在内。

步骤2: 设定仿真参数
在进行仿真之前,需要设定仿真的时间范围和步长。

这会影响
仿真的精度和计算时间。

根据系统的特性和需求,选择适当的仿真
参数。

步骤3: 编写仿真代码
使用MATLAB编写仿真代码,将系统模型和仿真参数整合在
一起。

在仿真代码中,可以使用MATLAB的函数和工具箱来实现
系统的数值模拟。

步骤4: 运行仿真
运行仿真代码,并观察系统在仿真时间内的行为。

通过分析仿
真结果,可以评估系统的稳定性、响应时间和稳态误差等性能指标。

步骤5: 分析和优化
根据仿真结果进行系统分析,找出系统存在的问题或改进的空间。

可以通过调整模型参数、改变系统结构或应用控制策略等方式
进行系统优化。

结论
通过MATLAB的仿真设计,可以更好地理解和分析非线性二
阶系统的行为。

这为工程师和研究人员提供了一个强大的工具,用
于系统设计和性能优化。

请注意,本文档仅为提供仿真设计的基本步骤,并不涉及具体的系统模型或实际应用。

具体问题需要根据实际情况进行进一步研究和分析。

matlab数值薛定谔方程

matlab数值薛定谔方程

matlab数值薛定谔方程薛定谔方程是描述量子力学中粒子的行为的基本方程。

在数值计算中,我们可以使用数值方法来求解薛定谔方程。

下面我将从多个角度来回答关于在MATLAB中数值求解薛定谔方程的问题。

1. 数值方法的选择:在MATLAB中,我们可以采用多种数值方法来求解薛定谔方程,其中常用的方法包括有限差分法、有限元法和谱方法等。

选择合适的数值方法取决于问题的特点和计算资源的可用性。

2. 离散化:在数值计算中,我们需要将薛定谔方程离散化为有限个点上的代数方程。

通常,我们会将空间离散化为网格,并在每个网格点上计算波函数的值。

时间离散化则是通过迭代的方式逐步求解时间演化。

3. 有限差分法:有限差分法是一种常见的数值方法,它将导数近似为有限差分。

在薛定谔方程中,我们可以将二阶导数近似为中心差分,然后使用差分方程来求解离散化的薛定谔方程。

4. 有限元法:有限元法是一种广泛应用于偏微分方程求解的数值方法。

在薛定谔方程中,我们可以使用有限元法将波函数表示为一组基函数的线性组合,并通过求解线性方程组来确定系数。

5. 谱方法:谱方法是一种基于函数展开的数值方法,它使用一组特定的基函数来表示波函数。

在薛定谔方程中,我们可以使用傅里叶级数或其他正交多项式作为基函数,并通过求解线性方程组来确定系数。

6. 边界条件:在数值求解薛定谔方程时,我们需要指定合适的边界条件。

常见的边界条件包括固定边界条件和周期性边界条件,具体取决于问题的物理背景。

7. 算法实现:在MATLAB中,我们可以使用内置的数值计算函数和工具箱来实现数值求解薛定谔方程。

例如,可以使用MATLAB的PDE Toolbox来求解偏微分方程,或者使用MATLAB的FFT函数来进行傅里叶变换。

总结起来,数值求解薛定谔方程是一个复杂而重要的问题,需要根据具体情况选择合适的数值方法并进行适当的离散化和边界条件处理。

MATLAB提供了丰富的数值计算工具和函数,可以帮助我们实现数值求解薛定谔方程的算法。

Matlab中的非线性优化和非线性方程求解技巧

Matlab中的非线性优化和非线性方程求解技巧

Matlab中的非线性优化和非线性方程求解技巧在科学和工程领域中,我们经常会遇到一些复杂的非线性问题,例如最优化问题和方程求解问题。

解决这些问题的方法主要分为线性和非线性等,其中非线性问题是相对复杂的。

作为一种强大的数值计算工具,Matlab提供了许多专门用于解决非线性优化和非线性方程求解的函数和方法。

本文将介绍一些常用的Matlab中的非线性优化和非线性方程求解技巧。

非线性优化是指在给定一些约束条件下,寻找目标函数的最优解的问题。

在实际应用中,往往需要根据实际情况给出一些约束条件,如等式约束和不等式约束。

Matlab中的fmincon函数可以用于求解具有约束条件的非线性优化问题。

其基本语法如下:[x,fval] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)其中,fun是目标函数,x0是初始值,A、b是不等式约束矩阵和向量,Aeq、beq是等式约束矩阵和向量,lb、ub是变量的上下边界。

x表示最优解,而fval表示最优解对应的目标函数值。

另外,非线性方程求解是指寻找使得方程等式成立的变量值的问题。

Matlab中提供的fsolve函数可以用于求解非线性方程。

其基本语法如下:x = fsolve(fun,x0)其中,fun是方程函数,x0是初始值,x表示方程的解。

除了fmincon和fsolve函数之外,Matlab还提供了一些其他的非线性优化和非线性方程求解函数,例如lsqnonlin、fminunc等,这些函数分别适用于无约束非线性优化问题和带约束非线性方程求解问题。

除了直接调用这些函数外,Matlab还提供了一些可视化工具和辅助函数来帮助我们更好地理解和解决非线性问题。

例如,使用Matlab的优化工具箱可以实现对非线性优化问题的求解过程可视化,从而更直观地观察到优化算法的收敛过程。

此外,Matlab还提供了一些用于计算梯度、雅可比矩阵和海塞矩阵的函数,这些函数在求解非线性问题时非常有用。

(完整版)基于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)方程:

matlab数值薛定谔方程

matlab数值薛定谔方程

matlab数值薛定谔方程摘要:I.引言- 介绍薛定谔方程- 介绍matlab 数值求解方法II.薛定谔方程的数值求解方法- 有限差分法- 有限元法- 谱方法III.matlab 数值求解薛定谔方程的步骤- 准备薛定谔方程的数值模型- 选择数值求解方法- 编写matlab 代码- 运行代码,分析结果IV.结果与讨论- 结果展示- 结果分析- 结果验证V.结论- 总结matlab 数值求解薛定谔方程的方法- 展望未来的研究方向正文:I.引言薛定谔方程是量子力学中的一个基本方程,用于描述一个微观粒子在给定势能场中的运动状态。

然而,由于薛定谔方程本身是一个偏微分方程,它的求解在大多数情况下是非常困难的。

matlab 作为一种强大的科学计算软件,可以用于数值求解薛定谔方程。

本文将介绍薛定谔方程的数值求解方法,以及如何使用matlab 进行数值求解。

II.薛定谔方程的数值求解方法薛定谔方程的数值求解方法主要有以下几种:1.有限差分法:将薛定谔方程的解表示为离散的点,通过差分代替微分,将方程转化为一个线性代数方程组,从而求解薛定谔方程。

2.有限元法:将薛定谔方程的解表示为有限个基函数的线性组合,通过插值或逼近基函数,将方程转化为一个线性代数方程组,从而求解薛定谔方程。

3.谱方法:通过在一组基函数上将薛定谔方程进行投影,将方程转化为一个线性代数方程组,从而求解薛定谔方程。

III.matlab 数值求解薛定谔方程的步骤使用matlab 进行数值求解薛定谔方程的步骤如下:1.准备薛定谔方程的数值模型:首先需要根据实际问题建立薛定谔方程的数值模型,包括势能场、边界条件等。

2.选择数值求解方法:根据问题的特点和求解需求,选择合适的数值求解方法,如有限差分法、有限元法或谱方法。

3.编写matlab 代码:根据所选方法,编写matlab 代码,实现薛定谔方程的数值求解。

4.运行代码,分析结果:运行编写的matlab 代码,得到薛定谔方程的数值解。

matlab解非线性方程

matlab解非线性方程

matlab解非线性方程MATLAB求解非线性方程一、Matlab求解非线性方程的原理1. 非线性方程是指当函数中的变量出现不同的次方数时,得出的方程就是非线性的。

求解非线性方程的准确性决定于得出的解集是否丰富,以及解的精度是否符合要求。

2. Matlab是一款多功能的软件,可以快速求解工程中的数学方程和模型,包括一元非线性方程。

Matlab 具有非线性解析计算能力,可以极大地提高求解效率。

二、Matlab求解非线性方程的方法1. 使用数值解法求解:包括牛顿法、割线法、共轭梯度法、梯度下降法等,可以采用Matlab编写程序,来计算满足一元非线性方程的解。

2. 使用符号解法求解:在Matlab中,可以直接使用solve函数来解决一元非线性方程。

3. Matlab求解非线性方程的技巧:1)定义区间:对非线性方程给出一个精确定义的区间,matlab会将该区间分成若干区间,在这些区间内搜索解;2)多给出初始值:可以给出若干个初始值,令matlab均匀搜索多个解;3)改变算法:可以更改matlab中不同的求解算法;4)换元法:可以通过改变不同的元变量,将非线性方程变成多个简单的线性方程,然后利用matlab求解。

三、Matlab求解非线性方程的特点1. 高效:Matlab求解的方式高效有效,性能优异,可以节省大量的求解时间。

2. 准确:Matlab采用符号解法时,解的准确度精度更高,可以满足大部分要求。

3. 节省资源:Matlab求解非线性方程节省计算机资源,可以很好地利用资源,提高工作效率。

四、 Matlab求解非线性方程的步骤1. 对结构表达式编写程序;2. 设定相应的条件;3. 优化程序;4. 运行程序;5. 分析结果;6. 测试代码;7. 验证学习结果。

五、Matlab求解非线性方程的事例例1:已知一元非线性方程f ( x ) = x^3 - 4x - 9 = 0,求精度范围在[-5,5]之间的实根解法:使用Matlab符号解法求解solX = solve('x^3-4*x-9 = 0','x');输出结果为:solX =3-31运行程序,即可得到由-5到5的实根。

基于分步傅里叶变换法对非线性薛定谔方程的数值仿真

基于分步傅里叶变换法对非线性薛定谔方程的数值仿真
Ab t a t T i p p r to u e id o u r a t o o o v n o l e r at l i e e t l q a i n : p i s p sr c : h s a e r d c sak n f me i l n i n c meh d f rs l ig n n i a ri f r n i u t s s l - t n p ad ae o t e
第3 卷第1 4 期 2 1 年3 0 1 月
长春理工大学学报( 自然科学版 )
Junl f hn ct nvri Sine n ehoo y N trl cec dt n orao C aghm U i sto c c dT cn l ( a aSine io e yf e a g u E i J
以及 非线 性 效 应 对光 脉 冲 的影 响 。
关键 词 :分 步傅 里叶 变换 法 ;非 线性 薛 定谔 方 程 ;MA L ; 快速 傅 里 叶 变换 T AB 中 图分 类 号 :T 2 .1 N9 91 文 献标 识 码 :A 文 章 编号 : 17 — 8 0( 0 l 0 —04 — 3 6 2 9 7 2 1 】 1 0 3 0
t y d sa c i itn eቤተ መጻሕፍቲ ባይዱt o g tc lu ai g t ed s e so fe t n e o l e re e t o t e l h b r a d am e e a — n h u h ac lt i r in e c d t n n n i a f c i t e , n i t g t h p n h p a h n t h g f i o t
p o i t me c l o u in o n n i e r c r d n e q ai n Fia l a p y t eM A AB o t r i lt en ・ r x maeNu r a l t f o l a h o ig r u to . n l i s o n S e y, p l TL h sf wa et smua et u o h me ia ou i n Vi o t eM A AB e u t a l a l e i e so fe t o p lewie ig o p ia u s ,a d r l l t . at TL c s o h r s l we c c e r s e d s r i n e c u s d n f t l le n s n y p t n o c p
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[键入作者姓名][键入文档标题]——利用分步快速傅里叶变换对光纤中光信号的传输方程进行数值求解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)。

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

一般情况下,光脉冲沿光纤传播时受到色散和非线性效应的共同作用,假设当传输距离很小的时候,两者相互独立作用,那么,根据这种思想可建立如下分步傅立叶数值算法的数 学模型:(I )把待求解的非线性薛定谔方程写成以下形式:ˆˆ()U D N U z∂=+∂ 其中ˆD是线性算符,代表介质的色散和损耗, ˆN 是非线性算符,它决定了脉冲传输过程中光纤的非线性效应。

一般来讲,沿光纤的长度方向,色散和非线性是同时作用的。

分步傅立叶法假设在传输过程中,光场每通过一小段距离h ,色散和非线性效应可以分别作用,得到近似结果。

也就是说脉冲从z 到z +h 的传输过程中分两步进行。

第一步,只有非线性作用,方程(II)式中的ˆD=0;第二步,再考虑线性作用,方程(II)式中的ˆN =0 这样方程(2)在这两步中可分别简化为:ˆˆU DU zU N U z∂=⋅∂∂=⋅∂得到了上面两个方程(III ),就可以分别求解非线性作用方程和线性作用方程,然后讨论分步傅立叶法的数值算法。

由于方程(III )是一个偏微分方程,需要通过傅立叶变换把偏微分方程转换为代数方 程,进行运算。

傅立叶变换的定义如下:1[(,)](,)(,)exp()1[(,)](,)(,)exp()2F U z T U z U z T i T dTF U z U z T U z i T dT ωωωωωπ+∞-∞+∞--∞⎧⎪==⎪⎨⎪==-⎪⎩⎰⎰ 在计算[(,)]F U z T 时一般采用快速傅立叶变换(FFT )算。

为了保证精度要求,一般还需要反复调整纵向传输步长z 和横向脉冲取样点数T 来保证计算精度。

2、分步傅立叶数值算法的MATLAB 实现现待求解的非线性薛定谔方程如下:222024A i A A i A A z T αβγ∂∂+--=∂∂ 其中,A (z ,T )是光场慢变复振幅,z 是脉冲沿光纤传播的距离;(II )(III )(IV ) (V )1T t z β=-,11/g v β=,v g 是群速度;(/)ps km β是色散系数;(1/)w km γ⋅是非线性系数;(1/)km α是光纤损耗系数,它与用分贝表示的损耗系数(/)dB dB km α的关系为:4.343dB αα=.首先,可以将方程(V )归一化振幅:0(,)/U A z T P =, 0P 是入射脉冲的峰值功率,此时方程(V)可改写为:220224U i U U P i U U z Tαβγ∂∂=-++∂∂ 为了使用分步傅立叶法求解方程(VI ),将方程(VI )写成以下形式:ˆˆ()U DN U z∂=+∂ 进一步,可以得出如下方程(VII ):2222ˆ2ˆi UT DN P i U βαγ∂-+∂==然后,按照步骤1和步骤2,依次计算方程(VII )的线性算符和非线性算符。

最后在步骤3 中,运行步骤1和步骤2的MATLAB 程序,得出线性算符和非线性算符的精确数值解及其仿真曲线。

步骤1 线性算符方程的求解线性算符的方程如下:2222i UUT U zβα∂-+∂∂=∂用傅立叶变换方法,得到一个常微分方程(IX ):2()24U i i U U z αωβ∂=--∂ 解方程(IX)得:22(,)(0,)exp[]4i U z U z βωαωω-=式中(0,)U ω是初值(0,)U T 的傅立叶变换,将(,)U z ω进行反傅立叶变换就得到了(VI )(VII )(VIII )(IX )(X )(,)U z T 。

方程(X)的求解公式为:2(,){exp[()][(0,)]}22i zU z T F F U T βωα=-⋅其中F 和F 分别表示傅立叶变换和反傅立叶变换运算。

步骤2 非线性算符方程的求解非线性部分的方程如下:20U P i U U zγ∂=∂ 同Step1的方法,解方程(XII ),得到:20(,)(0,)exp[(0,)]U z U Pi U T z ωωγ=式中(0,)U ω是初值(0,)U T 的傅立叶变换,将(,)U z ω进行反傅立叶变换就得到了(,)U z T 。

方程(XIII)的求解公式为:20(,){exp[(0,)][(0,)]}U z T F Pi U T z F U T γ=⋅其中F 和F 分别表示傅立叶变换和反傅立叶变换运算。

步骤3 算法在MATLAB 中的实现在Matlab 中,设有限时长序列()x n 的长度为(1)N n N ≤≤,它对应于一个频域内的长度为N 的有限长序列()(1)X k k N ≤≤,()X k 的角频2()(1)kk k N NTπω=≤≤,其中T 是序列()x n 的采样时间间隔.这种正反离散傅立叶变换的关系式为:112()[()]()exp()(1)12()[()]()exp()(1)Nj Nj X k DFT x n x n j k n k N Nx n IDFT X k X k j k n n N NNππ====-⋅⋅⋅ ≤≤==⋅⋅⋅ ≤≤∑∑ 然后用Matlab 中的离散傅立叶变换(DFT )函数fft 和离散傅立叶反变换(IDFT )的函数ifft 来实现方程(VIII),(XII)式中的傅立叶和反傅立叶变换运算。

进一步,得到方程(XI),(XIV) 的数值解及仿真曲线。

最后,通过测试一组参数,得到方程(V )在该算法下的MATLAB 运算结果。

(XI )(XII )(XIII )(XV )(XIV )MATLAB总共用时34.26s,求得的的结果曲线如下图所示。

结果表明,算法正确而且精度也比较高,能够在非线性薛定谔方程的求解中广泛应用。

附录MATLAB的脚本文件源代码:Po=200; %输入光强,单位Walpha=3.5; %光纤损耗值,单位dB/kmgamma=20; %光纤非线性参数to=1; %初始脉冲宽度,单位秒C=50; %第一次计算输入的啁啾参数b2=1000; %波数的倒数cputime=0;tic;ln=1;i=sqrt(-1);pi=3.1415926535;alph=alpha/(4.343);Ld=(to^2)/(abs(b2)); %扩散长度,单位是mAo=sqrt(Po); %光振幅tau=-4096e-12:1e-12:4095e-12;dt=1e-12;h=1000;%步长for ii=0.1:0.1:1.5 %不同的光纤长度不同,这个量可变z=ii*Ld;u=Ao*exp(-((1+i*(-C))/2)*(tau/to).^2);figure(1)plot(abs(u),'r');title('Input Pulse'); xlabel('Time'); ylabel('Amplitude');grid on;hold on;l=max(size(u));fwhm1=find(abs(u)>abs(max(u)/2));fwhm1=length(fwhm1);dw=1/l/dt*2*pi;w=(-1*l/2:1:l/2-1)*dw;u=fftshift(u); %零延迟对中的谱w=fftshift(w); %零延迟对中的谱spectrum=fft(fftshift(u)); %快速离散傅立叶变换for jj=h:h:zspectrum=spectrum.*exp(g1); %g1为线性算符e的指数表达式f=ifft(spectrum); %快速离散反傅立叶变换f=f.*exp(g2);%g2为非线性算符e的指数表达式spectrum=fft(f); %快速离散傅立叶变换f=ifft(spectrum); %快速离散反傅立叶变换op_pulse(ln,:)=abs(f);%保存在所有间隔点上的输出脉冲fwhm=find(abs(f)>abs(max(f)/2));fwhm=length(fwhm);ratio=fwhm/fwhm1;pbratio(ln)=ratio;dd=atand((abs(imag(f)))/(abs(real(f))));phadisp(ln)=dd;%保存脉冲相位ln=ln+1;endtoc;cputime=toc;figure(2);mesh(op_pulse(1:1:ln-1,:));title('Pulse Evolution');xlabel('Time'); ylabel('distance'); zlabel('amplitude'); figure(3)plot(pbratio(1:1:ln-1),'k');xlabel('Number of steps');ylabel('Pulse broadening ratio');grid on;hold on;figure(4)plot(phadisp(1:1:ln-1),'k');xlabel('distance travelled');ylabel('phase change');grid on;hold on;disp('CPU time:'), disp(cputime);。

相关文档
最新文档