Matlab在固体物理中的应用_第1页
Matlab在固体物理中的应用_第2页
Matlab在固体物理中的应用_第3页
Matlab在固体物理中的应用_第4页
Matlab在固体物理中的应用_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Matlab在固体物理中的应用编号:河南大学2014届本科毕业论文Matlab在固体物理中的应用论文作者姓名:作者学号:1003618013所在学院:所学专业:电子信息科学与技术导师姓名职称:论文完成时间:2014年04月23日目录摘要:0前言21固体物理的发展21.1 关于固体物理的知识21.2 固体物理的新发展及应用32关于MATLAB32.1 MATLAB的基本知识32.2 MATLAB的实例52.3 MATLAB的优势63紧束缚模型73.1紧束缚模型中二维晶格等能面74倒格子84.1 二维晶格的倒格子84.2 体心立方倒格子84.3 面心立方倒格子94.3简单六角晶系的倒格子95MAT

2、LAB对紧束缚模型及其倒格子的模拟仿真95.1 matlab对倒格子的模拟仿真115.2 紧束缚模型中二维晶格的模拟仿真176结论19参考文献20MATLAB在固体物理中的应用摘要:固体物理是从不同角度描述固体的结构和性质,是比较抽象的。MATLAB,flash,Photoshop等可以用来模拟其物理过程,所以本文将matlab应用固体物理的倒格子和紧束缚模型中将结果可视化。关键词:固体物理MATLAB仿真TheapplicationofmatlabinsolidphysicsSolidstatephysicsdescribesthestructureandpropertiesofsolidf

3、romdifferentangles,itisabstract.MATLAB,flash,photoshop,etc.Canbeusedtosimulatethephysicalprocess,sothispaperappliesMATLABtosolidstatephysicsandtight-bindingmodelwillbetheresultofgridvisualization.Keywords:Solidphysicsmatlabimitateo前言固体物理是从原子,分子,电子等不同角度来研究粒子的运动,及固体物理的性质和微观结构。它与我们学习过的半导体物理学、量子力学、大学物理等

4、都有紧密联系,而且是各学科间的桥梁。固体物理学很多都是建立在经典模型上的,因此它的内容是比较抽象的,而且也比较难理解的。现在随着可技术科学的飞速发展,许多计算机软件都可以应用在固体物理的模拟及其仿真方面。其中,MATLAB的功能是非常强大的,因此,针对固体物理复杂的特点,我们可以用MATLAB软件使其物理过程可视化,也是它的结论更加直观的呈现。1固体物理的发展人们对固体物理的认识是逐步的。固体可以分为晶体和非晶体,现在人们主要研究的是晶体。1.1 关于固体物理的知识1850年布喇格导出了7大晶系14种布喇菲格子。1890年费奥多罗夫,1891年熊夫利,1895年巴洛他们建立了晶体对称性的群理论

5、。这都为固体物理学得发展提供了深远的影响。劳厄在1912年通过晶体X光衍射的实验,确定了单晶体的对称性,即晶体内原子的周期性排列的结构。但这个实验没有确定晶体的晶格常数,后来旋转单晶法可具体测定晶体的晶格常数。.舒布尼科夫在20世纪50年代建立了磁有序晶体的对称群理论。原子结合成晶体时,原子的外层电子要作重新分布。外层电子的不同分布产生了不同类型的结合力。不同类型的结合力,就会产生晶体结合的不同类型,主要有:共价结合,离子结合,金属结合,分子结合,氢键结合。结合力的共性:库仑力是原子间结合的动力,而且是长程力。晶格振动与晶体的热学性质。一维复式格子的振动可以得到长声学波和长光学波。晶格振动所形

6、成的波,而且这种波的能量量子称为声子。它对固体的比热容和热导等性质起重要作用。在1907年。爱因斯坦用量子理论处理固体中原子的振动,他假设晶体中所有原子都以相同的频率做振动,他的这个假设非常简单,但是他忽略了谐振子之间的差异;1912年德拜把格波作为弹性波来处理,在低温时,德拜热容模型与实验相符。晶体的缺陷:原子绝对的按晶格的周期性排列的晶体是不存在的,实际的晶体都会存在一点缺陷,按缺陷的形态:有点缺陷,面缺陷,线缺陷。原子的热运动会造成点缺陷。在平衡时,缺陷的数目是一定的。而且缺陷的扩散不仅受晶格周期性影响,它还会发生复合现象。晶体中电子的能带理论。布洛赫和布里渊他们分别从不同角度研究了周期

