计算方法(一):误差

四种误差的定义

1. 模型误差:

由数学模型(比如公式)产生的误差。

例1: 自由落体运动
s = 1 2 g t 2 , g ≈ 9.8 m / s 2 s=\frac{1}{2}gt^2,g\approx 9.8m/s^2 s=21gt2,g9.8m/s2
产生的计算数据 s ( t ) s(t) s(t),同物体真实下落的距离 s ∗ ( t ) s^*(t) s(t)产生的模型误差> s ∗ ( t ) − s ( t ) s^*(t)-s(t) s(t)s(t)

2. 观测误差:

由观测得到的观测数据产生的误差。

例2: 给出一个参数 α = ( 0.0021 ± 0.001 ) \alpha = (0.0021 \pm 0.001) α=(0.0021±0.001)中,0.001就是观测误差。

3. 截断误差:

模型的准确解与应用数值方法求得的解的差。

例3: 用Taylor公式计算指数
e x = 1 + x + x 2 2 ! + … + x n n ! + … e^x=1+x+\frac{x^2}{2!}+\ldots + \frac{x^n}{n!}+\ldots ex=1+x+2!x2++n!xn+
如果只取前n+1项,得到的阶段误差就是:
∑ k = 0 ∞ x k k ! − ∑ k = 0 n x k k ! = ∑ k = n + 1 ∞ x k k ! \sum_{k=0}^{\infty}\frac{x^k}{k!}-\sum_{k=0}^{n}\frac{x^k}{k!}=\sum_{k=n+1}^{\infty}\frac{x^k}{k!} k=0k!xkk=0nk!xk=k=n+1k!xk

4. 舍入误差

对于无限小数,计算时只能取有限项位小数引起的误差。

例4: 用3.1415近似代替圆周率 π \pi π,得到的就是舍入误差:
p = 3.1415 − 3.141592 … = − 0.000092 … p=3.1415-3.141592\ldots\\ =-0.000092\ldots p=3.14153.141592=0.000092

浮点数

1. 浮点数的表示方法

定义 任何一个有限位浮点数均可以表示成
x = ± ω β J = ± 0. α 1 α 2 … α t × β J , L ≤ J ≤ U x=\pm \omega \beta^J=\pm 0.\alpha_1\alpha_2\ldots\alpha_t\times\beta^J, L\leq J\leq U x=±ωβJ=±0.α1α2αt×βJ,LJU
其中, β \beta β称为基,代表进制系统, J J J代表阶,是一个整数, ω = 0. α 1 α 2 … α t \omega=0.\alpha_1\alpha_2\ldots\alpha_t ω=0.α1α2αt表示尾数,其中 0 ≤ α i ≤ β , i = 1 , 2 , … t 0\leq \alpha_i \leq \beta, i=1,2,\ldots t 0αiβ,i=1,2,t

规格化浮点数: x = 0. α 1 α 2 … α t × β J x=0.\alpha_1\alpha_2\ldots\alpha_t\times\beta^J x=0.α1α2αt×βJ,其中尾数第一项 α 1 ≠ 0 \alpha_1 \neq 0 α1=0

例5:

  • 十进制浮点数: x = 3.14 = 0.314 × 1 0 1 x=3.14=0.314 \times 10^1 x=3.14=0.314×101
  • 二进制浮点数: x = 1011.1101 = 0.10111101 × 2 4 x=1011.1101=0.10111101 \times 2^4 x=1011.1101=0.10111101×24
  • 十六进制浮点数: x = 3 A 0 F . B C 1 = 0.3 A 0 F B C 1 × 1 6 4 x=3A0F.BC1=0.3A0FBC1 \times 16^4 x=3A0F.BC1=0.3A0FBC1×164

2. 计算机位数与浮点数

一个n位的计算机内浮点数的表示一定是有限的,而且受限于位数。所以对于一个出厂的计算机来说,它内部表示的浮点数的尾数尾数 t t t是固定的。

