附录B数值计算中的误差 数值方法的特点之一就是所求得的解是近似解,总是存在一定的误差.因此,误差分析是数值 分析中一个很重要的课题. 误差是人们用来描述数值计算中近似解的精确程度,是科学计算中的一个十分重要的概念 误差大致可分为以下儿种类型: ·模型误差:数学棋型是对实际问题的数学描述,它往往是抓住问题的主要因素而略去次要因 素,因此,它是实际问题的一个近似 ·观测误差:在数学模型中通常包含一些参量(数据),这些参量的值一般都是通过测量或实验 的方法所得到的,因此也存在误差。 ·截海误差:也称方法误差,在对数学模型进行数值求解时,需要做一些近似,如对导数离散时 可用差商代替 ·舍人误差:由于机器字长有限,由于机器字长有限,计算机对浮点数的表示和算术运算都存在 一定的误差 在数值分析中,我们总是假定数学模型和所给的数据都是准确的,因而不考虑模型误差和观 测误差,主要研究截断误差和舍入误差对计算结果的影响 例1近似计算厂。山的值 解.这里我们采用Taylor展开,即 -(-++) =1-+员××+量× 1 S+R4 其中S:为前四项的部分和,R:为剩余部分.如果我们以S:作为定积分的近似值,则R就是由 此产生的误差,这种误差就称为截断误差。 在计算S4的值,假定我们保留小数点后4位有效数字,则 111 54=1-3+0-2≈1-0.33+0.1000-0.0238=0.7429 这就是我们最后得到的近似值.这里,在计算S4时所产生的误差就是舍入误差, 0 B.1误差与有效数字 309
仅供课堂教学使用,请勿外传 附录 B 数值计算中的误差 数值方法的特点之一就是所求得的解是近似解, 总是存在一定的误差. 因此, 误差分析是数值 分析中一个很重要的课题. 误差是人们用来描述数值计算中近似解的精确程度, 是科学计算中的一个十分重要的概念. 误差大致可分为以下几种类型: • 模型误差: 数学模型是对实际问题的数学描述, 它往往是抓住问题的主要因素而略去次要因 素, 因此, 它是实际问题的一个近似. • 观测误差: 在数学模型中通常包含一些参量 (数据), 这些参量的值一般都是通过测量或实验 的方法所得到的, 因此也存在误差. • 截断误差: 也称方法误差, 在对数学模型进行数值求解时, 需要做一些近似, 如对导数离散时 可用差商代替. • 舍入误差: 由于机器字长有限, 由于机器字长有限, 计算机对浮点数的表示和算术运算都存在 一定的误差. 在数值分析中, 我们总是假定数学模型和所给的数据都是准确的, 因而不考虑模型误差和观 测误差, 主要研究截断误差和舍入误差对计算结果的影响. 例 B.1 近似计算 ˆ 1 0 e −x 2 dx 的值. 解. 这里我们采用 Taylor 展开, 即 ˆ 1 0 e −x 2 dx = ˆ 1 0 x − x 2 + x 4 2! − x 6 3! + x 8 4! − · · · = 1 − 1 3 + 1 2! × 1 5 − 1 3! × 1 7 + 1 4! × 1 9 − · · · ≜ S4 + R4 其中 S4 为前四项的部分和, R4 为剩余部分. 如果我们以 S4 作为定积分的近似值, 则 R4 就是由 此产生的误差, 这种误差就称为截断误差. 在计算 S4 的值, 假定我们保留小数点后 4 位有效数字, 则 S4 = 1 − 1 3 + 1 10 − 1 42 ≈ 1 − 0.3333 + 0.1000 − 0.0238 = 0.7429 这就是我们最后得到的近似值. 这里, 在计算 S4 时所产生的误差就是舍入误差. □ B.1 误差与有效数字 309
·310. 附录B数值计算中的误差 定义B.1设x是精确值,工是其近似值,则绝对误差和相对误差e,分别定义为 e=z-x' 和 若存在e>0满足l=一x1≤,则称e为绝对误差限,简称误差限.类似地,若存在,>( 满足e,|≤er,则称Er为相对误差限. 几点说明: ·绝对误差可能为正,也可能为负: ·绝对误差越小越具有参考价,但绝对误差却不能很好地表示近似值的精确程度: ·近似值的精确程度取决于相对误差的大小: ·实际计算中我们所能估计的通常是误差限或相对误差限; ·由于真值难以求出,通常也使用下面的定义作为相对误差限 e=-x ·工程中通常用下面的表达式来刻画近似值的精度: x=x±, 表示精确值在区间[z一,x+中. 定义B.2若近似值x的误差限是某一位的半个单位,且该位到x的第一位非零数字共有n位 则称x有n位有效数字 关于有效数字的判断,我们可以使用下面的方法 定理B.1设x是x*的近似值,若工可表示为 x=±0.a1a2..an.×10m 其中是0到9中的数字,且1≠0.若 e-x1≤0.5×10m-n 则x至少有n位有效数字 换而言之,若口-x≤0.5×10,则x至少有m-k位有效数字 例B.2设1=3.1415和x2=3.1416是π=3.14159265.的近似值,则x1有4位有效数字,而 2有5位有效数字 例B.3根据四舍五入原则,写出下列各数的具有5位有效数字的近似值 187.9325,0.03785551,8.000033. 解.这三个数的具有5位有效数字的近似值分别为:187.93,0.037856,8.0000. 有两点需要注意的是 http://math.ecnu.edu.cn/-jypan
仅供课堂教学使用,请勿外传 · 310 · 附录 B 数值计算中的误差 定义 B.1 设 x ∗ 是精确值, x 是其近似值, 则绝对误差 e 和相对误差 er 分别定义为 e = x − x ∗ 和 er = x − x ∗ x ∗ . 若存在 ε > 0 满足 |e| = |x − x ∗ | ≤ ε, 则称 ε 为绝对误差限, 简称误差限. 类似地, 若存在 εr > 0 满足 |er| ≤ εr, 则称 εr 为相对误差限. 几点说明: • 绝对误差可能为正, 也可能为负; • 绝对误差越小越具有参考价, 但绝对误差却不能很好地表示近似值的精确程度; • 近似值的精确程度取决于相对误差的大小; • 实际计算中我们所能估计的通常是误差限或相对误差限; • 由于真值难以求出, 通常也使用下面的定义作为相对误差限 er = x − x ∗ x . • 工程中通常用下面的表达式来刻画近似值的精度: x ∗ = x ± ε, 表示精确值在区间 [x − ε, x + ε] 中. 定义 B.2 若近似值 x 的误差限是某一位的半个单位, 且该位到 x 的第一位非零数字共有 n 位, 则称 x 有 n 位 有效数字. 关于有效数字的判断, 我们可以使用下面的方法. 定理 B.1 设 x 是 x ∗ 的近似值, 若 x 可表示为 x = ±0.a1a2 . . . an . . . × 10m, 其中 ai 是 0 到 9 中的数字, 且 a1 ̸= 0. 若 |x − x ∗ | ≤ 0.5 × 10m−n , 则 x 至少有 n 位有效数字. 换而言之, 若 |x − x ∗ | ≤ 0.5 × 10k , 则 x 至少有 m − k 位有效数字. 例 B.2 设 x1 = 3.1415 和 x2 = 3.1416 是 π = 3.14159265... 的近似值, 则 x1 有 4 位有效数字, 而 x2 有 5 位有效数字. 例 B.3 根据四舍五入原则, 写出下列各数的具有 5 位有效数字的近似值: 187.9325, 0.03785551, 8.000033. 解. 这三个数的具有 5 位有效数字的近似值分别为: 187.93, 0.037856, 8.0000. □ 有两点需要注意的是: http://math.ecnu.edu.cn/~jypan
B.1误差与有效数字 311 ·按四舍五入原则得到的数字是有效数字 ·一个数末尾的0不可以随意添加或省略. 定理B.2(有效数字与相对误限)设工是工·的近似值,若工可表示为 x=t0.a1a2..an.×10m, 其中1是0到9中的数字,且a1≠0.若x具有n位有效数字,则其相对误差限满足 ≤2×101 反之,若工的相对误差限满足 r≤2a+Dx10a 1 则x至少有n位有效数字. 证明.由x的表达式可知 a1×10m-1≤≤(a1+1)×10m- 若x具有n位有效数字,则 6,=E-≤05x10m- x 反之,若6,≤a×10+1,则 z-x1=·er≤0.5×10m- 故x至少有n位有效数字, 从这个定理可以看出,有效数字与相对误差是紧密相关的:有效数字越多,相对误差就越小 反之,相对误差越小,有效数字就越多. B.1.1基本算术运算的误差估 误差估计主要是指如何估计误差限或相对误差限.我们用()表示x的误差限,则有 c(r1±x2)≤c(x1)+c(a2), E(r122)2l()+(2) s lem 22 B.1.2函数求值的误差估计 般地,设f(x)是可微函数,x为x的近似值,则由Tyor公式可知,存在使得 f四-fe)=fee-)+fe- 所以有 sfe》≤r()+"g2a. 2 http://math.ecnu.edu.cn/-jypan
仅供课堂教学使用,请勿外传 B.1 误差与有效数字 · 311 · • 按四舍五入原则得到的数字是有效数字; • 一个数末尾的 0 不可以随意添加或省略. 定理 B.2 (有效数字与相对误差限) 设 x 是 x ∗ 的近似值, 若 x 可表示为 x = ±0.a1a2 . . . an . . . × 10m, 其中 ai 是 0 到 9 中的数字, 且 a1 ̸= 0. 若 x 具有 n 位有效数字, 则其相对误差限满足 εr ≤ 1 2a1 × 10−n+1 . 反之, 若 x 的相对误差限满足 εr ≤ 1 2(a1 + 1) × 10−n+1 . 则 x 至少有 n 位有效数字. 证明. 由 x 的表达式可知 a1 × 10m−1 ≤ |x| ≤ (a1 + 1) × 10m−1 . 若 x 具有 n 位有效数字, 则 εr = |x − x ∗ | |x| ≤ 0.5 × 10m−n a1 × 10m−1 = 1 2a1 × 10−n+1 . 反之, 若 εr ≤ 1 2(a1+1) × 10−n+1 , 则 |x − x ∗ | = |x| · εr ≤ 0.5 × 10m−n . 故 x 至少有 n 位有效数字. □ 从这个定理可以看出, 有效数字与相对误差是紧密相关的: 有效数字越多, 相对误差就越小; 反之, 相对误差越小, 有效数字就越多. B.1.1 基本算术运算的误差估计 误差估计主要是指如何估计误差限或相对误差限. 我们用 ε(x) 表示 x 的误差限, 则有 ε(x1 ± x2) ≤ ε(x1) + ε(x2), ε(x1x2) ≤ |x2|ε(x1) + |x1|ε(x2), ε x1 x2 ≤ |x1|ε(x1) + |x1|ε(x2) |x2| 2 . B.1.2 函数求值的误差估计 一般地, 设 f(x) 是可微函数, x 为 x ∗ 的近似值, 则由 Taylor 公式可知, 存在 ξ 使得 f(x) − f(x ∗ ) = f ′ (x ∗ )(x − x ∗ ) + 1 2 f ′′(ξ)(x − x ∗ ) 2 . 所以有 ε(f(x)) ≤ |f ′ (x ∗ )|ε(x) + |f ′′(ξ)| 2 ε 2 (x). http://math.ecnu.edu.cn/~jypan
·312. 附录B数值计算中的误差 当f"(引与矿(红的比值不是很大时,我们可以舍去二次项,从而得到 c(fe)≤f(x')le(e). 由于x通常是不知道的,所以我们也用f(x)来近似f(红),即 e(f(z))f(r)le(z). 关于相对误差限,我们有如下的估计: 其中C,=巴称为f回的条件数 J() 对于多元可微函数f(1,正2,,n),设工=(m1,2,,正n)是x=(r1,吃,,x)的近似 值,则有 ea-2器a B2误差分析 ·数值计算中的误差分析很重要,但也很复杂 ·在计算过程中,误差会传播、积累、对消; ·实际计算中的运算次数通常都在干万次以上,因此对每一步运算都做误差分析比较不切实 际 误差分析一般可分为定量分析和定性分析. B2.1定量分析 ·主要方法有:向前误差分析法,向后误差分析法,区间误差分析法,概率分析法等 ·向前误差分析:用输入数据的误差和数值方法本身的误差来分析计算结果的误差 ·向后误差分析:用某个算法计算f(x),得到的近似解为广,假定于是f(x)对应于某个数据玉 的精确解,即了=∫(,分析元一x的大小就是向后误差分析. 向后误差分析法(backward o anaysis由著名数值分析专家.H.Wilkinson于1960年提出。 这是误差理论中最基本的误差分析方法之一, 向后误差分析是一种先验误差估计方法,不仅可以用来讨论算法的稳定性,还可以用于讨论 算法的收敛性. 后验误差估计则是利用得到的数值结果来估计近似解的误差,如在解方程组时,可以利用残 量来估计解的误差。 B.2.2定性分析 ·目前在数值计算中更关注的是误差的定性分析 ·定性分析包括研究数学问题的适定性,数学问题与原问题的相容性,数值算法的稳定性,避免 扩大误差的准则等 http://math.ecnu.edu.cn/-jypan
仅供课堂教学使用,请勿外传 · 312 · 附录 B 数值计算中的误差 当 |f ′′(ξ)| 与 |f ′ (x ∗ )| 的比值不是很大时, 我们可以舍去二次项, 从而得到 ε(f(x)) ⪅ |f ′ (x ∗ )|ε(x). 由于 x ∗ 通常是不知道的, 所以我们也用 f ′ (x) 来近似 f ′ (x ∗ ), 即 ε(f(x)) ⪅ |f ′ (x)|ε(x). 关于相对误差限, 我们有如下的估计: εr(f(x)) = f(x) − f(x ∗ ) f(x ∗) ≈ f ′ (x ∗ )(x − x ∗ ) f(x ∗) = x ∗f ′ (x ∗ ) f(x ∗) · x − x ∗ x ∗ = Cpεr(x), 其中 Cp = x ∗f ′ (x ∗ ) f(x ∗) 称为 f(x) 的 条件数. 对于多元可微函数 f(x1, x2, . . . , xn), 设 x = (x1, x2, . . . , xn) 是 x = (x ∗ 1 , x∗ 2 , . . . , x∗ n ) 的近似 值, 则有 ε(f(x)) ≈ Xn k=1 ∂f(x) ∂x∗ k ε(xk). B.2 误差分析 • 数值计算中的误差分析很重要, 但也很复杂; • 在计算过程中, 误差会传播、积累、对消; • 实际计算中的运算次数通常都在千万次以上, 因此对每一步运算都做误差分析比较不切实 际. 误差分析一般可分为定量分析和定性分析. B.2.1 定量分析 • 主要方法有: 向前误差分析法, 向后误差分析法, 区间误差分析法, 概率分析法等. • 向前误差分析: 用输入数据的误差和数值方法本身的误差来分析计算结果的误差. • 向后误差分析: 用某个算法计算 f(x), 得到的近似解为 ˜f, 假定 ˜f 是 f(x) 对应于某个数据 x˜ 的精确解, 即 ˜f = f(˜x), 分析 x˜ − x 的大小就是向后误差分析. 向后误差分析法 (backward error analysis) 由著名数值分析专家 J. H. Wilkinson 于 1960 年提出, 这是误差理论中最基本的误差分析方法之一. 向后误差分析是一种先验误差估计方法, 不仅可以用来讨论算法的稳定性, 还可以用于讨论 算法的收敛性. 后验误差估计则是利用得到的数值结果来估计近似解的误差, 如在解方程组时, 可以利用残 量来估计解的误差. B.2.2 定性分析 • 目前在数值计算中更关注的是误差的定性分析; • 定性分析包括研究数学问题的适定性, 数学问题与原问题的相容性, 数值算法的稳定性, 避免 扩大误差的准则等; http://math.ecnu.edu.cn/~jypan
B.3数值稳定性 313 ·定性分析的核心是原始数据的误差和计算过程中产生的误差对最终计算结果的影响 凸算法有“优劣”之分,问题有“好坏”之别,即使不能定量地估计出最终误差,但是若能确保 计算过程中误差不会被任意放大,那就能放心地实施计算,这就是研究定性分析的初衷。 B.3数值稳定性 数值计算中的稳定性包括数学问题的稳定性和数值算法的稳定性 B.3.1数学问题的稳定性 如果数学问题满足 ()对任意满足一定条件的输入数据,存在一个解, (②)对任意满足一定条件的输入数据,解是唯一的, ()问题的解关于输入数据是连续的, 则称该数学问题是适定的(we-posed,)否则就称为不适定的(l-posed). 如果输入数据的微小扰动会引起输出数据(即计算结果)的很大变化(误差),则称该数值问 题是病态的, 例B.4解线性方程组 z+ay=1 lax+y=0 解.易知当α=1时,方程组无解.当a≠1时,解为 当a≈1时,解的误差可能会很大.比如当a=0.999时,x≈500.25.假定输入数据a带有0.0001 的误差,即输入数据为a°=0.9991,则此时有x*≈555.81,解的误差约为55.56,是输入数据误差 的五十多万倍,因此该问题的病态的。 ◇ B.3.2病态问题与条件数 设f(x)可导,则其条件数定义为 c=将 ·一般情况下,条件数大于10时,就认为问题是病态的: 。条件数我大问颗病态就拔亚重: ·病态是问题本身固有的性质,与数值算法无关: ·对于病态问题,选择数值算法时需要谨慎。 http://math.ecnu.edu.cn/-jypan
仅供课堂教学使用,请勿外传 B.3 数值稳定性 · 313 · • 定性分析的核心是原始数据的误差和计算过程中产生的误差对最终计算结果的影响. b 算法有 “优劣” 之分, 问题有 “好坏” 之别, 即使不能定量地估计出最终误差, 但是若能确保 计算过程中误差不会被任意放大, 那就能放心地实施计算, 这就是研究定性分析的初衷. B.3 数值稳定性 数值计算中的稳定性包括数学问题的稳定性和数值算法的稳定性. B.3.1 数学问题的稳定性 如果数学问题满足 (1) 对任意满足一定条件的输入数据, 存在一个解, (2) 对任意满足一定条件的输入数据, 解是唯一的, (3) 问题的解关于输入数据是连续的, 则称该数学问题是适定的 (wellposed), 否则就称为不适定的 (illposed). b 如果输入数据的微小扰动会引起输出数据 (即计算结果) 的很大变化 (误差), 则称该数值问 题是病态的. 例 B.4 解线性方程组 x + αy = 1 αx + y = 0 解. 易知当 α = 1 时, 方程组无解. 当 α ̸= 1 时, 解为 x = 1 1 − α2 , y = −α 1 − α2 . 当 α ≈ 1 时, 解的误差可能会很大. 比如当 α = 0.999 时, x ≈ 500.25. 假定输入数据 α 带有 0.0001 的误差, 即输入数据为 α ∗ = 0.9991, 则此时有 x ∗ ≈ 555.81, 解的误差约为 55.56, 是输入数据误差 的五十多万倍, 因此该问题的病态的. □ B.3.2 病态问题与条件数 设 f(x) 可导, 则其条件数定义为 Cp = xf′ (x) f(x) . • 一般情况下, 条件数大于 10 时, 就认为问题是病态的; • 条件数越大问题病态就越严重; • 病态是问题本身固有的性质, 与数值算法无关; • 对于病态问题, 选择数值算法时需要谨慎. http://math.ecnu.edu.cn/~jypan
.314. 附录B数值计算中的误差 B3.3算法的稳定性 例B.5近似计算 ==12 解.通过观察可知 因此。 =-58- (B.1) 易知5=ln6-ln5≈0.182(保留三位有效数字),利用上面的递推公式可得(保留三位有效数字) S1=0.0900,2=0.0500,53=0.0833,54=-0.166, 55=1.03,56=-4.98,S7=25.0,58=-125. 另一方面,我们有 1 B.2) 因此,上面计算的S4,,Ss显然是不对的.原因是什么呢:误差! 设S是Sn的近似值,则 4=8-8=(日-5)(日-58)=-1--=-4-山 即误差是以5倍速度增长,这说明计算过程是不稳定的,因此我们不能使用该算法。 事实上,递推公式(B.1)可以改写为 S-1= 因此,我们可以先估计S的值,然后通过反向递推,得到其它值 我们可以根据(B.2)对S。做简单的估计,即 s=(若女+女)=o 于是 5=0.0209,56=0.0244,5=0.0285,54=0.0343 53=0.0431,52=0.0580,S1=0.0884,50=0.182. 对比精确值S:可知,此时计算出来的Sn精度要好很多. 通过误差分析可知,误差是以号的速度减小,因此计算过程是稳定的 算法的稳定性:通俗地讲,对于某个给定的算法,如果输入数据的误差在运算过程不断增长而 得不到控制,那么我们就说该算法是数值不稳定的,否则就是数值稳定的. 假设输人数据的误差为eo,经n次运算后的计算结果的误差为en·如果en≈Gneo,其中9 是与n无关的常数,则称误差是线性增长的.如果en≈c2k”e0,其中c2,k是与n无关的常数且 http://math.ecnu.edu.cn/-jypan
仅供课堂教学使用,请勿外传 · 314 · 附录 B 数值计算中的误差 B.3.3 算法的稳定性 例 B.5 近似计算 Sn = ˆ 1 0 x n x + 5 dx, n = 1, 2, . . . , 8. 解. 通过观察可知 Sn + 5Sn−1 = ˆ 1 0 x n + 5x n−1 x + 5 dx = ˆ 1 0 x n−1 = 1 n , 因此, Sn = 1 n − 5Sn−1. (B.1) 易知 S0 = ln 6 − ln 5 ≈ 0.182 (保留三位有效数字), 利用上面的递推公式可得 (保留三位有效数字) S1 = 0.0900, S2 = 0.0500, S3 = 0.0833, S4 = −0.166, S5 = 1.03, S6 = −4.98, S7 = 25.0, S8 = −125. 另一方面, 我们有 1 6(n + 1) = ˆ 1 0 x n 6 dx ≤ ˆ 1 0 x n x + 5 dx ≤ ˆ 1 0 x n 5 dx = 1 5(n + 1). (B.2) 因此, 上面计算的 S4, . . . , S8 显然是不对的. 原因是什么呢? 误差! 设 S ∗ n 是 Sn 的近似值, 则 e(S ∗ n ) = S ∗ n − Sn = 1 n − 5S ∗ n−1 − 1 n − 5Sn−1 = −5(S ∗ n−1 − Sn−1) = −5e(S ∗ n−1 ). 即误差是以 5 倍速度增长, 这说明计算过程是不稳定的, 因此我们不能使用该算法. 事实上, 递推公式 (B.1) 可以改写为 Sn−1 = 1 5n − 1 5 Sn. 因此, 我们可以先估计 S8 的值, 然后通过反向递推, 得到其它值. 我们可以根据 (B.2) 对 S8 做简单的估计, 即 S8 ≈ 1 2 ˆ 1 0 x n 6 dx + ˆ 1 0 x n 5 dx ≈ 0.0204. 于是 S7 = 0.0209, S6 = 0.0244, S5 = 0.0285, S4 = 0.0343, S3 = 0.0431, S2 = 0.0580, S1 = 0.0884, S0 = 0.182. 对比精确值 S ∗ n 可知, 此时计算出来的 Sn 精度要好很多. 通过误差分析可知, 误差是以 1 5 的速度减小, 因此计算过程是稳定的. □ 算法的稳定性: 通俗地讲, 对于某个给定的算法, 如果输入数据的误差在运算过程不断增长而 得不到控制, 那么我们就说该算法是数值不稳定的, 否则就是数值稳定的. 假设输入数据的误差为 e0, 经 n 次运算后的计算结果的误差为 en. 如果 en ≈ c1ne0, 其中 c1 是与 n 无关的常数, 则称误差是线性增长的. 如果 en ≈ c2k n e0, 其中 c2, k 是与 n 无关的常数且 http://math.ecnu.edu.cn/~jypan
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
.316. 附录B数值计算中的误差 B4课后习题 实践题 练习2.】数值计算中的误差.已知sin(x)的幂级数展开为 =-黄+-+ 试利用该公式编程计算si加(红/2)和sin(33x2)的值,并与实际值做比较,误差分别多大?分 析原因。 课堂教学使用 http://math.ecnu.edu.cn/-jypan
仅供课堂教学使用,请勿外传 · 316 · 附录 B 数值计算中的误差 B.4 课后习题 实践题 练习 2.1 数值计算中的误差. 已知 sin(x) 的幂级数展开为 sin(x) = x − x 3 3! + x 5 5! − x 7 7! + ... 试利用该公式编程计算 sin(π/2) 和 sin(33π/2) 的值, 并与实际值做比较, 误差分别多大?分 析原因. http://math.ecnu.edu.cn/~jypan