7、场中电子运动的基本特点,为固体电子的能带理论奠定了基础。在一定能量范围内准连续的能及组成的能带称为电子的本征能量。我们在学习一维晶格中的近自由电子模型的结论,我们可以得到电子在行进过程中受到起伏的势场的散射作用。相邻两个能带之间的能量范围内是不能有能量,称为禁带。1931年,威尔逊利用能带的特征以及泡利不相容原理提出来绝缘体与金属能带模型的区别,并说存在半导体,为以后半导体的发展提供了理论。电子是遵守费米统计的,价电子对金属热容量贡献很小的原因就是因为费米统计的约束。人们对金属的电导,热导等电子的输运特性的分析可以利用费米统计和能带理论,而且从理论上解释了纯金属电阻率的实验规律。1.2 固体物

8、理的新发展及应用随着现在科学技术的发展,为固体物理开拓出了新的研究领域。核物理技术,磁共振技术,材料制备的新技术等现代技术发展,都为固体物理提供了新的研究方向。固体物理学是微电子技术,能源技术,材料学,光电子技术等学科的基础。而且固体物理学的成就对生物物理学,化学物理学等方面也有影响,并正在形成新的交叉领域。固体物理它比较难以理解,我们用MATLAB来模拟,可以使他更加直观。接下来就介绍一下matlabo2关于MATLABMatlab是matrix和laboratory两个单词的组合,是矩阵实验室。它运用非常广泛,可以进行矩阵运算,创建用户界面,还可以绘制函数等。它们主要运用于信号处理与检测,

9、工程计算,信号检测等领域。Matlab吸收了像maple等软件的的优势,因此它是一个强大的数学软件。因此本文将matlab应用于固体物理中的紧束缚模型中对其模拟及仿真。在模拟仿真之前我们应该先了解matlab的一些基本知识。2.1 matlab的基本知识MATLAB它是一种交互式的以矩阵为基础的系统计算平台。它主要运用于科学和工程计算和复杂问题的可视化。它也标志着计算机语言向“智能化”方向发展。2.1.1 MATLAB的联机帮助命令Helpplotxyz是显示有关三维作图的指令信息。2.1.2 MATLAB的m文件matlab基础与实践教程我们在MATLAB窗口输入数据和命令进行计算时,当处理

10、复杂问题和大量数据时就不方便。此时,就需要编辑m文件。Matlab语句构成的程序存储成以m为扩展名的文件,然后再执行该程序文件,这就是程序文件模式。而且程序文件不能再指令窗口下建立因为指令窗口一次执行一行上的几个语句或者一个语句。创建m文件,它是一个普通的文本文件,我们可以系统认可的文本文件编辑器建立m文件。M文件的语法与c语言类似,但也有不同。它只是简单的ASCII码文件,他在执行的过程中是逐行运行程序的,它是解释性的编程语言。M文件包含两类:1、可调用的m文件,即函数文件;2、独立的m文件,即命令文件。MATLAB中有自定义的函数文件,称它为内置函数文件。调用时,使用函数名并给出相应的入口

11、出口参数即可。函数的m文件需要输入变量,返回输出变量。用户可以根据需要编辑自己的的m文件。可以像库函数一样方便调用,这样就扩大啦MATLAB的功能。M文件有它的格式也有特定的规则:格式:function返回变量=函数名(输入变量)注释说明语句段程序语句段规则:m文件第一行必须以单词function作为开始,即Functionv因变量=v函数名(v自变量,)M文件它的文件名必须是v函数名.m程序中的变量都是局部变量,没有保存在空间中的变量只有在函数运行其间有效。命令文件是简单的m文件,它实际上是一串指令的集合。与在命令窗口逐行执行文件中的所有命令是一样的,并且没有输入输出参数。2.1.3 MAT

12、LAB文件的类型数据文件.matMATLAB中的mat文件是以标准的二进制格式保存的数据文件,可以将空间中有用的数据保存起来。Mat文件它的生成和调用是有函数load和save完成的。M文件。Plot是基本的二维绘图命令,Matlab的二维绘图函数绝大部分是以Plot为基础的。函数Plot最基本的调用格式为:Plot(x,y)。引用网其它二维绘图函数还有等值线的绘制,可以使用Contouri函数。其调用格式:contour(x,y,z)同时MATLAB还有三维绘制函数功能,函数为Plot3,其调用格式为:Plot3(x,y,z,选项)要绘制三维表面图时,可以使用SurfSEIPatch数,调用

