1、 数值计算中应遵循的原则工程问题的数值计算中出现误差的渠道及原因, 分析了这些误差可能会引起的 后果。通过具体例子说明要避免这些误差须遵循的原则。用数值稳定性好的计算方法;两个数量级相差很大的数进行加减运算时, 防止小的那个数加减不到大的数中; 避免两个相近的数相减, 损失有效数字; 防止出现机器零和溢出停机; 在除法运算中, 避免除数的绝对值远小于被除数的绝对值; 简化计算步骤, 减少运算次数。用电子数字计算机进行各种工程问题的数值计算, 计算误差是不可避免的。误差的渠道来源主要有四个: 模型误差、观测误差、截断误差、舍入误差。用数学模型描述各类实际问题, 一般都要作一定的简化, 由此产生的
2、数学模型的解与实际问题的解之间一定会有差异, 这种差异就是模型误差; 数学模型中包含的某些参数或常数, 大多是经过仪器观测或试验获得的数值, 这样得到的观测数值与实际数值之间也有误差, 这种误差称为观测误差; 求解数学模型所用的数值计算方法往往是近似计算方法, 由此产生的误差称为方法误差。由于近似方法一般都要用有限的四则算术运算步骤来代替无穷的极限运算, 这种由截断一个无穷过程而引起的误差, 就叫截断误差, 方法误差也属于截断误差; 由于电子数字计算机只能将数表示成有限位进行计算, 对超过位数的数字按一定的规则作舍入, 由此产生的误差称为舍入误差。数值计算方法主要研究截断误差和舍入误差对计算结
3、果的影响, 一般不考虑模型误差和观测误差。分析参数或常数的观测误差在数值计算中的影响的方法与分析舍入误差的影响所用的方法大致相同,而控制观测误差和模型误差则不是数学计算工作者所能独立解决的。为了减小误差, 特别是舍入误差的影响, 在数值运算中应注意以下一些原则:1 用数值稳定性好的计算方法, 以便控制舍入误差的传播如, 要求在四位有效数字的精度下计算定积分的值 1:由有理函数积分法知,因而计算这 101 个定积分的算法是:它是数值稳定性不好的一种算法, 因为 y 0 的舍入误差传播到 y 1 时增大 5 倍, 如此进行, 传播到 y 100 时将增大到 5 100 倍。如采用另一个算法, 利用
4、估计式 2取 y 100 的近似值为 12 ( 6016 + 5051 ) =0.181510- 2, 再按下式计算这 101 个定积分:该算法具有很好的数值稳定性, 因为 y 100 的误差在计算过程中每一步都只乘以 15 。当两个数量级相差很大的数进行加减运算时,要防止小的那个数加减不到大的数中所引起的严重后果。如, 在五位十进制计算机上计算如果该计算机是截位的, 即凡超过五位数的数字都自动抹掉, 那么由于浮点运算时要对阶, 在计算机中 52492 表示为 0.52492105。假设 ai=0.9, 对阶时 ai 表示为 0.000009105, 从而它在该计算机中被抹掉数字 9 成为机器
5、零, 所以将 52492 与每个 ai 逐一相加, 其结果仍为 52492, 出现了大数 52492“吃掉”小数 ai 的情况。这时, 应该先把数量级相同的 1000 个 ai 相加, 才能得到较准确的数值结果。2 避免两个相近的数相减, 以免严重损失有效数字如, x=1.232, y=1.231 在四位十进制的限制下计算 z=x 3- y3 的值。如果直接计算, 得 z=1.232 3- 1.2313=0.1870101- 0.1865101=0.510- 2,所得结果至多有一位有效数字。若采用 z=( x- y)( x 2+xy+y2) 进行计算, 则得 z=( x- y)( x2+xy+
6、y2)=0.110- 2(0.1518101+0.1517101+0.1515101) =0.45510- 2如果 x 和 y 都是准确值, 则 0.110 - 2 是 x- y 的准确值, 所以 0.45510 - 2 的绝对误差限为 =0.110 - 2z( 0.510- 3+0.510- 3+0.510- 3) =0.1510- 50.510- 5.从而近似值 0.45510 - 2 的三个数字 4, 5, 5 都是有效的。同时, 要防止出现机器零和溢出停机。若计算过程中出现某些中间结果超出了数字计算机所能表示的数值范围, 就出现机器零或溢出, 使计算中止 3。因此在计算过程中, 常常需
7、要用比例因子去乘近似值,使其保持在一定的数值范围内, 以便数字计算机正常运行。3 在除法运算中, 避免除数的绝对值远小于被除数的绝对值4 简化计算步骤, 减少运算次数减少运算次数不仅可以提高效率, 并且能够使误差积累减少。如, 计算多项式 p( n x) =anxn+an- 1xn- 1+ +a1x+a0 的值, 如果逐项计算后再相加,总共需要 n+( n- 1) +( n- 2) + +1= n( n+1) 次乘法和 n 次加法。若按下列递推算法:2进行计算, 则只需要 n 次乘法和 n 次加法, 这就简便多了。以上是在解决工程实际问题中发现的引起数值误差的各种因素, 不一定全面, 具体实践中的问题是千差万别的, 望各位数学工作者或其它科学工作者注意并总结。