我们用
F = { x : x = 0. α 1 α 2 … α t × β J , L ≤ J ≤ U } \mathcal{F}=\{x:x=0.\alpha_1\alpha_2\ldots\alpha_t\times\beta^J,L\leq J\leq U\} F={x:x=0.α1α2αt×βJ,LJU}
表示 β \beta β进位制计数系统的全体浮点数, L L L表示 上溢限 U U U表示下溢限。 当一个浮点数超过 0.99 … 9 × 1 0 U 0.99\ldots9 \times 10^U 0.999×10U或者小于 − 0.99 … × 1 0 L -0.99\ldots\times 10^L 0.99×10L时,计算机无法表示这个浮点数(十进制意义)。

误差、误差限、有效数字

1. 误差的准确定义

1.1 定义 x ∗ x^* x表示 x x x的准确值的一个近似值,将近似值与准确值之差称之为近似值 x ∗ x^* x绝对误差

e ∗ = x ∗ − x e^*=x^*-x e=xx

1.2 误差的性质

  1. 近似值减去它的误差就是准确值: x = x ∗ − e ∗ x=x^*-e^* x=xe;
  2. 误差可正可负;
  3. 误差为正:强近似;误差为负:弱近似

2. 误差限

2.1 定义 由于准确值 x x x可能无法得出,所以我们成误差的绝对值的上界为误差限:

∣ e ∗ ∣ = ∣ x ∗ − x ∣ ≤ ϵ ∗ → 误 差 限 |e^*|=|x^*-x| \leq \epsilon^* \rightarrow 误差限 e=xxϵ

误差限可以有很多,但是一定是非负数;近似值 x ∗ x^* x的精确度表示:
x = x ∗ ± ϵ ∗ x=x^* \pm \epsilon^* x=x±ϵ

例6: 用毫米( m m mm mm)刻度米尺测量长度,读出 x ∗ = 1235 m m x^*=1235mm x=1235mm。而米尺的误差不拆过 0.55 m m 0.55mm 0.55mm。这个时候可以取误差限为 ϵ ∗ = 0.55 m m \epsilon^*=0.55mm ϵ=0.55mm,从而准确值:
( x = 1235 ± 0.5 ) m m (x=1235\pm 0.5)mm (x=1235±0.5)mm

2.2 四舍五入方法

把一个数 x x x按四舍五入方法取得近似数的准则是:按照舍入到第几位小数,查看其下一位数,小于五则直接舍入;若大于五,舍去此位,然后前一位进一。

3. 有效数字

3.1 定义 :如果近似值 x ∗ x^* x的误差限是 x ∗ x^* x的某一位的半个单位,则该位到 x ∗ x^* x的第一位非零数字一共有 n n n位,就称近似值 x ∗ x^* xn位有效数字

如果用四舍五入方法取准确值的前n位作为近似值,那么这个近似值就有n位有效数字。

3.2 误差限与有效数字的关系

设规格化浮点数 x ∗ = 0. α 1 α 2 … α n … × 1 0 P x^*=0.\alpha_1\alpha_2\ldots\alpha_n\ldots\times10^P x=0.α1α2αn×10P,如果误差限 ϵ ∗ = 1 2 × 1 0 P − n \epsilon^* = \frac{1}{2}\times 10^{P-n} ϵ=21×10Pn,也就是
∣ x ∗ − x ∣ ≤ 1 2 × 1 0 P − n |x^*-x| \leq \frac{1}{2}\times 10^{P-n} xx21×10Pn
则称 x ∗ x^* x具有n位有效数字。

