一维含时薛定谔方程的MATLAB有限差分矩阵分解算法

合集下载

一维定态薛定谔方程求解的两种方法(matlab)

一维定态薛定谔方程求解的两种方法(matlab)

⼀维定态薛定谔⽅程求解的两种⽅法(matlab)量⼦⼒学中,薛定谔⽅程是核⼼。

薛定谔的猫描述了态的概念,但实际研究中,要想细致地研究⼀个原⼦,分⼦,甚⾄⼀块物质,都需要从薛定谔⽅程的求解开始。

下⾯将会以我的⼀次作业的题⽬为例,向⼤家展⽰整个求解过程。

薛定谔⽅程的完整形式为:以上⽅程有对时间的微分,还有对空间的微分。

⽽对于定态的薛定谔⽅程,我们只需考虑某⼀时刻的波函数,所以直接可将能量算符替代为E(⼀个常数)。

(1)分段势能法对于空间的梯度,如果只是⼀维情况的话,可以直接将梯度算符改为微分。

所以⼀维定态薛定谔⽅程就显得很简单:就是⼀个简单的⼆阶微分⽅程。

此⽅程的解想必⼀眼就可以看出来。

就是这个解是假设U(x)与x⽆关,是⼀个常数才得出这个⾃由波的解。

类似与微积分中的⽅法,对于⼀个任意势场函数,我们可以假设在某⼀个极⼩的dt范围内,势函数是不变的,因此可以将任意⼀个势函数⽤有限个⼀定宽度的恒定势场来代替。

如下图所⽰:其中的各个⼩段的波函数就可以表⽰为这样就会有2N个⽅程,然后利⽤内部的n-1个边界条件(界⾯处波函数连续,波函数的倒数连续),和两端的衔接(假设⼊射为1,则A1=1, B1=r;且最终透射端没有反射波,AN=t, BN=0. ),就可以写出2N个线性⽆关的⽅程,从⽽可以将系数都求解出来。

注意,这种情况下,我们⽆从得知基态的能量值,以及能量的分⽴的特性。

但是从这种⾓度出发,我们可以很容易计算出波在这样的势函数中传输特性,可以计算出⼊射端的反射系数R,以及不同能量所对应的⼊射波的透射系数T。

下⾯将以⼀个例⼦应⽤上述关系。

根据上图中所⽰的势函数求解薛定谔⽅程,得到透射系数和反射系数随温度的变化关系为(2)差分法现在我们从另外⼀个⾓度出发,⼀维定态薛定谔⽅程如下在这⾥,我们要求的是,可以将分为N份,采⽤数值计算⽅法,将微分⽅程变成差分⽅程。

参考相应书籍可知可以化为对于上述波函数也可以转化为类似的形式,所以可以由矩阵T的特征值对应能量,特征向量对应于波函数在每⼀个节点的解。

完整word版,一维扩散方程有限差分法matlab

完整word版,一维扩散方程有限差分法matlab

Fpg一维扩散方程の有限差分法——计算物理实验作业七 陈万物理学 2013 级 题目:编程求解一维扩散方程の解uD 2u 2 (0 x a 0 ,0 t t max ) tx u(x,t) |t 0 e x ua 1ub 1 nc 1(x 0)a 2ub 2 uc 2( x a 0 )n取 a 1 1,b 1 1, c 1 0, a 2 1, b 21, c 2 0, a 0 1.0,t max 。

输出 t=1,2,...,10 时辰の x 和 u(x), 并与解析解 u=exp(x+0.1t)作比较。

