计算物理学 第1章_引论
- 格式:doc
- 大小:191.00 KB
- 文档页数:7
第1章引论本章要点:1.什么是计算;2.计算机科学与计算科学的区别;3.来自计算机发展史的启示;4.计算机应用;5.计算机发展趋势。
1.1 什么是计算?简单计算,如我们从幼儿就开始学习和训练的算术运算,如“3 + 2 = 5”“3 2 = 6”等,是指“数据”在“运算符”的操作下,按“规则”进行的数据变换。
我们不断学习和训练的是各种运算符的“规则”及其组合应用,目的是通过计算得到正确的结果。
广义地讲,一个函数如“”把x变成了f(x)就可认为是一次计算,在高中及大学阶段我们不断学习各种计算“规则”并应用这些规则来求解各种问题,得到正确的计算结果。
如对数与指数、微分与积分等。
“规则”可以学习与掌握,但应用“规则”进行计算则可能超出了人的计算能力,即人知道规则但却没有办法得到计算结果。
如何解决呢?一种办法是研究复杂计算的各种简化的等效计算方法(数学)使人可以计算,另一种办法是设计一些简单的规则,让机械来重复的执行完成计算,即考虑能否用机械来代替人按照“规则”自动计算。
例如:能否机械地判断方程“a1x1b1+a2x2b2+…+a n x n b n = c”是否有整数解?”,即机械地证明一个命题是否有解? 是否正确?类似的上述问题,促进了计算机科学和计算科学的诞生和发展,促进了人们思考:◆什么能够被有效地自动计算?现实世界需要计算的问题是很多的,哪些问题是可以自动计算的,哪些问题是可以在有限时间有限空间内自动计算的?这就出现了计算及计算复杂性问题。
以现实世界的各种思维模式为启发,寻找求解复杂问题的有效规则,就出现了算法及算法设计与分析问题。
例如观察人的思维模式而提出的遗传算法、观察蚂蚁行动的规律而提出的蚁群算法等。
◆如何低成本、高效地实现自动计算?如何构建一个高效的计算系统:计算机器的构建问题和软件系统的构建问题。
◆如何方便有效地利用计算系统进行计算?利用已有计算系统,面向各行各业的计算问题求解。
什么能、且如何被有效地自动计算问题就是计算学科的科学家不断在研究和解决的问题。
计算物理学Computational Physics刘金远大连理工大学物理学院2009.6第1章引论计算物理学的英译文为“Computational Physics”。
通常人们也把它等同于计算机物理学(computer physics)。
在过去半个多世纪以来,计算物理学渗透到物理科学和工程学的各个研究方面,成为一门新兴的交叉科学。
它是物理学、计算数学、计算机科学三者相结合的产物。
计算物理学也是物理学的一个分支,它与理论物理、实验物理有着密切的联系,但又保持着自己相对的独立性。
如果要给计算物理学做一个定义的话,我们可以采用下面这个有代表性的概括:计算物理学是以计算机及计算机技术为工具和手段,运用计算数学的方法,解决复杂物理问题的一门应用科学。
计算物理学已经对复杂体系的物理规律、物理性质的研究提供了重要手段,对物理学的发展起着极大的推动作用。
1.1计算物理学的起源和发展19世纪中叶以前,可以说物理学还基本上是一门基于实验的科学。
1862年麦克斯韦(Maxwell)将电磁规律总结为麦克斯韦方程,进而在理论上预言了电磁波的存在。
这使人们看到了物理理论思维的巨大威力。
从此理论物理开始成为了一门相对独立的物理学分支。
以后到了20世纪初,物理学理论经历了两次重大的突破,相继诞生了量子力学和相对论。
理论物理开始成为一门成熟的学科。
传统意义上的物理学便具有了理论物理和实验物理两大支柱,物理学便成为实验物理和理论物理密切结合的学科。
正是物理学这样的“理论与实践相结合”的探索方式,大大促进了该学科的发展,并引发了20世纪科学技术的重大革命。
这个革命对人类的社会生活产生了重大影响。
其中一个重要的方面就是电子计算机的发明和应用。
物理学研究与计算机和计算机技术紧密结合起始于20世纪40年代。
当时正值第二次世界大战时期,美国在研制核武器的工作中,要求准确地计算出与热核爆炸有关的一切数据,迫切需要解决在瞬时间内发生的复杂的物理过程的数值计算问题。
然而,采用传统的解析方法求解或手工数值计算是根本办不到的。
这样,计算机在物理学研究中的应用就成为不可避免的事了,计算物理学因此得以产生。
第二次世界大战之后,计算机技术的迅速发展又为计算物理学的发展打下了坚实的基础,大大增强了人们从事科学研究的能力,促进了各个学科之间的交叉渗透,使计算物理学得以蓬勃的发展。
理论物理是从一系列的基本物理原理出发,列出数学方程,再用传统的数学分析方法求出解析解。
通过这些解析解所得到的结论与实验观测结果进行对比分析,从而解释已知的实验现象并预测未来的发展。
实验物理是以实验和观测为基本手段来揭示新的物理现象,奠定理论物理对物理现象作进一步研究的基础,从而为发现新的理论提供依据,或者检验理论物理推论的正确性及应用范围。
计算物理则是计算机科学、数学和物理学三者间新兴的交叉学科,是物理计算科学的基础,是研究物理学中与数学求解相关的基本计算问题的学科。
它研究的主要内容是如何应用高速计算机作为工具,去解决物理学研究中极其复杂的计算问题。
计算物理学对解决复杂物理问题的巨大能力,使它成为物理学的第三支柱,并在物理学研究中占有重要的位置。
计算物理学与理论物理和实验物理有着密切的联系。
计算物理学的研究内容涉及物理学的各个领域。
一方面,计算物理学所依据的理论原理和数学方程是由理论物理提供的,其结论还需要理论物理来分析检验;另一方面,计算物理学所依赖的数据是由实验物理提供的,其结果还要由实验来检验。
对实验物理而言,计算物理学可以帮助解决实验数据的分析、控制实验设备、自动化数据获取以及模拟实验过程等问题;对理论物理而言,计算物理学可以为理论物理研究提供计算数据,为理论计算提供进行复杂的数值和解析运算的方法和手段。
总之,计算物理学是与理论物理、实验物理互相联系、互相依赖、相辅相成的。
它为理论物理研究开辟了一个新的途径,也对实验物理研究的发展起了巨大的推动作用。
1.2 误差分析1.2.1 基本定义:1. 误差误差是近似值与准确值之差,即:=*(1-1)E-ZZ式中:E表示误差;*Z表示准确值,又称精确值、真值;Z表示近似值。
2.误差限若存在一个小正数ε,使不等式ε≤-*Z Z (1-2)成立,则称ε为近似值Z 的绝对误差限,简称误差限。
由此可得到下面几个结果εε+≤≤-Z Z Z *, ε≤E3.相对误差相对误差定义为:*Z E E r = (1-3) 通常准确值*Z 是无法求得的,而用其近似值代替:Z E E r /=。
(试证这种近似的误差与2*)/(Z E 值同一数量级)。
4.有效数字如果近似值Z 的误差限不超过某一位上的半个单位,该位到Z 的第一个非零数字共有n 位,我们说,Z 有n 位有效数字。
或者Z 准确到该位。
例如: 3.1415926π=,取3.14做为近似值有3位有效数字(误差为0.00159<0.005);取3.141做为近似值仍然是3位有效数字(误差为0.000590.0005>);取3.142做为近似值有4位有效数字(误差为-0.000410.0005<)。
1.2.2 误差来源1. 模型误差(Modeling Error ):对实际物理问题做了某些近似假设后抽象出数学模型带来的误差。
2. 观测误差(Measurement Error ):实验测量得到测量值带来的误差。
3. 截断误差(Truncation Error ):近似求解的方法误差。
例如,在计算机计算函数值时,通常按泰勒展开式进行计算。
实际计算时,只能取有限项计算,后面各项被截去了,产生截断误差。
【例题1.1】已知函数x e y =,且1≤x ,若要求截断误差的误差限为0.005,那么需要计算到多少项才能满足要求?解:由于1≤x ,)(!!212x R n x x x e n nx+++++≈ ,)10( ,)!1()(1<<+=+θθx n n e n x x R 由于1≤x ,)10(<<θ,可以估计:3<<e e x θ,则得:005.0)!1(3)(≤+≤n x R n ,解不等式得5≥n ,由此取5=n ,当1=x 时,计算得716667.2≈e ,较准确的近似值为71828.2=e ,误差为:005.00016148.0716667.271828.2<=-=E ,有3位有效数字。
4. 舍入误差(Roundoff Error )计算时由于机器字长有限,对其小数指定位进行四舍五入而引起的误差。
一般而言,一次舍入不会产生很大误差,但随着多次舍入运算,误差会积累放大。
例如:∑∑==k k k k k k z Z z Z ** ,λλ,∑∑-≤-=-=kk k k k k k k z z z z Z Z E ***)(λλ 设每次舍入计算时舍入误差为ε,则ε<-=k k k z z E *,由此有∑∑≤-≤-=kk k k k k z z Z Z E ελλ** 其中∑kk λ是舍入误差的放大系数。
一个实际计算的物理问题往往会涉及多种近似。
例如,计算地球的表面积采用的公式:24S r π=,其中涉及模型误差:近似认为地球是球形的;测量误差:近似认为地球半径6370r km ≈;舍入误差:近似取π的近似值。
计算物理中关心的是截断误差和舍入误差。
1.3 数值计算应注意的问题1.3.1 避免相近二数相减两个相近数的前几位有效数字是相同的,相减后有效数字位会大大减少。
例如:64.311001≈,62.311000≈,求)10001001(-的值。
可以看到,直接相减结果为0.02,只有1位有效数字。
计算中损失了3位有效数字。
为了避免两个相近的近似值相减,可改变计算方式,如因式分解,分母有理化,三角公式变换,泰勒展开等。
01581.062.3164.311)10001001(1)10001001()10001001)(10001001()10001001(≈+=+=++-=- 另外还有其他一些方法,例如当1x 接近2x 时:)lg(lg lg 2121x x x x =-;当)(1x f 与)(2x f 很接近,计算,)()(12x f x f -,可采用泰勒展开 +-+-=-212112112))((''21))((')()(x x x f x x x f x f x f 1.3.2 防止大数吃掉小数计算机的位数有限,进行加减法运算时要对阶和规格化。
例如在四位浮点机上做运算:53104506.0107315.0-⨯+⨯,对阶是:33100000.0107315.0⨯+⨯,规格化是3107315.0⨯,结果是大数吃掉了小数。
再例如11111113.090112859999999998321011111112.0897874523999989999910S A S B =++++++==++++++=将很多较小的数加和而成较大的数后,再加之较大的数。
故A S 的值比较准确。
所以要注意运算次序,避免大数吃掉了小数。
1.3.3 避免小分母溢出1.3.4 减少运算次数求解一个给定问题,减少运算次数,能够节省机器时间,减少舍入误差传播放大。
例如: 求多项式的值()2012n n n P x a a x a x a x =+⋅+⋅++⋅直接按上式顺序计算:乘法次数为(1)/2n n +,加法次数为n ;改为下列计算顺序1, n i ndo i n s a x send s doa -=+←←⋅ 乘法次数为n,加法次数为n 。
1.3.5 正负交替级数累和计算中的问题对正负项交替级数的累和问题需要特别注意。
若某些项的数量级远大于结果数量级,则可能隐含着数值相近两数求差运算。
可采用其他方法,例如231x e x x x -=-+-+可变为 23111x x e e x x x -==++++1.4 计算机编程语言1.4.1 FORTRAN 语言Fortran语言是世界上广泛流行的、最适于数值计算的一种计算机语言,是世界上最早出现的高级程序设计语言。
从1954年第一个Fortran语言版本问世至今,已有50多年的历史,但它并不因为古老而显得过时,随着时间的推移它也在不断发展,现已出现Fortran 95语言版本。
另一方面,这么多年来,在各个领域,特别是在科学工程计算领域,积累了大量成熟可靠的Fortran语言代码。
因此在未来相当长的一段时间里,使用Fortran语言进行复杂科学工程计算与分析的程序设计和软件开发,仍然有着其独特的优势。
现在许多过程模拟计算、有限元分析、分子模拟等大型软件程序,都以FORTRAN 语言编写的程序作为软件的核心程序。
现在常用的FORTRAN语言的编译版本是Fortran Powerstation 4.0或已Compaq Visual Fortran 6.5.它们与各FORTRAN语言版本的兼容性好,有IMSL数学和统计库可供直接调用,为开发和处理大型复杂计算提供了便利的手段。