例7:

  1. 首先将近似值 x ∗ x^* x表示成规格化浮点数
    a 1 a 2 . a 3 a 4 = 0. a 1 a 2 a 3 a 4 × 1 0 2 0.00 a 1 a 2 a 3 = 0. a 1 a 2 a 3 × 1 0 − 2 a_1a_2.a_3a_4=0.a_1a_2a_3a_4\times 10^2\\ 0.00a_1a_2a_3=0.a_1a_2a_3\times 10^{-2} a1a2.a3a4=0.a1a2a3a4×1020.00a1a2a3=0.a1a2a3×102
  2. 利用 ϵ ∗ = 1 2 × 1 0 P − n \epsilon^* = \frac{1}{2}\times 10^{P-n} ϵ=21×10Pn
    ϵ 1 ∗ = 1 2 × 1 0 2 − 4 ϵ 1 ∗ = 1 2 × 1 0 − 2 − 3 \epsilon_{1}^* = \frac{1}{2}\times 10^{2-4}\\ \epsilon_{1}^* = \frac{1}{2}\times 10^{-2-3} ϵ1=21×1024ϵ1=21×1023

相对误差

1. 相对误差的定义

定义 近似数的误差和准确值的比值,称为近似数的相对误差。
e r ∗ = e ∗ x = x ∗ − x x e^*_r=\frac{e^*}{x}=\frac{x^*-x}{x} er=xe=xxx
如果 e r ∗ e^*_r er较小,可以用 x ∗ x^* x代替 x x x,然后用
e r ∗ = e ∗ x ∗ = x ∗ − x x ∗ e^*_r=\frac{e^*}{x^*}=\frac{x^*-x}{x^*} er=xe=xxx
表示相对误差

2. 相对误差限的定义

定义 相对误差绝对值的上界,称为近似值的相对误差限
ϵ r ∗ = ϵ ∗ ∣ x ∣ \epsilon^*_r=\frac{\epsilon^*}{|x|} ϵr=xϵ
或者
ϵ r ∗ = ϵ ∗ ∣ x ∗ ∣ \epsilon^*_r=\frac{\epsilon^*}{|x^*|} ϵr=xϵ

例8:

  1. 参数 α = ( 2.35 ± 0.001 ) m m \alpha=(2.35\pm 0.001)mm α=(2.35±0.001)mm的相对误差限为
    ϵ r ∗ = 0.001 2.35 ≈ 0.0043 \epsilon_r^*=\frac{0.001}{2.35} \approx 0.0043 ϵr=2.350.0010.0043
  2. π \pi π的近似值 x ∗ = 3.14159 x^*=3.14159 x=3.14159的相对误差
    ϵ r ∗ = 0.00008 3.14159 ≈ 0.000025 \epsilon_r^*=\frac{0.00008}{3.14159} \approx 0.000025 ϵr=3.141590.000080.000025

3. 相对误差与有效数字的关系

(1)设近似数(采用规格化浮点数) x ∗ = ± 0. α 1 α 2 … α n … × 1 0 p x^*=\pm 0.\alpha_1\alpha_2\ldots\alpha_n\ldots\times 10^p x=±0.α1α2αn×10p,那么它的相对误差限可以选为
ϵ r ∗ = 1 2 α 1 × 1 0 − ( n − 1 ) \epsilon_r^*=\frac{1}{2\alpha_1}\times 10^{-(n-1)} ϵr=2α11×10(n1)

(2)若近似数 x ∗ x^* x的相对误差限满足
ϵ r ∗ ≤ 1 2 ( α 1 + 1 ) × 1 0 − ( n − 1 ) \epsilon_r^*\leq \frac{1}{2(\alpha_1+1)}\times 10^{-(n-1)} ϵr2(α1+1)1×10(n1)
那么近似数 x ∗ x^* x至少有n位有效数字。

误差的传播

1. 基本四则运算结果的误差限

