正在加载图片...
B.3数值稳定性 315 k>1,则称误差是指数增长的.如果算法的误差增长是线性的,则该算法是数值稳定的,如果算法 的误差是指数增长的,则该算法是数值不稳定的. 凸显然误差的线性增长是不可避免的,而指数增长是必须避免的.在数值计算中,误差不可避 免,因此算法的稳定性是一个非常重要的性质 凸在数值计算中,不要采用不稳定的算法! 定义B3(算法的向后稳定性)设用某个算法来计算f(红),得到的近似值为x).若对任意的工 都存在一个“小”的江,使得f(红+江)=(工),则称该算法是向后稳定的,其中江称为向后误 差.这种误差分析方法就是向后误差分析 若一个算法是向后稳定的,则有 lfx)-fel=lf(x+6x)-f(xl≈lf'(z·l6x 于江很小,所以当|f(x川不是很大时,误差总是很小.因此向后稳定是一个好的算法的基本性 质 向后误差分析将会入误差归入到截断误差中,使得误差分析相对简单化 B.3.4数值计算注意事项 在用计算机进行数值计算时,舍人误差不可避免,但我们要尽可能地诚小舍入误差对计算结 果的影响.在计算过程中,我们应注意以下几点。 (1)避免相近的数相诚.如果两个相近的数相减,则会损失有效数字,如0.12346-0.12345 0.00001,操作数有5位有效数字,但结果却只有1为有效数字.下面给出几个避免相近的数 相减的方法: Vi+i-Vi= 、红+E+G ln(+e)-I(z)=In(1+) 1-os=2sm25《1 c-1=(1++女2+…),回<1 (2)避免数量级相差很大的数相除可能会产生溢出,即超出计算机所能表示的数的范围 (3)避免大数吃小数.如直接计算(10°+10-9-109)/10-9时,结果可能为0. 另外,在对一组数求和时,应按绝对值从小到大求和。 (④简化计算.尽量诚少运算次数,避免误差积累。 (⑤)选用稳定的算法.尽可能避免由于算法本身导致的误差增大, http://math.ecnu.edu.cn/-jypan 仅供课堂教学使用,请勿外传 B.3 数值稳定性 · 315 · k > 1, 则称误差是指数增长的. 如果算法的误差增长是线性的, 则该算法是数值稳定的, 如果算法 的误差是指数增长的, 则该算法是数值不稳定的. b 显然误差的线性增长是不可避免的, 而指数增长是必须避免的. 在数值计算中, 误差不可避 免, 因此算法的稳定性是一个非常重要的性质. b 在数值计算中, 不要采用不稳定的算法! 定义 B.3 (算法的向后稳定性) 设用某个算法来计算 f(x), 得到的近似值为 ˜f(x). 若对任意的 x, 都存在一个 “小” 的 δx, 使得 f(x + δx) = ˜f(x), 则称该算法是向后稳定的, 其中 δx 称为 向后误 差. 这种误差分析方法就是向后误差分析. 若一个算法是向后稳定的, 则有 | ˜f(x) − f(x)| = |f(x + δx) − f(x)| ≈ |f ′ (x)| · |δx|. 由于 δx 很小, 所以当 |f ′ (x)| 不是很大时, 误差总是很小. 因此向后稳定是一个好的算法的基本性 质. b 向后误差分析将舍入误差归入到截断误差中, 使得误差分析相对简单化. B.3.4 数值计算注意事项 在用计算机进行数值计算时, 舍入误差不可避免, 但我们要尽可能地减小舍入误差对计算结 果的影响. 在计算过程中, 我们应注意以下几点. (1) 避免相近的数相减. 如果两个相近的数相减, 则会损失有效数字, 如 0.12346 − 0.12345 = 0.00001, 操作数有 5 位有效数字, 但结果却只有 1 为有效数字. 下面给出几个避免相近的数 相减的方法: √ x + ε − √ ε = ε √ x + ε + √ x ln(x + ε) − ln(x) = ln  1 + ε x  1 − cos(x) = 2 sin2 x 2 , |x| ≪ 1 e x − 1 = x  1 + 1 2 x + 1 6 x 2 + · · ·  , |x| ≪ 1 (2) 避免数量级相差很大的数相除. 可能会产生溢出, 即超出计算机所能表示的数的范围. (3) 避免大数吃小数. 如直接计算 (109 + 10−9 − 109 )/10−9 时, 结果可能为 0. 另外, 在对一组数求和时, 应按绝对值从小到大求和. (4) 简化计算. 尽量减少运算次数, 避免误差积累. (5) 选用稳定的算法. 尽可能避免由于算法本身导致的误差增大. http://math.ecnu.edu.cn/~jypan
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有