书城自然科学自然科学与技术研究方法
47031100000028

第28章 自然科学的研究方法(9)

例如,天气预报的早期方法是对大气直接观测,收集资料,进行分析归纳并作出定性的描述,这时天气预报的准确性和精确性有限。而现在世界各国在天气预报中普遍采用数值预报的方法,预报的准确性和精确性大大提高。该数值预报方法中需要求解非常复杂的大气运动方程组,因此快速计算机和合适的计算方法是必不可少的。否则,即使结果计算出来了,要预报的那一天也早就过去了。再如,在核武器或核电站的研制过程中,利用计算机进行计算也起到了理论与实验都不可替代的作用。世界上第一台计算机就是冯·诺伊曼为解决原子弹设计中大规模的科学计算问题而研制的。正因为他了解核武器研制中所需计算的复杂程度,才对计算机的研制表现出极大热情。一次在讨论他们所拟定的计算过程后,冯·诺伊曼对同事说:“为了完成这个计算,我们需要完成的四则运算步骤恐怕比人类迄今为止所作的全部计算还要多。”这足以说明计算在原子弹研制过程中的重要地位。众所周知,核反应或核爆炸是在几千万摄氏度的高温、几百万大气压下进行的,核爆炸的巨大能量又是在微秒量级的时间内释放出来的。完全依靠核试验并不总是能测量出核武器内部细致的反应过程,更不用说频繁核试验对社会和环境产生的恶劣影响了。现在,核大国在核武器的研究方面,在核电站的设计、运行、控制方面,甚至在核事故的分析方面,普遍采用了大规模的数值计算和模拟手段,用计算机数值计算的方法求解描述核反应的非线性微分方程组来掌握核反应各个环节的运行过程,获得所需要的数据和图像,并对各种因素和制约机制进行综合分析。

由此可见,对于一些复杂体系,计算机数值计算和模拟方法已经成为一种必不可少的方法。这些需要推动了计算机的发展,计算机的发展反过来又促进了计算方法的发展。实际上,理论研究、实验研究和计算机仿真研究这三种方法之间形成了互相验证、互相预言的关系。三者相辅相成,又相对独立,各有特色,可以相互补充,又彼此不可缺少,在揭开自然界奥秘和发展科技的进程中发挥着各自独特的作用。

2.4.2 计算研究方法的特点

现代计算机的应用几乎遍及人类社会生活的各个方面,形式各异。新的应用层出不穷,令人目不暇接。但究其本质,计算机无非是一个可对大量数据进行快速计算、处理、存储和显示的机器。如何提高对大量数据的处理能力和效率始终是计算机科学的核心内容之一。这里谈到的数值计算就是计算机数据处理中的最基本、最核心的功能之一,也就是计算机的最核心功能之一。

1.可以获得解析法无法得到的数值结果

在科学发展的今天,人们对一些自然及社会基本问题已经有了深刻的认识,获得了一些极为重要的基本规律,仅以物理学为例,牛顿三定律、麦克斯韦方程组、薛定谔方程等分别描述宏观机械运动、电磁场运动、微观粒子运动的基本规律。但是把这些规律应用到实际问题时(实际问题往往比我们在教科书中抽象出的理想模型复杂得多),人们能够给出描述系统的基本方程或方程组,但是,要么因为变量过多,要么因为所列出的方程过多,要么因为方程的非线性性质等,往往无法得到解析解。这使得人们对于所要研究的问题无法深入进行。如果没有计算机的发明,这些困难很难得以解决,也就是说人们对于复杂问题将会束手无策。幸运的是人们发明了现代计算机系统。利用计算机的数值计算方法可以解决上述困难,使人们获得了攻克复杂问题的有力工具。

2.可以获得直观的、动态的图景显示

计算机不仅可以求解复杂问题,获得问题的数值解,它还可以以非常清晰、直观,以及难以想像的效果将这些结果展示给人们。例如科学家们根据基本假设和理论不但能够计算出宇宙大爆炸时的时空、物质、能量的变化情况,而且能够以非常直观的动态视频形式将这些结果显示给人们,使人们仿佛亲身经历这一过程一样。另外,人们坐在家中看到电视上的天气预报时,能够非常直观和清晰地看到未来几天内全国乃至整个地球表面云层的运动及变化趋势,好像是真正拍摄的图片一样。这个过程中不仅包含了计算机对复杂的大气方程进行的大量计算,获得的巨量数据,更显示了计算机对这些数据结果非常直观的显示。

