基于首次积分法求解非线性薛定谔方程的精确解

基于首次积分法求解非线性薛定谔方程的精确解
基于首次积分法求解非线性薛定谔方程的精确解

非线性薛定谔方程数值解的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年开始应用的,这种方法己经被证明是相同精度下数值求解非线性薛定愕方程最快的方法,部分原因是它采用了快速傅立叶变换算法(FastFourier Transform Algorithm)。基于MATLAB 科学计算软件以及MATLAB 强大的符号计算功能,完全可以实现分步傅立叶数值算法来对脉冲形状和频谱进行仿真。 一般情况下,光脉冲沿光纤传播时受到色散和非线性效应的共同作用,假设当传输距离 很小的时候,两者相互独立作用,那么,根据这种思想可建立如下分步傅立叶数值算法的数 学模型: 把待求解的非线性薛定谔方程写成以下形式: ??()U D N U z ?=+? (I ) (II )

MATLAB代码 解线性方程组的迭代法

解线性方程组的迭代法 1.rs里查森迭代法求线性方程组Ax=b的解 function[x,n]=rs(A,b,x0,eps,M) if(nargin==3) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值elseif(nargin==4) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1; %迭代过程 while(tol>eps) x=(I-A)*x0+b; n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x; if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 2.crs里查森参数迭代法求线性方程组Ax=b的解 function[x,n]=crs(A,b,x0,w,eps,M) if(nargin==4) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值 elseif(nargin==5) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1; %迭代过程 while(tol>eps) x=(I-w*A)*x0+w*b; n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x;

if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 3.grs里查森迭代法求线性方程组Ax=b的解 function[x,n]=grs(A,b,x0,W,eps,M) if(nargin==4) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值 elseif(nargin==5) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1;%前后两次迭代结果误差 %迭代过程 while(tol>eps) x=(I-W*A)*x0+W*b;%迭代公式 n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x; if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 4.jacobi雅可比迭代法求线性方程组Ax=b的解 function[x,n]=jacobi(A,b,x0,eps,varargin) if nargin==3 eps=1.0e-6; M=200; elseif nargin<3 error return elseif nargin==5 M=varargin{1}; end D=diag(diag(A));%求A的对角矩阵 L=-tril(A,-1);%求A的下三角阵

C++实现 牛顿迭代 解非线性方程组

C++实现牛顿迭代解非线性方程组(二元二次为例) 求解{0=x*x-2*x-y+0.5; 0=x*x+4*y*y-4; }的方程 #include #include #define N 2 // 非线性方程组中方程个数、未知量个数#define Epsilon 0.0001 // 差向量1范数的上限 #define Max 100 // 最大迭代次数 using namespace std; const int N2=2*N; int main() { void ff(float xx[N],float yy[N]); //计算向量函数的因变量向量yy[N] void ffjacobian(float xx[N],float yy[N][N]); //计算雅克比矩阵yy[N][N] void inv_jacobian(float yy[N][N],float inv[N][N]); //计算雅克比矩阵的逆矩阵inv void newdundiedai(float x0[N], float inv[N][N],float y0[N],float x1[N]); //由近似解向量x0 计算近似解向量x1 float x0[N]={2.0,0.25},y0[N],jacobian[N][N],invjacobian[N][N],x1[N],errornorm; int i,j,iter=0; //如果取消对x0的初始化,撤销下面两行的注释符,就可以由键盘x读入初始近似解向量for( i=0;i>x0[i]; cout<<"初始近似解向量:"<

最新薛定谔方程及其解法

关于薛定谔方程 一.定义及重要性 薛定谔方程(Schrdinger equation)是由奥地利物理学家薛定谔提 出的量子力学中的一个基本方程,也是量子力学的一个基本假定, 其正确性只能靠实验来检验。是将物质波的概念和波动方程相结合 建立的二阶偏微分方程,可描述微观粒子的运动,每个微观系统都 有一个相应的薛定谔方程式,通过解方程可得到波函数的具体形式 以及对应的能量,从而了解微观系统的性质。 薛定谔方程是量子力学最基本的方程,亦是量子力学的一个基 本假定,它的正确性只能靠实验来检验。 二.表达式 三.定态方程 ()() 2 2 2 V r E r m η ψψ + ?? -?= ?? ?? 所谓势场,就是粒子在其中会有势能的场,比如电场就是一个带电粒子的势场;所谓定态,就是假设波函数不随时间变化。 其中,E是粒子本身的能量;v(x,y,z)是描述势场的函数,假设不随时间变化。