设有两个近似数 x ∗ , y ∗ x^*,y^* x,y和精确数 x , y x,y x,y x ∗ , y ∗ x^*,y^* x,y的误差限为
ϵ ∗ ( x ∗ ) , ϵ ∗ ( y ∗ ) \epsilon^*(x^*),\epsilon^*(y^*) ϵ(x),ϵ(y)
那么

  1. 加减法: x ∗ ± y ∗ x^*\pm y^* x±y的误差限
    ϵ ∗ ( x ∗ ± y ∗ ) = ϵ ∗ ( x ∗ ) + ϵ ∗ ( y ∗ ) \epsilon^*(x^*\pm y^*)=\epsilon^*(x^*)+\epsilon^*(y^*) ϵ(x±y)=ϵ(x)+ϵ(y)
  2. 乘法: x ∗ y ∗ x^* y^* xy的误差限
    ϵ ∗ ( x ∗ y ∗ ) = ∣ y ∗ ∣ ϵ ∗ ( x ∗ ) + ∣ x ∗ ∣ ϵ ∗ ( y ∗ ) \epsilon^*(x^* y^*)=|y^*|\epsilon^*(x^*)+|x^*|\epsilon^*(y^*) ϵ(xy)=yϵ(x)+xϵ(y)
  3. 除法: x ∗ y ∗ \frac{x^*}{y^*} yx的误差限
    ϵ ∗ ( x ∗ y ∗ ) = ∣ y ∗ ∣ ϵ ∗ ( x ∗ ) + ∣ x ∗ ∣ ϵ ∗ ( y ∗ ) ∣ y ∗ ∣ 2 \epsilon^*(\frac{x^*}{y^*})=\frac{|y^*|\epsilon^*(x^*)+|x^*|\epsilon^*(y^*)}{|y^*|^2} ϵ(yx)=y2yϵ(x)+xϵ(y)

这些误差限都可以用定义结合三角不等式得出。

例9: 已知 a = 1.21 × 3.65 + 9.81 a=1.21\times 3.65+9.81 a=1.21×3.65+9.81,每个数的绝对误差限都为0.005,求 a a a的误差限
ϵ ∗ ( a ) = ϵ ∗ ( a = 1.21 × 3.65 + 9.81 ) = ϵ ∗ ( 1.21 × 3.65 ) + ϵ ∗ ( 9.81 ) = 1.21 × ϵ ∗ ( 3.65 ) + 3.65 × ϵ ∗ ( 1.21 ) + ϵ ∗ ( 9.81 ) = ( 1.21 + 3.65 + 1 ) × 0.005 ≈ 0.0293 ≤ 0.3 \epsilon^*(a)=\epsilon^*(a=1.21\times 3.65+9.81)\\ =\epsilon^*(1.21\times 3.65)+\epsilon^*(9.81)\\ =1.21\times\epsilon^*(3.65)+3.65\times\epsilon^*(1.21)+\epsilon^*(9.81)\\ =(1.21+3.65+1)\times 0.005\approx 0.0293\leq 0.3 ϵ(a)=ϵ(a=1.21×3.65+9.81)=ϵ(1.21×3.65)+ϵ(9.81)=1.21×ϵ(3.65)+3.65×ϵ(1.21)+ϵ(9.81)=(1.21+3.65+1)×0.0050.02930.3
所以可取 ϵ ∗ ( a ) = 0.3 \epsilon^*(a)=0.3 ϵ(a)=0.3

2. 基本四则运算结果的相对误差限

设有两个近似数 x ∗ , y ∗ x^*,y^* x,y和精确数 x , y x,y x,y x ∗ , y ∗ x^*,y^* x,y的相对误差限为
ϵ r ∗ ( x ∗ ) , ϵ r ∗ ( y ∗ ) \epsilon^*_r(x^*),\epsilon^*_r(y^*) ϵr(x),ϵr(y)
那么

  1. 加法: x ∗ + y ∗ x^*+ y^* x+y的相对误差限
    ϵ r ∗ ( x ∗ + y ∗ ) = max ⁡ { ϵ r ∗ ( x ∗ ) , ϵ r ∗ ( y ∗ ) } \epsilon^*_r(x^*+ y^*)=\max\{\epsilon^*_r(x^*),\epsilon^*_r (y^*)\} ϵr(x+y)=max{ϵr(x),ϵr(y)}
  2. 减法: x ∗ − y ∗ x^* -y^* xy的相对误差限
    ϵ r ∗ ( x ∗ − y ∗ ) = ϵ ∗ ( x ∗ ) + ϵ ∗ ( y ∗ ) ∣ x ∗ − y ∗ ∣ \epsilon^*_r(x^*- y^*)=\frac{\epsilon^*(x^*)+\epsilon^*(y^*)}{|x^*-y^*|} ϵr(xy)=xyϵ(x)+ϵ(y)
  3. 乘、除法: x ∗ y ∗ x^* y^* xy, x ∗ y ∗ \frac{x^*}{y^*} yx的相对误差限
    ϵ r ∗ ( x ∗ y ∗ ) = ϵ r ∗ ( x ∗ y ∗ ) = ϵ r ∗ ( x ∗ ) + ϵ r ∗ ( y ∗ ) \epsilon^*_r(x^* y^*)=\epsilon^*_r(\frac{x^*}{y^*})=\epsilon^*_r(x^*)+\epsilon^*_r(y^*) ϵr(xy)=ϵr(yx)=ϵr(x)+ϵr(y)