和上面的宇宙大爆炸和天气预报的例子一样,对于复杂的研究体系,我们可以从基本规律和模型出发,利用计算机数值计算这个工具获得所关注的结果,并且以非常接近现实、直观的方式显示结果。就好像在计算机上进行了一次真实实验一样。我们可以在这个实验中改变不同的条件,寻找复杂问题的规律,这样就可以在真正的实验之前,获得对所研究系统的大量知识和规律,减少真实实验的盲目性,提高实验成功率。这就是“用计算机做实验”或计算机模拟。这种计算机模拟实验对于一些昂贵的、不能失败的复杂实验体系是至关重要的,如核实验、风洞实验、航天实验等。对于复杂问题,计算机模拟越来越成为一种不可缺少的方法。

幸运的是随着计算机技术的不断进步,新的数值计算方法不断发展,用于计算机模拟的数值计算方法越来越多样化,可解决的问题也越来越多,越来越深入。

2.4.3 数值计算工具

从简单的数值模拟计算到更专业、更复杂的系统的分析和计算,目前有许多计算工具可供选择,包括以下几种。

(1)一些高级语言工具,如Fortran,C,Basic等。这些语言经历了较长时间的完善和发展,具备很强的计算功能,很多从事科研和教学的人员利用这些高级语言编程,分析和解决问题。

14(2)一些数学工具包,如Mathematica,Maple,Matlab,Originlab等。这些数学工具包对于科学计算的针对性更强。

(3)一些专业性更强的计算工作站,这些工作站已经具有一些共用的子程序库可供调用,方便本专业领域人员的利用。

2.4.4 数值计算方法在光学研究中的应用举例

这部分列举三个例子。

1.举例一:狭缝衍射图样的计算

我们在普通物理中学习过光的干涉和衍射,进行过双缝干涉及单缝衍射实验。波的相干叠加是分析这些现象的重要概念。普通物理教科书中都是采用分析光程差和相位差的方法,定性分析双缝干涉实验中(这里还假设双缝的缝宽无限窄)的条纹特点,计算条纹间距。对于单缝衍射实验,也是采用类似的方法(如半波带法)定性分析衍射图样的特点和明暗条纹的间距。然而任何实际的问题往往都比上述的理想情况复杂,比如双缝干涉实验中的每个缝宽都不可能无限窄,并且在一个具体的实验中还可能出现两个缝宽不等的情况。试问三缝、四缝、缝宽不等,乃至任意形状的狭缝的衍射图样又是什么样的呢?

对于这个问题的求解,我们首先需要寻找相关的理论模型或结论。幸运的是,在傅立叶光学中对这个问题已经有了定量的结论。

即在夫琅和费条件下,观察面上的场分布等于衍射孔径上场分布的傅立叶变换和一个二次位相因子的乘积。对于仅响应光强而不响应位相的一般光探测器,夫琅和费衍射的光强分布和光场的傅立叶变换并没有区别。

因此,狭缝衍射问题就转化为求解一维函数的傅立叶变换问题。下面以VB语言为例,利用数值计算来求解任意一维分布函数的傅立叶变换。

设x的函数g(x),经过傅立叶变换后,得到自变量为f的函数G(f)。下面先将傅立叶变换的复数计算形式分成实数部分和虚数部分,以便通过VB语言对这两部分进行分别计算(在有些数学工具,如Matlab中不需要这一过程,因为该工具能够直接进行复数运算)。

以下通过具体VB编程,完成上述傅立叶变换的数值计算。

首先需要狭缝的透射率函数,如果有一束平行光照射在这个狭缝上,这个函数也就是这个平面上的光场分布函数。可以通过赋值的方法来得到这个函数。如程序中用x数组存放坐标值,用y数组存放透射率值,则x和y数组的对应表就是透射率函数表。对于单缝透射率函数。

最后,衍射图样结果放在Gamplitude数组中。为了直观地分析这个结果,需要对它进行可视化输出,我们可以绘制衍射强度的空间分布曲线,还可以根据数据绘制衍射的实样图,就好像真正在做衍射实验一样。

将上面的程序段结合在一起,形成一个完整的VB程序,就可以计算和分析任意透射率狭缝的衍射图样。

是不是所有的单缝衍射都会出现明暗相间的条纹呢?不是方形单缝,而是透射率为高斯形的单缝,衍射的结果没有出现多个条纹,而是一条光强仍为高斯分布的条状衍射图样。这个结果启发我们为什么一个很细的高斯光束可在自由空间中长距离传播而不发散。

