8582079 发表于 2018-8-22 20:16:54

2018浅谈使用Matlab软件作为计算物理教学平台的优势

  摘要:Matlab为数值计算提供了大量功能强大的应用工具箱,使数值计算变得更加的高效。作为数值计算的软件平台,Matlab在计算物理教学中的应用能降低学生学习计算物理的难度,提高学生对计算物理的学习兴趣。
  关键词:Matlab;计算物理;BCS理论;线性方程
  一、引言
  计算物理是伴随着计算机的出现和发展而逐步形成的物理学科,是运用计算机对所要研究的复杂物理问题进行数值计算或模拟实验,并从中探索和发现新的物理规律。因此,计算物理是物理、数学和计算机三者相结合的产物。在当今的物理学各个分支领域,大量物理问题的求解都离不开计算机的辅助。可以说,计算物理的发展对物理学起着重要的推动作用。
  在高等教育中,许多高校都为物理学专业本科生开设了计算物理课程。通过对该门课程的学习,学生可掌握许多科学计算中所应用的方法与技术,培养他们对科研的兴趣,并为将来开展科学研究和应用打下良好的基础。然而,对于大学本科生来说,在计算物理的学习中存在着许多的困难。首先,计算物理课程通常涉及较为复杂的数学知识,如线性代数、偏微分方程等。在传统的计算物理教学中,大部分教师把数值计算方法和原理作为教学重点和难点,使得高等数学知识基础较差的学生学习起来较为困难。另一方面,计算物理课程的教学离不开计算软件。在早期的教学过程中,大部分教师都以Fortran作为软件平台进行程序的编写,要求学生具有较强的编程能力。但学生通常很难掌握和应用复杂的Fortran语言,使得计算物理教学过程中存在教与学的难度,降低了学生学习的效率。随着科学的进步,许多新型计算软件的诞生为计算物理教学和学生的学习提供了便利,最为典型的就是Matlab软件在计算物理教学中的应用。
  Matlab是美国MathWorks公司所开发的商业数学软件,其全称为Matrix Laboratory,意为矩阵实验室。Matlab的主要功能包括数值分析、数字图像处理、数字信号处理、工程与科学绘图和通讯系统设计与仿真等。与其他数值计算软件相比,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的行列式值,则必须要计算N!个乘积。对于较小的矩阵来说,通常可利用简单的数学公式求解行列式。当N较大时,尽管理论上仍然可以运用线性代数公式进行计算,但计算量非常大。以N=20的矩阵为例,如果我们的计算机每秒可做1010次运算,那么计算该矩阵的行列式要花费大约为7.7年的时间。这说明,在实际的数值计算中,不能用标准的线性代数公式做计算。此外,伴随矩阵A*的求解在数值上也不太容易实现。
  Matlab为我们提供了一个计算矩阵行列式的命令――det。该命令所使用的算法为高斯消去法,其基本思想是将矩阵化为上三角或下三角矩阵,然后将对角元素相乘即可得到矩阵的行列式。我们以N=20的随机矩阵为例,发现计算该矩阵的行列式所需要的时间约为510-5秒。由此可见,Matlab所提供的命令det在计算行列式时,既高效又简单。特别的,基于高斯-约当消去法,Matlab也为我们提供了计算矩阵逆的命令――inv。因此,学生在利用这些命令求解线性方程组时,不仅可以节省计算量,而且还可以避免编写高斯消去法和高斯-约当消去法时所涉及的烦琐程序。
  三、Matlab求解非线性方程的应用举例
  在日常生活中,许多现象在理论上可用一些复杂的非线性方程或方程组来描述。通过求解这些非线性方程,可以深入研究这些现象背后所隐藏的物理规律。非线性方程的求解没有简单的求根公式,必须借助数值计算方法进行近似求解。对于单个非线性方程的求解,常用的数值方法有区间对分法、迭代法、搜索法及牛顿迭代法。尽管这些方法能够有效地求解非线性方程,但在实际的应用中,学生很难直接利用这些算法求解较为复杂的非线性方程或方程组。Matlab为我们提供了一个求解非线性方程或方程组的命令――fsolve,该命令主要采用最小二乘法来求解非线性方程,其用法比较简单,学生容易学习和掌握。
  为了说明利用Matlab求解非线性方程的优势,我们以BCS超导理论中的能隙方程和粒子数方程为例,其基本形式如下:
  这里为a原子相互作用的s波散射长度,k为费米动量,配对序参量和化学势需要自洽求解。该方程组为非线性方程组,可以通过牛顿迭代法进行求解。牛顿迭代法的基本思想是,将两个方程在初始值附近用二元泰勒级数做展开,并取线性部分,可得到求解方程时所需要的迭代格式。然而,牛顿迭代法在每一步迭代的过程中都需要计算一次雅可比行列式。对于较为复杂的非线性方程组而言,雅可比行列式的求解较为困难,程序编写过程比较复杂,以至于学生在编程过程中容易出现错误。如果直接利用Matlab的fsolve命令,则可有效避地免该问题。以下是利用fsolve求解配对序参量和化学势的Matlab程序:
  clear
  global k askF dk
  k=linspace(0,60,601);dk=k(2)-k(1);
  askF=-1;
  X0=;
  options=optimset(Display,iter);
  =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=;
  作为例子,我们利用上述程序展示配对序参量和化学势随相互作用强度的变化(见图1)。由此可见,以Matlab作为平台,利用fsolve求解非线性方程组时,可使学生从烦琐的数值算法推导及编程过程中解脱出来,将精力更多地投入到物理问题的分析中。
  四、总结
  以线性和非线性方程的求解为例,我们说明了Matlab在计算物理教学中的优势。通过利用Matlab所提供的数值计算工具箱,可降低学生学习计算物理的难度,为计算物理教学提供便利。
  参考文献:
  马文淦.计算物理学.北京:科学出版社,2005.
  李晓莉,张建飞.计算物理的教学改革研究与实践.物理通报,2010,(8):57.
  彭芳麟,梁颖,忻蓓.计算机软件在计算物理课程中的地位和作用.大学物理,2013,32(8):6.
  张志涌.精通Matlab.北京:北京航空航天大学出版社,2011.
  叶其孝,沈永欢.实用数学手册.第2版.科学出版社,2006.
页: [1]
查看完整版本: 2018浅谈使用Matlab软件作为计算物理教学平台的优势