主程序:% 一维扩散方程の有限差分法 clear,clc;%定义初始常量a1 = 1; b1 = 1; c1 = 0; a2 = 1;b2 =-1; c2 = 0;a0 = 1.0; t_max = 10; D = 0.1; h = 0.1; tao = 0.1;%调用扩散方程子函数求解u = diffuse_equation(a0,t_max,h,tao,D,a1,b1,c1,a2,b2,c2);子程序 1:function output = diffuse_equation(a0,t_max,h,tao,D,a1,b1,c1,a2,b2,c2)% 一维扩散方程の有限差分法,采用隐式六点差分格式 (Crank-Nicolson)% a0: x の最大值% t:_max: t の最大值% h: 空间步长% tao: 时间步长% D :扩散系数% a1,b1,c1是( x=0)界线条件の系数; a2,b2,c2是( x=a0)界线条件の系数x = 0:h:a0;n = length(x);t = 0:tao:t_max;k = length(t);P = tao * D/h^2;P1=1/P+1;P2 = 1/P- 1;u = zeros(k,n);%初始条件u(1,:) = exp(x);%求 A 矩阵の对角元素dd = zeros(1,n);d(1,1) = b1*P1+h*a1;d(2:(n-1),1) = 2*P1;d(n,1) = b2*P1+h*a2;%求 A 矩阵の对角元素下边一行元素ee= -ones(1,n-1);e(1,n-1) = -b2;%求 A 矩阵の对角元素上边一行元素ff= -ones(1,n-1);f(1,1) = -b1;R = zeros(k,n);%求 R%追赶法求解for i = 2:kR(i,1) = (b1*P2-h*a1)*u(i -1,1)+b1*u(i -1,2)+2*h*c1;for j = 2:n-1R(i,j) = u(i -1,j-1)+2*P2*u(i -1,j)+u(i -1,j+1);endR(i,n) = b2*u(i -1,n-1)+( b2*P2-h*a2)*u(i -1,n)+2*h*c2;M = chase(e,d,f,R(i,:));u(i,:) = M';plot(x,u(i,:)); axis([0 a0 0 t_max]); pause(0.1)endoutput = u;%绘图比较解析解和有限差分解[X,T] = meshgrid(x,t);Z = exp(X+0.1*T);surf(X,T,Z),xlabel( 'x'),ylabel('t'),zlabel('u'),title( '解析解 '); figuresurf(X,T,u),xlabel('x'),ylabel('t'),zlabel('u'),title( '有限差分解 ');子程序 2:function M = chase(a,b,c,f)%追赶法求解三对角矩阵方程, Ax=f%a 是对角线下边一行の元素%b 是对角线元素%c 是对角线上边一行の元素%M 是求得の结果,以列向量形式保存n = length(b);beta = ones(1,n-1);y = ones(1,n);M = ones(n,1);for i = (n-1):(-1):1a(i+1) = a(i);end%将 a 矩阵和 n 对应beta(1) = c(1)/b(1);for i = 2:(n-1)beta(i) = c(i)/( b(i) -a(i)*beta(i -1) );endy(1) = f(1)/b(1);for i = 2:ny(i) = (f(i) -a(i)*y(i -1))/(b(i) - a(i)*beta(i-1));endM(n) = y(n);for i = (n-1):(-1):1M(i) = y(i) -beta(i)*M(i+1);endend结果:比较解析两图,结果令人满意。

matlab有限差分法

matlab有限差分法

matlab有限差分法一、前言Matlab是一种广泛应用于科学计算和工程领域的计算机软件,它具有简单易学、功能强大、易于编程等优点。

有限差分法(Finite Difference Method)是一种常用的数值解法,它将微分方程转化为差分方程,通过对差分方程进行离散化求解,得到微分方程的数值解。

本文将介绍如何使用Matlab实现有限差分法。

二、有限差分法基础1. 有限差分法原理有限差分法是一种通过将微分方程转化为离散形式来求解微分方程的数值方法。

其基本思想是将求解区域进行网格划分,然后在每个网格点上进行逼近。

假设要求解一个二阶常微分方程:$$y''(x)=f(x,y(x),y'(x))$$则可以将其转化为离散形式:$$\frac{y_{i+1}-2y_i+y_{i-1}}{h^2}=f(x_i,y_i,y'_i)$$其中$h$为网格步长,$y_i$表示在$x_i$处的函数值。

2. 一维情况下的有限差分法对于一维情况下的常微分方程:$$\frac{d^2 y}{dx^2}=f(x,y,y')$$可以使用中心差分法进行离散化:$$\frac{y_{i+1}-2y_i+y_{i-1}}{h^2}=f(x_i,y_i,y'_i)$$这个方程可以写成矩阵形式:$$A\vec{y}=\vec{b}$$其中$A$为系数矩阵,$\vec{y}$为函数值向量,$\vec{b}$为右端项向量。

三、Matlab实现有限差分法1. 一维情况下的有限差分法假设要求解的方程为:$$\frac{d^2 y}{dx^2}=-\sin(x)$$首先需要确定求解区域和网格步长。

在本例中,我们将求解区域设为$[0,2\pi]$,网格步长$h=0.01$。