2 2 22222 z y x ??????++=? 可化为 d 0)(222 =-+ψψv E h m dx 薛定谔方程的解法 一. 初值解法;欧拉法,龙格库塔法 二. 边值解法;差分法,打靶法,有限元法 龙格库塔法(对欧拉法的完善) 给定初值问题 ). ()()((3) ) ,(),()( ,,(2) )(),( 311212 2111021h O t y t y hk y h t f k y t f k k c k c h y y y c c a y b t a y t f dt dy i i i i i i i i =-???????++==++==?????=≤≤=++的局部截断误差使以下数值解法的值及确定常数ββα βα

常微分方程的解线性方程组的迭代法

实验五 解线性方程组的迭代法 【实验内容】 对1、设线性方程组 ?? ? ? ?? ? ? ?? ? ? ?? ? ? ??-=???????????????? ?????????????????? ? ?--------------------------211938134632312513682438100412029137264 2212341791110161035243120 536217758683233761624491131512 013012312240010563568 0000121324 10987654321x x x x x x x x x x ()T x 2,1,1,3,0,2,1,0,1,1*--= 2、设对称正定系数阵线性方程组 ?? ? ????? ??? ? ? ??---=????????????? ??????????????? ??---------------------4515229 23206019243360021411035204111443343104221812334161 2065381141402312122 00240424 87654321x x x x x x x x ()T x 2,0,1,1,2,0,1,1*--= 3、三对角形线性方程组

?? ? ?? ? ????? ??? ? ? ??----=???????????????? ?????????????????? ??------------------5541412621357410000000014100000000141000000001410000000014100000000141000000001410000000014100000000 14100000000 1410987654321x x x x x x x x x x ()T x 1,1,0,3,2,1,0,3,1,2*---= 试分别选用Jacobi 迭代法,Gauss-Seidol 迭代法和SOR 方法计算其解。 【实验方法或步骤】 1、体会迭代法求解线性方程组,并能与消去法加以比较; 2、分别对不同精度要求,如54310,10,10---=ε由迭代次数体会该迭代法的收敛快慢; 3、对方程组2,3使用SOR 方法时,选取松弛因子ω=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者; 4、给出各种算法的设计程序和计算结果。 程序: 用雅可比方法求的程序: function [x,n]=jacobi(A,b,x0,eps,varargin) if nargin==3 eps=1.0e-6; M=200;

薛定谔方程与提出背景

薛定谔方程 在一维空间里,一个单独粒子运动于位势中的含时薛定谔方程为 ;(1) 其中,是质量,是位置,是相依于时间的波函数,是约化普朗克常数,是位势。类似地,在三维空间里,一个单独粒子运动于位势中的含时薛定谔方程为 。(2) 假若,系统有个粒子,则波函数是定义于 -位形空间,所有可能的粒子位置空间。用方程表达, 。 其中,波函数的第个参数是第个粒子的位置。所以,第个粒子的位置是。 不含时薛定谔方程 不含时薛定谔方程不相依于时间,又称为本征能量薛定谔方程,或定态薛定谔方程。顾名思义,本征能量薛定谔方程,可以用来计算粒子的本征能量与其它相关的量子性质。 应用分离变量法,猜想的函数形式为 ; 其中,是分离常数,是对应于的函数.稍回儿,我们会察觉就是能量. 代入这猜想解,经过一番运算,含时薛定谔方程 (1) 会变为不含时薛定谔方程: 。 类似地,方程 (2) 变为

。 历史背景与发展 爱因斯坦诠释普朗克的量子为光子,光波的粒子;也就是说,光波具有粒子的性质,一种很奇奥的波粒二象性。他建议光子的能量与频率成正比。在相对论里,能量与动量之间的关系跟频率与波数之间的关系相同,所以,连带地,光子的动量与波数成正比。 1924年,路易·德布罗意提出一个惊人的假设,每一种粒子都具有波粒二象性。电子也有这种性质。电子是一种波动,是电子波。电子的能量与动量决定了它的物质波的频率与波数。1927年,克林顿·戴维和雷斯特·革末将缓慢移动的电子射击于镍晶体标靶。然后,测量反射的强度,侦测结果与X射线根据布拉格定律 (Bragg's law) 计算的衍射图案相同。戴维森-革末实验彻底的证明了德布罗意假说。 薛定谔夜以继日地思考这些先进理论,既然粒子具有波粒二象性,应该会有一个反应这特性的波动方程,能够正确地描述粒子的量子行为。于是,薛定谔试着寻找一个波动方程。哈密顿先前的研究引导著薛定谔的思路,在牛顿力学与光学之间,有一种类比,隐蔽地暗藏于一个察觉里。这察觉就是,在零波长极限,实际光学系统趋向几何光学系统;也就是说,光射线的轨道会变成明确的路径,遵守最小作用量原理。哈密顿相信,在零波长极限,波传播会变为明确的运动。可是,他并没有设计出一个方程来描述这波行为。这也是薛定谔所成就的。他很清楚,经典力学的哈密顿原理,广为学术界所知地,对应于光学的费马原理。借着哈密顿-雅可比方程,他成功地创建了薛定谔方程。薛定谔用自己设计的方程来计算氢原子的谱线,得到了与用玻尔模型计算出的能级相同的答案。 但是,薛定谔对这结果并不满足,因为,索末菲似乎已经正确地计算出氢原子光谱线精细结构常数的相对论性的修正。薛定谔试着用相对论的能量动量关系式,来寻找一个相对论性方程(现今称为克莱因-高登方程),可以描述电子在库仑位势的量子行为。薛定谔计算出这方程的定态波函数。可是,相对论性的修正与索末菲的公式有分歧。虽然如此,他认为先前非相对论性的部分,仍旧含有足够的新结果。因此,决定暂时不发表相对论性的修正,只把他的波动方程与氢原子光谱分析结果,写为一篇论文。1926年,正式发表于物理学界[2]。从此,给予了量子力学一个新的发展平台。 薛定谔方程漂亮地解释了的行为,但并没有解释的意义。薛定谔曾尝试解释代表电荷的密度,但却失败了。1926年,就在薛定谔第四篇的论文发表之后几天,马克斯·玻恩提出概率幅的概念,成功地解释了的物理意义[3]。可是,薛定谔本人一直不承认这种统计或概率的表示方法,和它所伴随的非连续性波函数坍缩。就像爱因斯坦的认为量子力学是基本为确定性理论的统计近似,薛定谔永远无法接受哥本哈根诠释。在他有生最后一年,他写给马克斯·玻恩的一封信,薛定谔清楚地表明了这看法。 含时薛定谔方程导引

线性方程组的迭代法及程序实现

线性方程组的迭代法及程序实现 学校代码:11517 学号:200810111217 HENAN INSTITUTE OF ENGINEERING 毕业论文 题目线性方程组的迭代法及程序实现 学生姓名 专业班级 学号 系 (部)数理科学系 指导教师职称 完成时间 2012年5月20日河南工程学院 毕业设计(论文)任务书 题目:线性方程组的迭代法及程序实现专业:信息与计算科学学号 : 姓名一、主要内容: 通过本课题的研究,学会如何运用有限元方法来解决线性代数方程组问题,特别是Gaussie-Seidel迭代法和Jacobi迭代法来求解线性方程组。进一步学会迭代方法的数学思想,并对程序代码进行解析与改进,这对于我们以后学习和研究实际问题具有重要的意义。本课题运用所学的数学专业知识来研究,有助于我们进一步掌握大学数学方面的知识,特别是迭代方法。通过这个课题的研究,我进一步掌握了迭代方法的思想,以及程序的解析与改进,对于今后类似实际问题的解决具有重要的意义。

二、基本要求: 学会编写规范论文,独立自主完成。 运用所学知识发现问题并分析、解决。 3.通过对相关资料的收集、整理,最终形成一篇具有自己观点的学术论文,以期能对线性方程组迭代法的研究发展有一定的实践指导意义。 4.在毕业论文工作中强化英语、计算机应用能力。 完成期限: 2012年月指导教师签名:专业负责人签名: 年月日 目录 中文摘要....................................................................................Ⅰ英文摘要 (Ⅱ) 1 综述 1 2 经典迭代法概述 3 2.1 Jacobi迭代法 3 2.2 Gauss?Seidel迭代法 4 2.3 SOR(successive over relaxation)迭代法 4 2.4 SSOR迭代法 5 2.5 收敛性分析5 2. 6 数值试验 6 3 matlab实现的两个例题8 3.1 例1 迭代法的收敛速度8 3.2 例 2 SOR迭代法松弛因子的选取 12致谢16参考文献17附录19

数值分析5-用Jacobi迭代法和Gauss-Seidel迭代法求解线性方程组

作业六:分别编写用Jacobi迭代法和Gauss-Seidel迭代法求解线性方程组Ax=B的标准程序,并求下列方程组的解。 可取初始向量 X(0) =(0,0,0)’; 迭代终止条件||x(k+1)-x(k)||<=10e-6 (1) = (2) = Jacobi迭代法: 流程图 开 始 判断b中的最大值 有没有比误差大 给x赋初值 进行迭代 求出x,弱到100次还没到,警告不收 结束

程序 clear;clc; A=[8,-1,1;2,10,01;1,1,-5]; b=[1;4;3]; e=1e-6; x0=[0;0;0]'; n=length(A); x=zeros(n,1); k=0; r=max(abs(b)); while r>e for i=1:n d=A(i,i); if abs(d)100 warning('不收敛'); end end x=x0;

程序结果(1)

(2)

Gauss-Seidel迭代法: 程序 clear;clc; %A=[8,-1,1;2,10,01;1,1,-5]; %b=[1;4;3]; A=[5,2,1;-1,4,2;2,-3,10]; b=[-12;20;3]; m=size(A); if m(1)~=m(2) error('矩阵A不是方阵'); end n=length(b); %初始化 N=0;%迭代次数 L=zeros(n);%分解A=D+L+U,D是对角阵,L是下三角阵,U是上三角阵U=zeros(n); D=zeros(n); G=zeros(n);%G=-inv(D+L)*U d=zeros(n,1);%d=inv(D+L)*b x=zeros(n,1); for i=1:n%初始化L和U for j=1:n if ij U(i,j)=A(i,j); end end end for i=1:n%初始化D D(i,i)=A(i,i); end G=-inv(D+L)*U;%初始化G d=(D+L)\b;%初始化d %迭代开始 x1=x; x2=G*x+d; while norm(x2-x1,inf)>10^(-6)

非线性薛定谔方程数值解的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 强大的符号计算功能,完全可以实现分步傅立叶数值算法来对脉冲形状和频谱进行仿真。 一般情况下,光脉冲沿光纤传播时受到色散和非线性效应的共同作用,假设当传输距离 很小的时候,两者相互独立作用,那么,根据这种思想可建立如下分步傅立叶数值算法的数 学模型: 把待求解的非线性薛定谔方程写成以下形式: ??()U D N U z ?=+? (I ) (II )

薛定谔方程

第一章 薛定谔方程 §1.1.波函数及其物理意义 1. 波函数: 用波函数描述微观客体的运动状态。 例:一维自由粒子的波函数 推广 :三维自由粒子波函数 2. 波函数的强度——模的平方 3. 波函数的统计解释 用光栅衍射与电子衍射对比的方式理解波函数的统计解释。 t 时刻,出现在空间(x,y,z )点附近单位体积内的粒子数与总粒子数之比。 t 时刻,粒子出现在空间(x,y,z )点附近单位体积内的概率。 t 时刻,粒子在空间分布的概率密度 4、 波函数的归一化条件和标准条件 归一化条件 粒子在整个空间出现的概率为1 标准条件:一般情况下, 有关特殊情况波函数所满足的条件参看曾谨言教程。 对微观客体的数学描述: 脱离日常生活经验,避免借用经典语言引起的表观矛盾 §1.2. 薛定谔方程 是量子力学的基本假设之一,只能建立,不能推导,其正确性由实验检验。 1. 建立 (简单→复杂, 特殊→一般) 一维自由粒子的振幅方程 非相对论考虑 2. 一维定态薛定谔方程 2 |),,,(|t z y x ψ1d d d d d ||2===?=ψ???N N N N V V N N V V V . 是单值、有限、连续的ψ0)(2d )(d 222=ψ+ψx mE x x 0)()(2d )(d 222=ψ-+ψx U E m x x

3. 三维定态薛定谔方程 4. 一般形式薛定谔方程 5. 多粒子体系的薛定谔方程 讨论: 1、薛定谔方程也称波动方程,描述在势场U 中粒子状态随时间的变化规律。 2 、建立方程而不是推导方程,正确性由实验验证。薛定谔方程实质上是一种基本假设,不能从其他更基本原理或方程推导出来,它的正确性由它解出的结果是否符合实验来检验。 3、薛定谔方程是线性方程。是微观粒子的基本方程,相当于牛顿方程。 4、自由粒子波函数必须是复数形式,否则不满足自由粒子薛定谔方程。 5、薛定谔方程是非相对论的方程。 量子力学的中心任务就是求解薛定谔方程。 求解问题的思路: 1. 写出具体问题中势函数U (r )的形式代入方程 2. 用分离变量法求解 3. 用归一化条件和标准条件确定积分常数 4. 讨论解的物理意义, 薛定谔的另一伟大科学贡献 《What is life ?》 薛定谔(Schroding,1897-1961)奥地利人,因发现原子理论的有效的新形式一波动力学与狄拉克(Dirac,1902-1984)因创立相对论性的波动方程一狄拉克方程,共同分享了1933年度诺贝尔物理学奖 定态薛定谔方程 一.定态薛定谔方程条件:V (r,t )=V(r), 与t 无关。用分离变量法, 令Ψ=φ(r)f(t),代入薛定谔方程,得两个方程: 此称定态薛定谔方程 整个定态波函数形式: ),,,(),,,()],,,(2[),,,(2121212221t r r t r r V t r r m t r r t i i i i ψ+ψ?-=ψ??∑)t (Ef t )t (f i =?? Et i ce )t (f -=)r (E )r ()r (V )r (m ?=?+??-222Et i e )r ( -?=ψ

求解线性方程组——超松弛迭代法(c)

求解线性方程组——超松弛迭代法 #include #include using namespace std; float *one_array_malloc(int n); //一维数组分配float **two_array_malloc(int m,int n); //二维数组分配float matrix_category(float* x,int n); int main() { const int MAX=100;//最大迭代次数 int n,i,j,k; float** a; float* x_0; //初始向量 float* x_k; //迭代向量 float precision; //精度 float w; //松弛因子 cout<<"输入精度e:"; cin>>precision; cout<>n; a=two_array_malloc(n,n+1); cout<>a[i][j]; } } x_0=one_array_malloc(n); cout<>x_0[i]; } x_k=one_array_malloc(n);

cout<<"输入松弛因子w (1>w; float temp; //迭代过程 for(k=0;k

Gauss-Seidel迭代法求解线性方程组

Gauss-Seidel迭代法求解线性方程组

一. 问题描述 用Gauss-Seidel 迭代法求解线性方程组 由Jacobi 迭代法中,每一次的迭代只用到前一次的迭代值。使用了两倍的存储空间,浪费了存储空间。若每一次迭代充分利用当前最新的迭代值,即在计算第i 个分量 ) 1(+k i x 时,用最新分量 ) 1(1 +k x , ???+) 1(2 k x ) 1(1 -+k i x 代替旧分量 ) (1 k x , ???) (2 k x ) (1 -k i x ,可以起 到节省存储空间的作用。这样就得到所谓解方程组的Gauss-Seidel 迭代法。 二. 算法设计 将A 分解成U D L A --=,则b x =A 等价于b x =--U)D (L 则Gauss-Seidel 迭代过程 ) ()1()1(k k k Ux Lx b Dx ++=++ 故 ) ()1()(k k Ux b x L D +=-+ 若设1 )(--L D 存在,则 b L D Ux L D x k k 1)(1)1()()(--+-+-= 令 b L D f U L D G 11)()(---=-=,

则Gauss-Seidel 迭代公式的矩阵形式为 f Gx x k k +=+) () 1( 其迭代格式为 T n x x x x ) ()0()0(2)0(1)0(,,,???= (初始向量), ) (1 1 1 1 1 )()1()1(∑∑-=-+=++--=i j i i j k j ij k j ij i ii i i x a x a b a x )210i 210(n k ???=???=,,,;,,, 或者 ?? ???--=???=???==?+=∑∑-=-+=+++) (1)210i 210(111 1)()1()1()()1(i j i i j k j ij k j ij i ii i i i k i k i x a x a b a x n k k x x x ,,,;,,, 三. 程序框图

非线性薛定谔方程的孤子解和怪波解

非线性薛定谔方程的孤子解和怪波解 摘要:光纤中光波的传输模型一直是当前研究的热点理论模型之一,从非线性薛定谔方程到金格堡-朗道方程,都试图对其进行更好的阐释,其次对于非线性动力学系统中,非线性薛定谔方程的解有呈现出非常多有趣的特征,对于其中特定解的研究能够让我们了解脉冲演化的本质,所以本文主要从孤子解的传输入手,并且简单介绍了怪波解的解形式。 薛定谔方程又称薛定谔波动方程,是量子力学的一个基本方程,同时又是量子力学的基本假设之一,由奥地利物理学家薛定谔1926年在《量子化就是本征值问题》中提出的,它在量子力学中的地位非常重要,相当于牛顿定律对于经典力学一样。 随着人们对世界的不断探索,非线性现象逐渐走进人们的视野,这种现象一般大都用非线性偏微分方程的数学模型来描述,显然线性方程已经不能满足人们的需求。 1973年,Hasegawa从含有非线性项的色散方程中推导出了非线性薛定谔方程。非线性薛定谔方程(NLS)是普适性很强的一个基本方程,最简单的形式是: 其中为常数。因为这个方程在几乎所有的物理分支及其他科学领域得到了广泛的应用,如超导,光孤子在光纤中传播,光波导,等离子体中的Langnui波等,所以许多学者对此方程的研究投入了很大的热情,至今还在生机勃勃的向前发展着。 1 分步傅里叶法计算演化过程 对于处理非线性性薛定谔方程,常用的数值仿真方式为分步傅里叶方法,为了简单起见,只考虑二阶色散和自相位调制,不考虑高阶色散、自陡以及四波混频等高阶非线性效应。上述方程中做 2 β为二阶色散,γ表示Kerr效应系数,g和α分别代表光纤中的增益和损耗。对上述方程转化到频域,先不考虑增益和损耗。可以得到 2 k k k k k dA i A i a a dz βγ =?+F. 其中2 2 2 k i β β ?=Ω 令() exp k k A B i z β =?可以得到 () 2exp k k k k dB i a a i z dz γβ =-? F 以上方程可以用四阶龙格库塔直接求解,但是速度较慢,所以我们需要做差分处理。 ()() ()()() 2 exp k k k k k B z z B z i a z a z i z z γβ +?- =-? ? F 再利用() exp k k A B i z β =?可以得到 ()()()() ()()() 2 2 exp exp exp k k k k k k k k A z z A i a z a z z i z a z i a z z i z γβ γβ ?? +?=+??? ?? ?? ?? ≈????? ?? F F 然后做傅里叶反变换就可以得到最终的结果 ()()()() 2 1exp exp - k k k k a z z a z i a z z i z γβ ?? +?=????? ?? F F

数值计算_第4章 解线性方程组的迭代法

第4章解线性方程组的迭代法 用迭代法求解线性方程组与第4章非线性方程求根的方法相似,对方程组进行等价变换,构造同解方程组(对可构造各种等价方程组, 如分解,可逆,则由得到),以此构造迭代关系式 (4.1) 任取初始向量,代入迭代式中,经计算得到迭代序列。 若迭代序列收敛,设的极限为,对迭代式两边取极限 即是方程组的解,此时称迭代法收敛,否则称迭代法发散。我们将看到,不同于非线性方程的迭代方法,解线性方程组的迭代收敛与否完全决定于迭代矩阵的性质,与迭代初始值的选取无关。迭代法的优点是占有存储空间少,程序实现简单,尤其适用于大型稀疏矩阵;不尽人意之处是要面对判断迭代是否收敛和收敛速度的问题。 可以证明迭代矩阵的与谱半径是迭代收敛的充分必要条件,其中是矩阵的特征根。事实上,若为方程组的解,则有 再由迭代式可得到

由线性代数定理,的充分必要条件。 因此对迭代法(4.1)的收敛性有以下两个定理成立。 定理4.1迭代法收敛的充要条件是。 定理4.2迭代法收敛的充要条件是迭代矩阵的谱半径 因此,称谱半径小于1的矩阵为收敛矩阵。计算矩阵的谱半径,需要求解矩阵的特征值才能得到,通常这是较为繁重的工作。但是可以通过计算矩阵的范数等方法简化判断收敛的 工作。前面已经提到过,若||A||p矩阵的范数,则总有。因此,若,则必为收敛矩阵。计算矩阵的1范数和范数的方法比较简单,其中 于是,只要迭代矩阵满足或,就可以判断迭代序列 是收敛的。 要注意的是,当或时,可以有,因此不能判断迭代序列发散。

在计算中当相邻两次的向量误差的某种范数小于给定精度时,则停止迭代计算,视为方程组的近似解(有关范数的详细定义请看3.3节。) 4.1雅可比(Jacobi)迭代法 4.1.1 雅可比迭代格式 雅可比迭代计算 元线性方程组 (4.2) 写成矩阵形式为。若将式(4.2)中每个方程的留在方程左边,其余各项移到方程右边;方程两边除以则得到下列同解方程组: 记,构造迭代形式

迭代法解线性方程组

迭代法解线性方程组作业 沈欢00986096 北京大学工学院,北京100871 2011年10月12日 摘要 由所给矩阵生成系数矩阵A和右端项b,分析系数矩阵A,并用Jacobi迭代法、GS迭代法、SOR(逐步松弛迭代法)解方程组Ax=b 1生成系数矩阵A、右端项b,并分析矩阵A 由文件”gr900900c rg.mm”得到了以.mm格式描述的系数矩阵A。A矩阵是900?900的大型稀 疏对称矩阵。于是,在matlaB中,使用”A=zeros(900,900)”语句生成900?900的零矩阵。再 按照.mm文件中的描述,分别对第i行、第j列的元素赋对应的值,就生成了系数矩阵A,并 将A存为.mat文件以便之后应用。 由于右端项是全为1的列向量,所以由语句”b=ones(900,1)”生成。 得到了矩阵A后,求其行列式,使用函数”det(A)”,求得结果为”Inf”,证明行列式太大,matlaB无法显示。由此证明,矩阵A可逆,线性方程组 Ax=b 有唯一解。 接着,判断A矩阵是否是对称矩阵(其实,这步是没有必要的,因为A矩阵本身是对称矩阵,是.mm格式中的矩阵按对称阵生成的)。如果A是对称矩阵,那么 A?A T=0 。于是,令B=A?A T,并对B求∞范数。结果显示: B ∞=0,所以,B是零矩阵,也就是:A是对称矩阵。 然后,求A的三个条件数: Cond(A)= A ? A?1 所求结果是,对应于1范数的条件数为:377.2334;对应于2范数的条件数为:194.5739;对应 于3范数的条件数为:377.2334; 1

从以上结果我们看出,A是可逆矩阵,但是A的条件数很大,所以,Ax=b有唯一解并且矩阵A相对不稳定。所以,我们可以用迭代方法来求解该线性方程组,但是由于A的条件数太大迭代次数一般而言会比较多。 2Jacobi迭代法 Jacobi迭代方法的程序流程图如图所示: 图1:Jacobi迭代方法程序流程图 在上述流程中,取x0=[1,1,...,1]T将精度设为accuracy=10?3,需要误差满足: error= x k+1?x k x k+1

高斯-赛德尔迭代法解线性方程组精选.

数值分析实验五 班级: 10信计二班 学号:59 姓名:王志桃 分数: 一.实验名称 高斯-赛德尔迭代法解线性方程组 二.实验目的 1. 学会利用高斯赛德尔方法解线性方程组 2. 明白迭代法的原理 3. 对于大型稀疏矩阵方程组适用于迭代法比较简单 三.实验内容 利用Gauss-Seidel 迭代法求解下列方程组 ?????=++=-+=+-36123633111420238321 321321x x x x x x x x x , 其中取→=0)0(x 。 四、算法描述 由Jacobi 迭代法中,每一次的迭代只用到前一次的迭代值,若每一次迭代充分利用当前最新的迭代值,即在计算第i 个分量)1(+k i x 时,用最新分量)1(1+k x ,???+)1(2k x )1(1-+k i x 代替旧分量)(1k x ,???)(2k x )(1-k i x ,就得到所谓解方程组的Gauss-Seidel 迭代法。 其迭代格式为 T n x x x x )()0()0(2)0(1)0(,,,???= (初始向量), )(11111)()1( ) 1(∑∑-=-+=++--=i j i i j k j ij k j ij i ii i i x a x a b a x )210i 210(n k ???=???=,,,;,,, 或者写为 ?? ???--=???=???==?+=∑∑-=-+=+++)(1)210i 210(1111)( )1()1()()1(i j i i j k j ij k j ij i ii i i i k i k i x a x a b a x n k k x x x ,,,;,,, 五、 编码 #include #include

基于Matlab的牛顿迭代法解非线性方程组

基于Matlab 实现牛顿迭代法解非线性方程组 已知非线性方程组如下 2211221212 10801080x x x x x x x ?-++=??+-+=?? 给定初值0(0,0)T x =,要求求解精度达到0.00001 首先建立函数F(x),方程组编程如下,将F.m 保存到工作路径中: function f=F(x) f(1)=x(1)^2-10*x(1)+x(2)^2+8; f(2)=x(1)*x(2)^2+x(1)-10*x(2)+8; f=[f(1) f(2)]; 建立函数DF(x),用于求方程组的Jacobi 矩阵,将DF.m 保存到工作路径中: function df=DF(x) df=[2*x(1)-10,2*x(2);x(2)^2+1,2*x(1)*x(2)-10]; 编程牛顿迭代法解非线性方程组,将newton.m 保存到工作路径中: clear; clc x=[0,0]'; f=F(x); df=DF(x); fprintf('%d %.7f %.7f\n',0,x(1),x(2)); N=4; for i=1:N y=df\f'; x=x-y; f=F(x); df=DF(x); fprintf('%d %.7f %.7f\n',i,x(1),x(2)); if norm(y)<0.0000001 break ; else end end

运行结果如下: 0 0.0000000 0.0000000 1 0.8000000 0.8800000 2 0.9917872 0.9917117 3 0.9999752 0.9999685 4 1.0000000 1.0000000

实验解线性方程组的基本迭代法实验

数值分析实验报告

0 a 12 K a 1,n 1 K a 2,n 1 U O M 则有: 第一步: Jacobi 迭代法 a 1n a 2n M , 则有: A D L U a n 1,n Ax b A A x D b L U (D L U)x b Dx (L U)x b x D (L U)x D b 令 J D (L U) 则称 J 为雅克比迭代矩阵 f D b 由此可得雅克比迭代的迭代格式如下: x (0) , 初始向量 x (k 1) Jx (k) f ,k 0,1,2,L 第二步 Gauss-Seidel 迭代法 Ax b (D L U )x b (D L)x Ux b x (D L) Ux (D L) b A D L U a 11 a 12 L a 1n a 11 A a 21 a 22 L a 2n a 22 M MM MO a n1 a n2 L a nn a 11 得到 D a 22 O a nn 由 a 21 0 M M O a n 1,1 a n 1,2 L 0 a nn a n1 a n2 L a n,n a 21 L M M O a n 1,1 a n 1,2 L a n1 a n2 L a n,n 1 a 12 K a 1,n 1 a 1n 0 K a 2,n 1 a 2n O M M a n 1,n 10

令 G (D L) U ,则称G 为Gauss-Seidel 迭代矩阵 f (D L) b 由此可得 Gauss-Seidel 迭代的迭代格式如下: x (0) , 初始向量 第三步 SOR 迭代法 w0 AD L U 1 ( D 1 wL ((1 w)D wU )) (D 1 wL) ((1 w)D wU ) w w w 令M w 1 (D wL), N 1 ((1 w)D wU )则有:A MN w w Ax b AM L W N M (M N )x b Mx Nx b x M Nx M b N M, 令W f Mb 带入 N 的值可有 L W ((1 w)D wU) (D wL) 1((1 w)D wU) (D wL) f 1 b w 1(D wL) 1b 1 (D wL) w 称 L W 为 SOR 迭代矩阵,由此可得 SOR 迭代的迭代格式如下: x (0) ,初始向量 二、算法程序 Jacobi 迭代法的 M 文件: function [y,n]=Jacobi(A,b,x0,eps) %************************************************* %函数名称 Jacobi 雅克比迭代函数 %参数解释 A 系数矩阵 % b 常数项 % x0 估计解向量 x (k 1) Gx (k) f ,k 0,1,2,L (k 1) f,k 0,1,2,L

相关文档
最新文档