例10: 求例9的数的相对误差限
ϵ r ∗ ( a ) = ϵ r ∗ ( 1.21 × 3.65 + 9.81 ) = max ⁡ { ϵ r ∗ ( 1.21 × 3.65 ) , ϵ r ∗ ( 9.81 ) } = max ⁡ { 0.005 1.21 + 0.005 3.65 , 0.005 9.81 } = 0.0055 \epsilon^*_r(a)=\epsilon^*_r(1.21\times 3.65+9.81)\\ =\max\{\epsilon^*_r(1.21\times 3.65),\epsilon^*_r(9.81)\}\\ =\max\{\frac{0.005}{1.21}+\frac{0.005}{3.65},\frac{0.005}{9.81}\}\\ =0.0055 ϵr(a)=ϵr(1.21×3.65+9.81)=max{ϵr(1.21×3.65),ϵr(9.81)}=max{1.210.005+3.650.005,9.810.005}=0.0055
所以可取 ϵ r ∗ ( a ) = 0.0055 \epsilon^*_r(a)=0.0055 ϵr(a)=0.0055

3. 函数运算后的误差限

设准确值 x x x有近似值 x 0 x_0 x0,用 f ( x 0 ) f(x_0) f(x0)去近似 f ( x ) f(x) f(x)时,误差可用Taylor展开式得到
e ∗ ( f ( x ) − f ( x 0 ) ) = e ∗ ( f ′ ( x 0 ) ( x − x 0 ) ) e^*(f(x)-f(x_0))=e^*(f'(x_0)(x-x_0)) e(f(x)f(x0))=e(f(x0)(xx0))
误差限
ϵ ∗ ( f ( x 0 ) ) = ∣ f ′ ( x 0 ) ∣ ϵ ∗ ( x 0 ) \epsilon^*(f(x_0))=|f'(x_0)|\epsilon^*(x_0) ϵ(f(x0))=f(x0)ϵ(x0)

再来看一个特殊的例子

例11: 请问0.25用来表示 1 4 \frac{1}{4} 41有几位有效数字?
0.25 = 0.25000 … 0.25=0.25000\ldots 0.25=0.25000
所以有无限位有效数字

例12: 已知 x x x的相对误差限为 α % \alpha\% α%,求 x n x^n xn的相对误差限。
ϵ r ∗ ( x n ) = ϵ ∗ ( x n ) ∣ x n ∣ = n ∣ x n − 1 ∣ ϵ ∗ ( x ) ∣ x n ∣ = n ϵ ∗ ( x ) ∣ x ∣ = n ϵ r ∗ ( x ) = n α % \epsilon^*_r(x^n)=\frac{\epsilon^*(x^n)}{|x^n|}=\frac{n|x^{n-1}|\epsilon^*(x)}{|x^n|}=\frac{n\epsilon^*(x)}{|x|}=n\epsilon^*_r(x)=n\alpha\% ϵr(xn)=xnϵ(xn)=xnnxn1ϵ(x)=xnϵ(x)=nϵr(x)=nα%

你可能感兴趣的:(数学建模,#,数值分析)