则可以通过以下代码生成网格:```matlabx = 0:0.01:2*pi;```接下来需要构造系数矩阵和右端项向量。

根据上面的公式,系数矩阵应该是一个三对角矩阵,可以通过以下代码生成:```matlabn = length(x)-2;A = spdiags([-ones(n,1), 2*ones(n,1), -ones(n,1)], [-1 0 1], n, n); ```其中`spdiags`函数用于生成一个稀疏矩阵。

matlab数值薛定谔方程

matlab数值薛定谔方程

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

第4讲(4)Matlab中的矩阵分解命令

第4讲(4)Matlab中的矩阵分解命令

14—6 矩阵分解的Matlab 命令2(1)矩阵的LU 分解(2)矩阵的QR 分解(3 )矩阵的Cholesky 分解(4) 矩阵的奇异值分解(5)矩阵的特征值分解(6) 矩阵的Schur 分解(7) 矩阵的Jordan 标准型分解3(1)矩阵的LU 分解在Matlab 中用函数lu 来实现矩阵的LU 分解,其命令格式为:[L, U]=lu(X)说明:U 矩阵为上三角矩阵,满足X=L*U.4[L,U,P]=lu(X)说明:返回的P 矩阵是置换矩阵,矩阵U 是上三角矩阵,矩阵L 满秩矩阵,满足L*U=P*X.5例4.1>>a=[1,2,4;2,-1,5;-1,10,4];>> [b,c,p]=lu(a)运行结果:b =1.0000 0 0-0.5000 1.0000 00.5000 0.2632 1.00006c =2.0000 -1.0000 5.00000 9.5000 6.50000 0 -0.2105p =0 1 00 0 11 0 07(2)矩阵的QR 分解在Matlab 中,矩阵的QR 分解可由函数qr 来实现,其常用的调用格式如下:①[B,C]=qr(A)说明:返回的C 矩阵为上三角矩阵,矩阵B 为满秩矩阵。

[Q,R,E]=qr(A)说明:返回的矩阵E 是置换矩阵,矩阵R 是上三角矩阵,矩阵Q 是满秩矩阵,上述矩阵满足关系A*E=Q*R.8例4.2>> a=[1,2,4;2,-1,5;-1,10,4];>> [b,c,e]=qr(a)运行结果:b =-0.1952 -0.5068 -0.83970.0976 -0.8619 0.4976-0.9759 0.0152 0.21779c =-10.2470 -4.1964 0.97590 -6.2762 -2.24580 0 -0.0622e =0 0 11 0 00 1 010(3 )矩阵的Cholesky 分解在Matlab 中用函数chol 对矩阵进行Cholesky 分解,函数chol 的调用格式为:1.R=chol(X)说明:矩阵X 必须是正定矩阵,否则会返回错误信息,返回的矩阵R 是上三角矩阵。

一维薛定谔方程求解

一维薛定谔方程求解

一维薛定谔方程求解
薛定谔方程是研究量子力学的基本方程之一,用于描述微观粒子(如电子、原子、分子等)在时间和空间中的运动和状态。

在一维情况下,薛定谔方程可以写为:
iψ(x,t)/t = -^2/2m ^2ψ(x,t)/x^2 + V(x)ψ(x,t) 其中,ψ(x,t)是波函数,描述了粒子在时空中的状态;m是粒子的质量;V(x)是势能函数,描述了粒子在不同位置的势能。

这个方程可以通过一些数值方法来求解,例如有限差分法、谱方法等。

其中,有限差分法是一种简单易懂的数值求解方法,它将微分方程转化为差分方程,通过在空间和时间上进行离散化,用有限差分代替微分,从而得到数值解。

在求解一维薛定谔方程时,我们可以采用中心差分法或向前/向后差分法来进行空间和时间上的离散化,并利用迭代法或解析法来求解差分方程。

另外,谱方法也是一种常用的数值求解方法,它将波函数表示为一组基函数的线性组合,通过对基函数的选择和系数的计算,得到波函数的数值解。

在求解一维薛定谔方程时,我们可以选择正交多项式作为基函数,例如拉盖尔多项式、切比雪夫多项式等,利用计算机进行系数的计算,从而得到波函数的数值解。

总之,在求解一维薛定谔方程时,我们可以利用有限差分法或谱方法进行数值求解,得到粒子在时空中的波函数和状态。