当狭缝的宽度变窄时,衍射图样会如何变化呢?图为一个较窄的高斯形狭缝的衍射情况,发现条纹变窄时,衍射斑条纹变宽。

很多条缝组成的光栅衍射的情况如何呢?是一个光栅的衍射图样,这是人们熟悉的光栅多级衍射条纹。

所有的光栅衍射都是多条衍射条纹吗?为多个正弦形单缝组成的光栅的衍射图样,发现只出现了两条很细的条纹。

其他任意形式的衍射情况如何呢?是一个不规则的三缝的衍射图样,条纹较为复杂。

这个例子说明在数学规律清楚的情况下,计算机数值计算能够快速求解烦琐的数值计算问题,并可以很直观地显示结果。说明可以“用计算机做实验”,也就是“计算机模拟”。

2.举例二:发光衰减规律的计算

这个例子中我们考虑一个发光材料中的发光衰减现象,设该材料在时间t为0时激发态粒子数为N0,发光现象就是这些激发态粒子跃迁回基态伴随发射光子的现象。问这个激发态粒子数随时间的变化情况如何?

首先要考虑该问题的数学模型。可以合理想像在发光过程中,应该有如下简单关系:在单位的时间内,体系发射光子数(也就是激发态粒子的减少数)与该时刻体系在激发态的粒子数成正比。依据这个简单关系,我们就可以通过数值计算得到激发态粒子数的变化规律。

具体考虑和编程如下。

设t=0时,激发态粒子数为N0,经过dt的时间间隔,激发态粒子的减少数为Axnxdt,其中n为激发态数目,A为比例系数,被称为衰减常数。这样就可以根据前一个时刻的粒子数,经过简单计算获得后一个时刻的粒子数。以此类推,就可以获得所有所需时间点上的粒子数,得到变化规律。

经过上述程序计算,得到不同时刻的粒子数。数组n和t分别为粒子数和时间变量。为了分析方便,需要对所得的数据作图。

上述数值计算结果表明,采用非常简单的算法可以得到发光衰减规律。通过对数坐标作图发现这个衰减规律为指数衰减形式。还发现计算的结果与程序中时间间隔dt的取值有关,dt取值越小则准确度越高,但程序的运行时间会变长。

这样看,本例实际上是采用了一种简单算法求解了一个微分方程。数值计算需要考虑合理的参数取值,以保证计算结果的准确性、稳定性和计算速度。

3.举例三:有机电致发光材料三重态发光的测量

近年来,一种新型的发光技术引起了人们的研究兴趣,这就是有机电致发光(OLEDs)。给出了一个典型的OLEDs器件的结构和所使用的有机材料。

这个器件中的发光来自有机发光材料Alq3的辐射跃迁。是以Alq3为发光层材料的OLEDs器件的发光光谱。

这个发光光谱也就是Alq3的荧光光谱。

发光是材料中处于激发态的电子向基态跃迁时伴随的一种光子发射现象。材料的发光性质和该材料的激发态性质有直接关系。有机发光材料的激发态根据自旋态的不同被分为单重态和三重态两种情形。人们认为发光是来自Alq3小分子单重态的发光。对于以Alq3为发光层材料的OLEDs器件,人们一直存在一个疑问:Alq3的三重态的性质是怎样的?能不能测量到Alq3三重态的发光?如何测量?

以下通过数学模型的建立来分析这个问题。Alq3分子单重态和三重态激发态的发光模型。图中的S0表示Alq3分子的基态能级,S1为第一激发单重态能级,T1为第一激发三重态能级。Na和Nb分别为单重态和三重态上的粒子数。a和b分别为单重态和三重态跃迁的衰减寿命。在通常的发荧光的小分子材料中,b一般较a大一个量级以上,这也是人们在实验中较难观察到三重态发光现象的主要原因。人们在研究中还发现三重态的粒子可以通过三重态湮灭的方式向单重态转化。单位时间内转化的粒子数与三重态粒子数的平方成正比。

这是一个联立的非线性微分方程组,不容易获得解析解,但是可以通过数值计算的方法,研究这个问题的一般规律。也就是先用计算机做实验,看看三重态发光在什么情况下能够出现,有什么规律。

如果将测量时间延长会出现什么情况呢?是长时间范围内单重态和三重态粒子数随时间的变化关系,可以发现,经过长时间衰减后,粒子数的衰减曲线在单对数坐标下趋于直线,说明长时间后,这个体系中的单重态和三重态衰减曲线都趋于单对数衰减形式。