13、格式分别为:Surf(x,y,z,c)Pateh(x,y,z,c)Matlab可以绘制很多函数。一个任务,Matlab也有多种方法、函数可以选择,这为我们的运用提供了方便2.2 matlab的实例我们可以通过几个例子来看一下MATLAB的功能。例如:用matlab来绘制正弦函数sinx和余弦函数cosx的图像。»x=l:40;»yl=sin(pi*x/4);»y2=cos(pi*x/8);»piot(x,yi,x,y2,c,r)执行结果如图1所示。53 D325 刘1510三角面效s 4 2 o 工 4 6 0c o Q o Q-Og-O.Q图1正弦函数

14、sinx和余弦函数cosx的图像例二:利用for循环求1!+2!+3!+4!+5!的值。sum=0;fori=l:5pdr=l;fork=l:ipdr=pdr*k;end这样可以在MATLAB中求出sum的值。2.3 matlab的优势Matlab最大的特点就是简单和直接,而且运算功能强大。1.1 .1绘图功能方便MATLAB有一系列的绘图命令,我们在绘制图形时只需要调用相应的绘图指令,然后在图形中标出图题等。MATLAB它具有完备的图形处理功能,它可以将复杂的问题通过图形传递给我们,实现计算结果和编程的可视化。MATLAB这种绘图功能是其他编程语言所不具有的。1.2 具有强大的数据处理功能M

15、ATLAB和maple,mathematica它们并称为三大数学软件。由此可以得知它的运算功能很强大。它包含了大量计算算法。包括工程中用到的数学,运算函数等其它满足用户的各种所需要的计算。它可以代替c语言和C+等。若是在同样的情况下我们用MATLAB的编程的工作量远低于其他软件编程,它可以从最简单最基本的函数到傅里叶变换,矩阵等复杂的函数。线性方程的求解,微分方程的求解,傅里叶变换,工程中的优化问题以及其他初等函数运算,二维,三维数组操作,还有建模模拟仿真等我们都可以通过MATLAB强大的数据处理能力解决。1.3 简单比较好用Matlab语言中最基本的就是函数。对于同一函数名,输入不同数目的变

16、量或者输出变量的数目不同就代表着不同的含义,这样MATLAB的库函数功能功能就会变的非常丰富,而且也会减少所需要用的空间,这样就会使MATLAB编写的M文件简单,短小并且高效。开放式可扩充结构,用户可以根据自己的意愿随意的更改。因此MATLAB的应用越来越广泛。3紧束缚模型为了在MATLAB模拟仿真时,可以更加容易理解,先了解几个固体物理的知识。在王矜奉固体物理教程的能带理论中包含紧束缚模型,在此可以简要分析紧束缚模型中二维晶格的等能面。3.1紧束缚模型中二维晶格的等能面等能面:K空间内,电子的能量等于定值的的曲面我们称为等能面。对于自由电子,它的能量为救二,所以此时它的等能面是一些同心球面,

17、2m而费米面是对应能量为以的等能面。在一维近自由电子近似时,我们知道将势场看作是晶格的周期函数,而且便于计算将势场展开成傅立叶级数V(r)=2>(K/X即/在波矢空间内,布洛赫函数是倒格矢的周期函数,因此将布洛赫函数在波矢空间也展成便立叶级数,即0叫(凡八(3=一一对上式乘以而'并对第一布里渊区波矢求和,得到工产Walk,埒Wa(Rltir)=-y=由布洛赫函数的平移特性可以知道T(一凡)(4,r)=Wa(k,r-R)=产y/a化r)故可得Z仁 化 f)W。区= 一当晶体中原子的间距较大时,被束缚在原子附近的几率比远离原子的几率大,此时的行为与自由电子近似。此时取力化一凡)=(%

18、)檀(一凡),即得z产媛(一凡)到零级近似九化r)=结合薛定谤方程,并经一系列计算可以得到S态紧束缚电子的能带Es(k)=E?-CJsZ噩对于边长为"的二维正方晶格的情况,取坐标轴沿正方形边长,则最近邻的坐标应该为(土,.。)(0,±),由此可以计算出二维晶格的紧束缚模型能量:Es(%)=成一G-2Js(cosk+c0sA凶)4倒格子倒格子是由倒格矢基矢在空间平移形成的,那么重点就是怎么求解倒格子基矢。下面我们将要分别讨论二维晶格的倒格子,面心立方,体心立方晶格的倒格子以及简单六角晶格的倒格子。4.1二维晶格的倒格子对二维晶格的倒格子,我们可以把二维晶格正格子基矢记为:人a

19、=aia】=bj其中代表惯用晶胞的边长,仃代表正交单位基矢;由于在计算倒格子时根据公式需要有耳,瓦人设的=八因此计算晶胞的体积为:由倒格基矢的计算公式我们可以得到二维晶格得倒格矢为:772万r24二4丁;b2=由倒格子基矢和正格子基矢对比我们可以知道二维晶格的倒格子仍然是二维晶格。4.2 体心立方的倒格子体心立方晶格的正格子基矢可以写为:其中a是惯用晶胞的边长,7,J,不代表与x,y,z轴平行的单位基矢。其中我们可以根据晶胞体积的计算公式得:根据倒格矢的计算公式我们可以得到体心立方基矢:6=子(+不;瓦=殳+斗瓦=茨+)。由5,%,仄我们可以知道体心立方晶格的倒格子是面心立方晶格。4.3 面心

20、立方晶格的倒格子面心立方正格子的基矢可记为:可由此可以计算原胞的体积:V=R(区xZ)|=;/。根据倒格基矢的计算公式我们可以得到倒格基矢:瓦=*+网;瓦=冢小斗瓦勺-田。根据以上公式可以得出面心立方晶格的倒格子是体心立方晶格。4.4 简单六角晶系的倒格子六角晶系正格子的基矢可记为:区=9(一技+);根据正格子基矢我们可以求出原胞的体积V =4 伍X根据倒格矢的计算公式,可以求出倒格基矢:b3 = -k.cA=岩(;+0)也=患1;+6),我们得到了六角晶格的倒格子基矢,根据公式我们可以得到六角晶系的倒格子仍然是六角晶系。5matlab对紧束缚模型以及倒格子的模拟仿真5.1 matlab对倒格