这些数值解可以用来研究微观粒子的运动和相互作用,对于理解和设计材料、药物、电子器件等具有重要的理论和实际意义。

有限差分 matlab

有限差分 matlab

有限差分 MATLAB简介有限差分方法(Finite Difference Method)是一种常用的数值计算方法,用于求解偏微分方程或者常微分方程的数值近似解。

MATLAB是一个功能强大的数值计算软件,可以很方便地实现有限差分方法。

本文将介绍有限差分方法在MATLAB中的应用。

首先,我们将简要介绍有限差分方法的原理和基本思想。

然后,我们将通过一个具体的例子来演示如何使用MATLAB进行有限差分计算。

最后,我们将总结本文内容,并提供一些相关资源供读者进一步深入学习。

有限差分方法原理有限差分方法是一种基于离散化思想的数值计算方法。

它通过将求解区域划分为网格点,并利用离散点上函数值之间的差商逼近导数来近似求解微分方程。

对于一维问题,我们可以将求解区域划分为等距离的网格点,记作x0, x1,x2, …, xn。

每个网格点上函数值记作u0, u1, u2, …, un。

我们希望通过已知边界条件和微分方程来求解其他未知函数值。

有限差分法的基本思想是使用差商逼近导数。

例如,对于一阶导数,我们可以使用前向差分、后向差分或者中心差分来逼近。

其中,前向差分定义为:f'(x) ≈ (f(x+h) - f(x)) / h后向差分定义为:f'(x) ≈ (f(x) - f(x-h)) / h中心差分定义为:f'(x) ≈ (f(x+h) - f(x-h)) / (2h)类似地,我们可以使用更高阶的有限差分来逼近更高阶的导数。

对于二维问题,我们可以将求解区域划分为二维网格点,并在每个网格点上计算函数值。

然后,我们可以使用类似的方法来逼近偏导数。

MATLAB实现在MATLAB中,我们可以很方便地使用矩阵运算和向量化操作来实现有限差分方法。

首先,我们需要定义求解区域和网格点。

假设我们要求解一个一维问题,在区间[0, 1]上进行离散化。

我们可以通过指定网格点个数n和步长h来确定网格点坐标:n = 100; % 网格点个数h = 1/n; % 步长x = linspace(0, 1, n+1); % 网格点坐标接下来,我们需要定义边界条件和微分方程。

MATLAB矩阵分解算法大全

MATLAB矩阵分解算法大全

MATLAB矩阵分解算法大全1.LU分解:LU分解是一种常见的矩阵分解方法,用于解线性方程组和计算矩阵的行列式。

MATLAB中可以使用`lu`函数来进行LU分解。

以下是一个示例:```matlabA=[1,2,3;4,5,6;7,8,9];[L, U, P] = lu(A);```其中,`L`和`U`是分解后的下三角矩阵和上三角矩阵,`P`是置换矩阵。

2.QR分解:QR分解是一种用于解线性方程和计算特征值和特征向量的矩阵分解方法。

MATLAB中可以使用`qr`函数进行QR分解。

以下是一个示例:```matlabA=[1,2,3;4,5,6;7,8,9];[Q, R] = qr(A);```其中,`Q`是正交矩阵,`R`是上三角矩阵。

3. Cholesky分解:Cholesky分解是一种用于解正定对称矩阵线性方程组的方法。

MATLAB中可以使用`chol`函数进行Cholesky分解。

以下是一个示例:```matlabA=[4,2,2;2,5,4;2,4,6];R = chol(A);```其中,`R`是上三角矩阵。

4.奇异值分解(SVD):SVD是一种常用的矩阵分解方法,用于计算矩阵的奇异值和奇异向量。

MATLAB中可以使用`svd`函数进行奇异值分解。

以下是一个示例:```matlabA=[1,2,3;4,5,6;7,8,9];[U, S, V] = svd(A);```其中,`U`和`V`是正交矩阵,`S`是对角矩阵,对角线上的元素是矩阵的奇异值。

5.特征值分解:特征值分解是一种用于计算矩阵的特征值和特征向量的方法。

MATLAB中可以使用`eig`函数进行特征值分解。

以下是一个示例:```matlabA=[1,2,3;4,5,6;7,8,9];[V, D] = eig(A);```其中,`V`是特征向量的矩阵,`D`是对角矩阵,对角线上的元素是矩阵的特征值。

