设为首页
收藏本站
切换到宽版
用户名
Email
自动登录
找回密码
密码
登录
立即注册
快捷导航
网站首页
大学课后答案
毕业设计
高中课后答案
初中课后答案
小学课后答案
赞助我们
搜索
搜索
热搜:
物理答案
英语答案
高数答案
线性代数
本版
帖子
答案家
»
论坛
›
毕业设计
›
物理|光学|声学|热学|力学
›
2018浅谈使用Matlab软件作为计算物理教学平台的优势
返回列表
查看:
1110
|
回复:
0
2018浅谈使用Matlab软件作为计算物理教学平台的优势
[复制链接]
8582079
8582079
当前离线
积分
41
1
主题
1
帖子
41
积分
幼儿园
幼儿园, 积分 41, 距离下一级还需 59 积分
幼儿园, 积分 41, 距离下一级还需 59 积分
积分
41
发消息
发表于 2018-8-22 20:16:54
|
显示全部楼层
|
阅读模式
摘要:Matlab为数值计算提供了大量功能强大的应用工具箱,使数值计算变得更加的高效。作为数值计算的软件平台,Matlab在计算物理教学中的应用能降低学生学习计算物理的难度,提高学生对计算物理的学习兴趣。
关键词:Matlab;计算物理;BCS理论;线性方程
一、引言
计算物理是伴随着计算机的出现和发展而逐步形成的物理学科,是运用计算机对所要研究的复杂物理问题进行数值计算或模拟实验,并从中探索和发现新的物理规律。因此,计算物理是物理、数学和计算机三者相结合的产物[1]。在当今的物理学各个分支领域,大量物理问题的求解都离不开计算机的辅助。可以说,计算物理的发展对物理学起着重要的推动作用。
在高等教育中,许多高校都为物理学专业本科生开设了计算物理课程。通过对该门课程的学习,学生可掌握许多科学计算中所应用的方法与技术,培养他们对科研的兴趣,并为将来开展科学研究和应用打下良好的基础。然而,对于大学本科生来说,在计算物理的学习中存在着许多的困难。首先,计算物理课程通常涉及较为复杂的数学知识,如线性代数、偏微分方程等。在传统的计算物理教学中,大部分教师把数值计算方法和原理作为教学重点和难点,使得高等数学知识基础较差的学生学习起来较为困难[2]。另一方面,计算物理课程的教学离不开计算软件。在早期的教学过程中,大部分教师都以Fortran作为软件平台进行程序的编写,要求学生具有较强的编程能力。但学生通常很难掌握和应用复杂的Fortran语言,使得计算物理教学过程中存在教与学的难度,降低了学生学习的效率[3]。随着科学的进步,许多新型计算软件的诞生为计算物理教学和学生的学习提供了便利,最为典型的就是Matlab软件在计算物理教学中的应用。
Matlab是美国MathWorks公司所开发的商业数学软件,其全称为Matrix Laboratory,意为矩阵实验室。Matlab的主要功能包括数值分析、数字图像处理、数字信号处理、工程与科学绘图和通讯系统设计与仿真等[4]。与其他数值计算软件相比,Matlab的优势主要体现在如下几方面:(1)Matlab为用户提供了高效的数值计算和符号计算功能,特别是在处理矩阵方面具有明显的优势;(2)Matlab在编程语言上较为简单,语法结构更加接近人们常用的数学表达习惯,提高了编程效率。最重要的是,Maltab内嵌了许多功能强大的应用工具箱,为用户提供了大量方便且实用的处理工具,使得一些烦琐的数值计算过程能用单个简单的命令代替;(3)Matlab具有完美的图像处理功能,让复杂的计算结果变得可视化。因此,如果将Matlab作为计算物理教学的软件平台,将有效地改变学生学习计算物理困难的现状,提高学生学习积极性的同时,也能降低高校教师的教学难度。本文将通过一些计算物理实例,进一步分析Matlab软件作为计算物理教学平台的优势。
二、Matlab在求解线性方程组中的应用
在物理学中,许多实际物理问题可用线性方程组来描述,如电学网络、分子振动、应力分析等问题,而这些线性方程组又可用转化成如下的矩阵形式
AX=B
其中X=(x1,x2,,xN)为未知数所构成的N1矩阵,A为NN的系数矩阵,而B为N1矩阵。如果矩阵A是非奇异矩阵,则方程组的解为X=A-1B。所以,非线性方程组的求解转变为求逆A-1。在线性代数中,矩阵的逆A-1=A*/|A|,这里A*为伴随矩阵。|A|为矩阵的行列式。如果利用标准的线性代数方法求NN矩阵A的行列式值[5],则必须要计算N!个乘积。对于较小的矩阵来说,通常可利用简单的数学公式求解行列式。当N较大时,尽管理论上仍然可以运用线性代数公式进行计算,但计算量非常大。以N=20的矩阵为例,如果我们的计算机每秒可做1010次运算,那么计算该矩阵的行列式要花费大约为7.7年的时间。这说明,在实际的数值计算中,不能用标准的线性代数公式做计算。此外,伴随矩阵A*的求解在数值上也不太容易实现。
Matlab为我们提供了一个计算矩阵行列式的命令――det。该命令所使用的算法为高斯消去法,其基本思想是将矩阵化为上三角或下三角矩阵,然后将对角元素相乘即可得到矩阵的行列式。我们以N=20的随机矩阵为例,发现计算该矩阵的行列式所需要的时间约为510-5秒。由此可见,Matlab所提供的命令det在计算行列式时,既高效又简单。特别的,基于高斯-约当消去法,Matlab也为我们提供了计算矩阵逆的命令――inv。因此,学生在利用这些命令求解线性方程组时,不仅可以节省计算量,而且还可以避免编写高斯消去法和高斯-约当消去法时所涉及的烦琐程序。
三、Matlab求解非线性方程的应用举例
在日常生活中,许多现象在理论上可用一些复杂的非线性方程或方程组来描述。通过求解这些非线性方程,可以深入研究这些现象背后所隐藏的物理规律。非线性方程的求解没有简单的求根公式,必须借助数值计算方法进行近似求解。对于单个非线性方程的求解,常用的数值方法有区间对分法、迭代法、搜索法及牛顿迭代法[1]。尽管这些方法能够有效地求解非线性方程,但在实际的应用中,学生很难直接利用这些算法求解较为复杂的非线性方程或方程组。Matlab为我们提供了一个求解非线性方程或方程组的命令――fsolve,该命令主要采用最小二乘法来求解非线性方程[1],其用法比较简单,学生容易学习和掌握。
为了说明利用Matlab求解非线性方程的优势,我们以BCS超导理论中的能隙方程和粒子数方程为例,其基本形式如下:
这里为a原子相互作用的s波散射长度,k为费米动量,配对序参量和化学势需要自洽求解。该方程组为非线性方程组,可以通过牛顿迭代法进行求解。牛顿迭代法的基本思想是,将两个方程在初始值附近用二元泰勒级数做展开,并取线性部分,可得到求解方程时所需要的迭代格式[1]。然而,牛顿迭代法在每一步迭代的过程中都需要计算一次雅可比行列式。对于较为复杂的非线性方程组而言,雅可比行列式的求解较为困难,程序编写过程比较复杂,以至于学生在编程过程中容易出现错误。如果直接利用Matlab的fsolve命令,则可有效避地免该问题。以下是利用fsolve求解配对序参量和化学势的Matlab程序:
clear
global k askF dk
k=linspace(0,60,601);dk=k(2)-k(1);
askF=-1;
X0=[rand,rand];
options=optimset(Display,iter);
[X,fval]=fsolve(@myfun,X0,options);
Delta=X(1);mu=X(2);
这里我们用0到1之间的随机数作为初始条件,其中子程序myfun的代码为
function Eqs=myfun(X)
global k askF dk
mu=X(1);Delta=X(2);
xi=k.^2-mu;Ek=sqrt(xi.^2+Delta^2);
Eq1=askF+2/pi*sum(k.^2./Ek-1)*dk;
Eq2=1-3/2*sum(k.^2.*(1-xi./Ek))*dk;
Eqs=[Eq1 Eq2];
作为例子,我们利用上述程序展示配对序参量和化学势随相互作用强度的变化(见图1)。由此可见,以Matlab作为平台,利用fsolve求解非线性方程组时,可使学生从烦琐的数值算法推导及编程过程中解脱出来,将精力更多地投入到物理问题的分析中。
四、总结
以线性和非线性方程的求解为例,我们说明了Matlab在计算物理教学中的优势。通过利用Matlab所提供的数值计算工具箱,可降低学生学习计算物理的难度,为计算物理教学提供便利。
参考文献:
[1]马文淦.计算物理学[M].北京:科学出版社,2005.
[2]李晓莉,张建飞.计算物理的教学改革研究与实践[J].物理通报,2010,(8):57.
[3]彭芳麟,梁颖,忻蓓.计算机软件在计算物理课程中的地位和作用[J].大学物理,2013,32(8):6.
[4]张志涌.精通Matlab[M].北京:北京航空航天大学出版社,2011.
[5]叶其孝,沈永欢.实用数学手册[M].第2版.科学出版社,2006.
回复
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
CopyRight(c)2016 www.daanjia.com All Rights Reserved. 本站部份资源由网友发布上传提供,如果侵犯了您的版权,请来信告知,我们将在5个工作日内处理。
快速回复
返回顶部
返回列表