21、子的模拟仿真5.1.1 对二维晶格倒格子的模拟仿真由上述二维晶格倒格矢的公式。二维晶格的MATLAB程序如下:functionHX()b=l;bl=(2*pi/a)*lA0;b2=(2*pVb)*0,l,0;pd(l,l:2)=0,0,0;fordd=l:4H=size(pd,l);k=l;fori=l:Hforj=l:2pl(J)=pd(iJ)+bl(J);endplot(pd(l,l),pl(l),pd(U),pl(2),ro');holdon;plot(pd(l,l),pl(l),pd(U),pl(2);holdon;pdt(k4:2)=pl;k=k+l;forj=l:2p2(J

22、)=pd(iJ)+b2(j);endplot(pd(l,l),p2(l),pd(i,2),p2,To');holdon;plot(pd(i,l),p2(l),pd(i,2),p2(2);holdon;pdt(kj:2)=p2;k=k+l;endpd=pdt;endend执行上述程序,所得图像如图2所示。|OOOFigure2File_Edit_View_Insert_Tools_Desktop_Window_Help»3Jg1%':4公口口目图2二维晶格倒格子由图2可以得到二维晶格的倒格子仍然是二维晶格,只是二维晶格的边长不同。通过图2的仿真图,我们可以比较直观的看到

23、结果,便于我们理解。5.1.2 体心立方晶格的倒格子体心立方晶格倒格子的MATLAB程序代码如下:functionHX()a=l;al=(2*pi/a)*0,14;a2=(2*pi/a)*l,041;a3=(2*pi/a)*l,l,0;pd(l,l:3)=0,0,0;fordd=l:4H=slze(pd,l);k=l;fori=l:Hforj=l:3pl(J)=pd(iJ)+al(J);endplot3(pd(i,l),pl(l),pd(i,2),pl(2),p(l(i,3),pl(3),ro,);holdon;holdon;pdt(kj:3)=pl;k=k+l;forJ=l:3p2(J)=p

24、d(iJ)+a2(J);endplot3(pd(i,l),p2(l),pd(i,2),p2(2),pd(i,3),p2(3),ro,);holdon;plot3(pd(i,l),p2Mpd(l,2),p2(2),pd(i,3),p2C3);holdon;pdt(k,l:3)=p2;k=k+l;forj=l:3p3(j)=pd(ij)+a3(j);endplot3(p(l(i,l),p3(l),pd(i,2),p3(2),pd(i,3),p3(3),ro,);holdon;plot3(pd(i,l),p3,pd(l,2),p3(2),pd(in),p3(3)D;holdon;pdt(k,l:3)

25、=p3;k=k+l;endpd=pdt;end执行上述程序,所得图像如图3所示。体心立方晶格的倒格子由图3可以得到体心立方晶格的倒格子是面心立方。图3比较直观的将其结果展示出来。5.1.3 面心立方晶格的倒格子面心立方晶格的倒格子MATLAB代码如下:functionHX()b=l;bl=(2*pVa)*-l,141;b2=(2*pi/a)*l,-l,l;b3=(2*pi/a)*l,l,-l;pd(l,l:3)=0,0,0;fordd=l:4H=slze(pd,l);k=l;fori=l:Hforj=l:3pl(J)=pd(iJ)+bl(j);endplot3(pd(i,l),pl(l),pd

26、(i,2),pl(2),pd(i,3),pl(3),ro,);holdon;plot3(pd(i,l),pl,pd(l,2),pM2),pd(i,3),pl(3);holdon;pdt(kj:3)=pl;k=k+l;forj=l:3p2(J)=pd(iJ)+b2(j);endplot3(pd(l,l),p2(l),pd(i,2),p2(2),pd(i3),p2(3),ro,);holdon;plot3(pd(i,l),p2(l),pd(i,2),p2(2),pd(i,3),p2(3);holdon;pdt(k,l:3)=p2;k=k+l;forJ=l:3p3(j)=pd(ij)+b3(j);e

27、ndplot3(pd(i,l),p3(l),pd(i,2),p3(2),pd(i,3),p3(3)/ro,);holdon;plot3(pd(i,l),p3(l),pd(i,2),p3(2),pd(i,3),p3(3);holdon;pdt(k,l:3)=p3;k=k+l;endpd=pdt;endend执行上述程序,所得图像如图4所示。面心立方晶格的倒格子由图4可以得到面心立方晶格的倒格子是体心立方。图4比较直观的将其结果展示出来。5.1.4 六角晶格晶格的倒格子functionHX()b=l;bl=(2*pi/a*V3)*l,技0;b2=(2*pVa*也也,0;b3=(2*pi/c)*0,

28、0,l;pd(l,l:3)=0,0,0;fordd=l:4H=slze(pd,l);k=l;fori=l:Hforj=l:3pl(J)=pd(iJ)+bl(j);endplot3(pd(i,l),pl(l),pd(i,2),pl(2),pd(i,3),pl(3),ro,);holdon;plot3(pd(i,l),pl(l),pd(i,2),pl(2),pd(i,3),pl(3);holdon;pdt(kj:3)=pl;k=k+l;forj=l:3p2(J)=pd(iJ)+b2(j);endplot3(pd(l,l),p2(l),pd(i,2),p2(2),pd(i3),p2(3),ro,);

29、holdon;plot3(pd(i,l),p2(l),pd(i,2),p2(2),pd(13),p2(3);holdon;pdt(k,l:3)=p2;k=k+l;forJ=l:3p3(j)=pd(ij)+b3(j);endplot3(pd(i,l),p3(l),pd(i,2),p3(2),pd(i,3),p3(3),ro,);holdon;plot3(pd(iJ),P3(l)4pd(i,2),p3(2)Jpd(i,3),p3(3);holdon;pdt(k,l:3)=p3;k=k+l;endpd=pdt;endEnd执行上述程序,所得图像如图5所示。CQFigure1FileEditViewI

30、nsertToolsDesktopWindowHelp,J二d#4二3a%ca00Q图5六角晶格晶格的倒格子由图5matlab仿真图可以知道六角晶格的倒格子仍然是六角晶格,只是边长不同。5.2 紧束缚模型中二维晶格的模拟仿真由前边介绍的内容,我们得到二维晶格的能量Eo=Jjdxdy(pa;(x,y)心,y)-K"(x,y)R;(>0由紧束缚模型能量公式可以得到能带宽度为8E。取能带底部能量的值为0。£=-灯dxdy(p(''x+a、y版"+u(x,y(x,y)卜"(x,y).=-jpW,娉(x+a,y+a)归;"+,),)

31、-叫x,y)k”(x,),)同E一样,M一般大于零。令=与,E,E,依次为中心原子S态波函数与石2最近邻及次紧邻原子s态波函数的交叠的能量积分。我们可以通过matlab来完成其仿真图。二维晶格紧束缚能量等能面的matlab程序如下:# defineEN(n,kx,ky)(015/n+015-0125*(cos(kx)+cos(ky)-015/n*cos(kx)*cos(ky)# definecoskx(E,n,ky)(4*n+4-E-2*n*cos(ky)/(2*n+4*cos(ky)# definecosky(E,n,kx)(4*n+4-E-2*n*cos(kx)/(2*n+4*cos(kx)#definepi3114159265intirange;floatfn;voiddraw(floate)(intx,y;floatkx,ky,coskx,cosky;boolbflrst=true;for(x=0;x<=irange;x+)(kx=x*pi/irange;cosky=cosky(e,fn,kx);if(fabs(cosky)<=110)(ky=acos(cosky);y=ky*irange/pi;if(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论