上述是几种常见的矩阵分解算法及其在MATLAB中的实现方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

M a r x D e o po i i n A l o ihm o t i c m s to g r t f r One di e i na — m ns o l Ti e de n n h S n e m — pe de t Sc r di g r Equa i n w i h to t Fi t i r nc nd M ATLA B ni e D 舶 e e a
WANG —e g Yi n ,TANG L— i f ibn,L UO u — h Sh n z i
( n n s tt o h s sKu m n 52 3 C ia Ku mi I t ue f yi , n ig 602 hn ) gn i P c
A b t a t A ATL src: M AB a rx d c mpo ii n a g rt m rs l i g t e o e. i e so a i e d pe d n m ti e o sto l o i h f o v n h n — m n i n l m , e n e t o d t . S h 6 i g re u to r s n e c r d n e q a i n i p e e t d.Fis l , hed s a c n i ea e d v d d i t e iso ic e en d s s r t y t it n e a d tm r i i e n o as re f s r t o e d wih e e l p c d i c e e t . S c nd y h i e i a i e i p r x m a e y b c wa d d fe e c t v ny s a e n r m n s e o l ,t e t me d rv tv s a p o i t d b a k r i r n e a d t e s a e d rv tv s a p o i a e y c n r l d fe e c ,S l s i m p ii o ma i e e c n h p c e i a i e i p r x m t d b e t a i r n e O a ca s c i l t f r t d f r n e c
s he e t c m hat s abs u e y t i ol t l s abl or he ne di e i e f t o — m nsona1 i e de nde hr ng r qua i n an tm — pe nt Sc Sdi e e t o c be
数 ,用 中心 差 分 近 似 表 示 空 间 导 数 , 由此 可 导 出 一 维含 时 薛 定 谔 方程 的古 典 隐差 分 格 式 。在 不 同 的初 始 条 件 或 初 始 / 界 条 件 下,它们 可 以 转化 成 一 个 用 矩 阵 方 程 表 示 的节 边
Hale Waihona Puke 点线性方程 组。在 每 一个 时间步 长,利 用 MA L B提供 的矩 阵左 除命 令 即可求 出各 个 TA 未 知节 点 的函数近似值 。重复该过 程,便 可获 得任 意 时间步长 下 的波 函数值 。该方 法
概念 简单,使用 方便 ,无需在编程 上花 费较 多精力 即可 求解 一 维含 时薛定谔 方程。 关 键词 : 导体 ;异质 结构 ;含 时薛定谔 方程 ;有 限差分 法; MA L B 半 TA
中图分类号 : O 7. 41 1 文献标 识码 : A D : 1. 6/ in17—75 001. 9 OI 0 99js . 2 8. 1. 0 3 .s 6 8 2 00
文 章编 号 : 17—7521)004— 6288 ( 01—000 0 4

维 含 时 薛 定 谔 方 程 的 M A AB TL 有 限 差 分 矩 阵分 解 算 法
王 忆锋 唐 利斌 罗顺 芝
( 明物理 研 究所 ,云南 昆 明 6 0 2 ) 昆 52 3
摘 要 : 介绍 了一种用 于 求解 一维含 时薛定谔方程 的 MA L B矩 阵分解 算 法。首先用 TA 等 间距 步 长 将 距 离和 时 间分 为 一 系 列 的 离 散 节 点 。其 次 ,用 向后 差 分 近 似 表 示 时 间 导
d rv d.S bs q e ty t e a e c n e t d i t h o a i e r e u t o s wh c a e e p e s d i e ie u e u n l , h y c n b o v r e n o t e n d ll a q a i n ih c n b x r s e n n
a p o i a i n o a h u k o o a m c i n c n b o v d wih t e m a rx l f di ii n c m m a d i p r x m to fe c n n wn n d l l f to a e s l e t h t i et v so o n n M ATLAB. Th r c d r e p o e u e ma e r pe t d t b a n t e wa e f n to a ue o n e ie u y b e a e o o t i h v u c i n v l s f r a y d sr d n mb r e
a m a rx e u to n e f rn n ta r iii lb un a v c n to s F re c i n r le t h t i q a in u d rdie e t iiiIo n ta / 0 d r o diin . o a h tme i c en n .t e
相关文档
最新文档