240 likes | 365 Views
计算物理学之. 数 值 方 法. §1 数值计算方法的意义、内容与方法. 计算物理学( Computational Physics )是伴随着电子计算机的出现和发展而逐步形成的一门新兴的边缘学科。它是 以电子计算机为工具,应用数学的方法,解决物理问题 的应用科学,它是物理、数学和计算机三者相结合的产物。计算物理学与传统的实验物理学和理论物理学互相依赖、相互促进,形成三足鼎立,相辅相成地发展。故有人称它为用计算机武装起来的理论物理学,“打印纸”上的实验物理学 。. §1 数值计算方法的意义、内容与方法. 建立数学模型. 选取计算方法. 计算得出结果.
E N D
计算物理学之 数 值 方 法
§1 数值计算方法的意义、内容与方法 计算物理学(Computational Physics)是伴随着电子计算机的出现和发展而逐步形成的一门新兴的边缘学科。它是以电子计算机为工具,应用数学的方法,解决物理问题的应用科学,它是物理、数学和计算机三者相结合的产物。计算物理学与传统的实验物理学和理论物理学互相依赖、相互促进,形成三足鼎立,相辅相成地发展。故有人称它为用计算机武装起来的理论物理学,“打印纸”上的实验物理学。
§1 数值计算方法的意义、内容与方法 建立数学模型 选取计算方法 计算得出结果 编写上机程序 科学计算解题过程
§2 算 法 一、算法的概念 定义:由基本运算及运算顺序的规定所构成的完整的 解题步骤,称为算法。 算法的描述方法:(1) 自然语言;(2) 图形,如流程图;(3) 算法语言,即计算机语言、程序设计语言、伪代码。
只小兔 只小兔 例1:一群小兔一群鸡,两群合到一群里,要数腿共48, 要数脑袋整17,多少小兔多少鸡? 算术方法 : 代数方法 : 若没有小兔,则鸡应是17只 设有x只小鸡,y只小兔 , 总腿数 :2*17=34 一只小兔增加 2条腿, 应该有 (-2)*(i) +(ii) , 得 高斯消去法 10只小鸡
(1)如果 ,则令计算机计算 例:求解二元一次联立方程组 用行列式解法:首先判别 是否为零,存在两种可能: 输出计算的结果x1,x2。 (2)如果D= 0,则或是无解,或有无穷多组解。
令 S1 输入 S2 计算 S3 如果 否则 S4 输出计算的结果 通过求解过程,可以总结出算法步骤如下: 则输出原方程无解或有无穷多组解的信息;
开始 D=a11a22-a12a21 Yes D=0 No 输出无解信息 输出x1, x2 结 束 输入
二、算法的优劣 计算量小 存贮量少 逻辑结构简单 例如:计算多项式 的值 方法1:直接计算出x,x2,…再乘以相应的系数 需要做2n-1次乘法和n次加法,占用2n+1个存储单元。
方法2:秦九韶算法,将p(x)变形为: 用递推公式 则需要做n次乘法和n次加法,占用n+2个存储单元。
§3 数值计算中的误差 一、 误差的来源与分类 描述误差 复杂的物理问题 物理近似 观测误差 舍入误差 数学模型 截断误差 计算机计算 数值方法
定义1:设x是准确值,x*为x的一个近似值,称 是近似值x的绝对误差,简称为误差。 二、绝对误差、相对误差和有效数字 1.绝对误差与绝对误差限 例 2:若用以厘米为最小刻度的尺去量桌子的长, 大约为1.45米,求1.45米的绝对误差。 1.45米的 绝对误差=? 不知道!
但实际问题往往可以估计出 不超过某个正数,即, ,则称 为绝对误差限,有了绝对误差限 就可以知道x范围为 即x落在[x*-, x*+]内。在应用上,常常采用下列 写法来刻划x*的精度。
为近似值x的相对误差,相应地,若正数 , 满足 则称 为x的相对误差限。 2.相对误差和相对误差限 定义2:设x是准确值,x*是近似值,称
有效数位为3位 有效数位为5位 有效数位为4位 3.有效数字 定义3:如果 则说x*近似表示x准确到小数后第n位,并从这第n位起 直到最左边的非零数字之间的一切数字都称为有效数字, 并把有效数字的位数称为有效位数。 由上述定义
误差的传播与积累 例3:蝴蝶效应—— 纽约的一只蝴蝶翅膀一拍,风和日丽的北京就刮起台风来了?! NY BJ 以上是一个病态问题
例4:求 (n = 0, 1, 2, …, 8)的值。 §4 数值计算中应该注意的一些原则 1.要使用数值稳定的算法 解:由于 初值
递推公式 注意此公式精确成立 精确值: 按上式逐步算出 What happened?! 不稳定的算法 !
变为 将公式 不妨设I9 I10,于是由 可求得I9 1/60 精确值: 按递推公式可逐次求得 稳定 的算法 !
2.要避免两个相似数相减 在数值计算中,两个相近的数作减法时有效数字会损失。 例5: 求 的值。当x = 1000,y 的准确值为0.01580 1、直接相减 2、将公式改写为 则 y = 0.01581
类似地 2. 绝对值太小的数不宜作除数 例6: 如分母变为0.0011,也即分母只有0.0001的变化时
例7:用单精度计算 的根。 算法1:利用求根公式 3. 避免大数吃小数 精确解为 在计算机内,109存为0.11010,1存为0.1101。做加法时,两加数的指数先向大指数对齐,再将浮点部分相加。即1 的指数部分须变为1010,则:1 = 0.0000000001 1010,取单精度时就成为: 109+1=0.100000001010+0.00000000 1010=0.10000000 1010
算法2:先解出 再利用 注:求和时从小到大相加,可使和的误差减小。 例8:按从小到大、以及从大到小的顺序分别计算 1 + 2 + 3 + … + 40 + 109 4. 先化简再计算,减少步骤,避免误差积累。 一般来说,计算机处理下列运算的速度为
5.算法的递推性 计算机上使用的算法常采用递推化的形式,递推 化的基本思想是把一个复杂的计算过程归结为简单过程 的多次重复。这种重复在程序上表现为循环。递推化的 优点是简化结构和节省计算量。 多项式求值:给定的x 求下列n 次多项多的值。 解:1. 用一般算法,即直接求和法; 2.逐项求和法; 3. 秦九韶方法;