第1章绪论
在过去的半个世纪里,随着半导体集成电路技术的发展,电子计算机的性能也不断增强。在数值计算方法的辅助下,计算机的应用渗透到物理科学和工程计算的各个方面,从而诞生了一门新兴的交叉学科,这就是计算物理学。计算物理学是物理学、数学和计算机科学三个学科相互交叉的研究领域。计算物理学就是以计算机的性能为基础,利用数值计算方法解决复杂物理问题的一门应用科学。在历史上,实验物理和理论物理曾是物理学的两个主要研究手段。目前,随着计算机性能的突飞猛进,计算物理学已经成为复杂物理体系性质研究的一个重要手段,对物理学的发展起着越来越大的推动作用。
1.1计算物理学的起源与发展
1.计算物理学的诞生
19世纪中叶以前,物理学还基本上是一门基于实验的科学,也就是通过实验直接观察物理现象,并通过实验现象来总结宇宙中隐藏的物理规律。1862年,麦克斯韦(Maxwell)将电磁规律总结为麦克斯韦方程组,进而在理论上预言了电磁波的存在,这使人们看到了物理理论思维的巨大威力,从此,理论物理开始成为一门相对独立的物理学分支。理论物理要做的就是把自然规律用数学模型(可以理解为公式)的形式展示出来,推导和总结出基本物理理论,并从基本物理理论出发,解释已有的物理现象或者预言可能发生的现象。到了20世纪初,物理学理论经历了两次重大突破,相继诞生了量子力学和相对论,理论物理开始成为一门成熟的学科。传统意义上的物理学便具有了理论物理和实验物理两大支柱,物理学便成为理论物理和实验物理密切结合的学科。正是这种“理论和实践相结合”的探索方式,大大促进了物理学的发展,并引发了20世纪科学技术的重大革命。这个革命对人类的社会生活产生了重大影响,其中一个重要方面就是电子计算机的发明和应用。
计算物理,作为物理学发展的另一个重要支柱,诞生于20世纪40年代。第二次世界大战期间,人类在研究和制造原子核武器的过程中,就采用过计算物理学的方法。当时的情况是:一方面由于原子核材料U235的数量有限,不能满足多次试验的需要;另一方面描述与核试验相关物理过程的方程组相当复杂,以至于用传统的数学物理方法不能进行求解。于是,当时科学家们不得不动用了数字计算机,这可算作是计算物理学的开端。在此后将近半个世纪的时间里,计算机技术的迅速发展又为计算物理学的成熟打下了坚实的基础,大大增强了人们从事科学研究的能力,促进了各个学科之间的交叉渗透,使计算物理学得以蓬勃发展。
在物理学中,解决物理问题的关键是:用基本的物理理论将研究对象抽象成各种物理模型。此外,还必须对各种物理模型(往往是一些数学方程)所对应的体系的行为给出精确的描述。不幸的是,很多问题无法得到解析解,或求解析解的过程过于复杂,如:经典力学中的多体问题;量子力学中,除少数极端近似外的几乎所有问题。此时,必须使用数值计算的方法来求解这类问题。计算物理学就是这样一门研究数值计算的学科,它使用可行的数值计算方法(算法)与有限的计算步数,利用计算机操作、演算,得到相应的近似解。如果要给计算物理学下一个定义,计算物理学(computational physics)就是研究如何使用数值方法分析可以量化的物理学问题的学科。计算物理学的发展,大大缓解了人们在研究和应用复杂物理体系时的限制。同时,也应该认识到,虽然使用了计算物理的研究方法,物理问题也时常难以求解。这通常由如下几个(数学)原因造成:物理研究对象复杂度过高、缺少相应算法以及无法对数值解进行相应分析。
2.计算物理学与实验物理学、理论物理学的关系
计算物理学与实验物理学、理论物理学保持着相对的独立性。实验物理学是以实验和观测为基本手段来揭示新的物理规律、检验理论物理推论的正确性及应用范围,为理论物理学研究的进一步深入奠定基础。理论物理学是从一系列的基本物理原理出发,列出数学方程,再用传统的数学分析方法求出解析解。通过这些解析解所得到的结论与实验观测结果进行对比分析,从而解释已知的实验现象并预测未来的发展。计算物理学则是计算机科学、数学和物理学三者间新兴的交叉学科,其主要研究内容是如何以高速计算机作为工具,解决物理学中的计算问题。计算物理学以解决复杂物理问题的求解能力,成为物理学的第三研究支柱,在物理学研究中占有重要的位置。
计算物理学与理论物理学、实验物理学有着密切的联系。一方面,计算物理学所依据的理论原理和数学方程是由理论物理学提供的,其结论还需要理论物理学来分析检验;另一方面,计算物理学所依赖的计算参数是由实验物理学提供的,其结果也要由实验来检验。对理论物理学而言,计算物理学可以为理论物理学研究提供数据支持,为理论计算提供数值和解析运算的方法和手段;对实验物理学而言,计算物理学可以帮助解决实验数据的分析以及模拟实验过程等问题。总之,计算物理学是与理论物理学、实验物理学互相联系、互相依赖、相辅相成的,它为理论物理学研究开辟了一个新的途径,也对实验物理学研究的发展起了巨大的
1.2计算机编程语言和软件推动作用。
3.计算物理学与计算机技术、数值计算方法的关系
计算物理学是物理学与计算机技术及数值计算方法交叉融合的结果。首先,计算物理学以解决物理问题为唯一目的。计算物理学与数值分析不同,它以物理问题为出发点,以揭示物理系统发展规律和变化结果为目标。在用计算物理学处理问题时,只要保持系统的基本物理本质和物理条件不变,就可以利用物理学研究方法直接建立更加简便实用的数值计算方法,而不必拘泥于严格数值分析理论的限制。其次,计算机技术和数值计算方法的发展,推动了计算物理学的不断进步。计算机存储能力的快速提升和运算速度的持续提高,使物理大系统复杂过程的数值处理成为可能,新的数值计算理论的不断涌现,进一步改善了数值计算的效率和精度,保证了计算物理学研究能力的稳步提升。*后,计算物理学的进步也为计算机科学与技术的发展构建了坚实的基础。计算物理学的进展及由此带来的新技术与新材料为计算机科学与技术的突飞猛进提供了理论与物质支撑,计算物理学研究对数值计算方法和仿真技术的迫切需求也促进了计算机科学与技术的进步。
1.2计算机编程语言和软件
1.常用编程语言和软件简介
计算物理学是以计算机为工具,通过编程语言或特定软件来解决物理问题。计算物理学*常用的计算机编程语言是FORTRAN,这些年来MATLAB软件和C语言使用得也越来越广泛。另外,物理问题的计算结果往往需要进行数据绘图和数据分析,需要用到以Origin为代表的绘图软件。下面简单介绍一下FORTRAN语言、Origin软件和MATLAB软件。
1)FORTRAN语言
FORTRAN语言是世界上广泛流行的、*适于数值计算的一种计算机语言,是世界上*早出现的高级程序设计语言。从1954年第一个FORTRAN版本问世至今,已有60多年的历史,但它并不因为古老而显得过时,随着时间的推移它也在不断发展,也在不断借鉴其他新兴计算机语言的优点。另外,这么多年来,在各个领域,特别是在科学工程计算领域,积累了大量成熟可靠的FORTRAN语言代码,由于许多研究工作的继承性,在未来相当长的一段时间里,使用FORTRAN语言进行复杂科学工程计算与分析的程序设计和软件开发,仍然有着其独*的优势。现在许多过程模拟计算、有限元分析、分子模拟等大型软件程序,都以FORTRAN语言编写的程序作为软件的核心程序。另外,FORTRAN语言有IMSL数学和统计库可供直接调用,为开发和优化大型复杂计算程序提供了便利手段。
2)Origin软件
FORTRAN语言或C语言的数据绘图和数据分析的功能有限,在这些语言平台上编写和运行程序后,往往需要将其数据结果导出,通过专业数据绘图软件对计算结果进行可视化。Origin*初是一个专门为微型热量计设计的软件工具,主要用来将仪器采集到的数据作图,进行线性拟合以及各种参数计算,后来,Origin发展成为一款优秀的数据绘图与数据分析软件。Origin具有简单易学、操作灵活和功能强大的特点,既可以满足一般用户的数据绘图需要,也可以满足高级用户数据分析、函数拟合的需要,是科研人员和工程师常用的高级数据分析和数据绘图工具。
Origin具有两大主要功能:数据分析和数据绘图。Origin的数据分析主要包括统计、曲线拟合、图像处理、峰值分析和信号处理等各种完善的数学分析功能。准备好数据后,进行数据分析时,只需选择所要分析的数据,然后再选择相应的菜单命令即可。Origin的绘图是基于模板的,Origin本身提供了几十种二维和三维绘图模板。绘图时,只要选择所需要的模板就行。用户也可以自定义数学函数、图形样式和绘图模板。Origin支持导入多种格式的数据,同时,可以把图形输出到多种格式的图像文件,譬如JPEG、GIF、EPS、TIFF等。Origin里面也具有一些编程功能,以方便进行功能拓展和执行批处理任务。
3)MATLAB语言
20世纪70年代末,新墨西哥大学莫勒尔教授为了让学生更方便地使用LINPACK及EISPACK(需要通过FORTRAN编程来实现,但当时学生们并无相关知识),独立编写了第一个版本的MATLAB。这个版本的MATLAB只能进行简单的矩阵运算,例如矩阵转置、计算行列式和本征值。1984年,莫勒尔等合作成立了MathWorks公司,正式把MATLAB推向市场,目前MATLAB每年都有*新版本推出。
起源于矩阵运算的MATLAB语言是当今国际上科学界*具影响力和*有活力的软件,已经发展成一种高度集成的计算机语言开发平台。MATLAB语言提供了强大的科学计算能力、灵活的程序设计流程、高质量的图形可视化功能与界面设计功能,也提供了便捷的与其他语言的接口。目前,MATLAB语言在各国高校与研究单位的科研工作中发挥着重要作用。
2.编程语言的选择
在进行物理计算时,我们必须选择编程语言,应该注意以下几点:.1各种编程语言各有特点,没有绝对的优劣之分,各种语言都可以描述解决物理问题所需的数值计算方法;.2熟悉各种编程语言需要花费大量时间,在了解各种编程语言的基础上,应该有选择地精通一门语言;.3随着时代的发展,计算机语言也在不断地进化过程中,相信会出现效率更高的编程语言。
由于MATLAB语言具有语句简单、矩阵运算能力强大以及作图能力突出等优势,本书将其作为计算物理学习的工具软件。计算物理学和计算机编程语言之间高度融合,以至于很多时候会产生这样的疑惑:我们是在学习计算物理学还是在学习计算机编程语言?这种时候我们应该清楚:无论是学习计算物理学,还是学习计算机编程语言,目的都是更有效地运用计算机处理物理问题。
第2章MATLAB编程基础
MATLAB是Matrix Laboratory(矩阵工作室)的缩写,是一个功能强大、界面友好的优秀数值计算软件。MATLAB易学好用,允许初学者花费较少的时间就能编写出高质量的程序。为了将更多时间与精力用于物理问题的研究,本书采用MATLAB作为处理物理问题的编程语言。
为了方便没有学过MATLAB的读者使用,本章先介绍一些在本书中用到的MATLAB基本知识。用MATLAB解决物理问题,必须熟悉MATLAB的操作界面、数据格式和编程方法,本章将简要介绍这三个内容。每年MATLAB都会推出新的版本,本书采用的是MATLABR2014b。
在学习过程中,应该注意以下几点:
(1)对于MATLAB的基础知识和常用数值计算方法,要边学边用,用就是学,不能学完再用。
(2)在处理具体物理问题时,一些MATLAB指令的具体用法尚未了解,这时应该边用边学,为用而学,养成自学的习惯,这也是本书着重培养的能力之一。
(3)解决物理问题时,有时是根据数学算法进行详细的编程,有时直接运用MATLAB指令。前者注重基本算法的学习和基础
展开