数值分析--第一章--误差分析

误差分析

误差的来源与分类

  • 观测误差
  • 模型误差
  • 截断误差:近似计算出现的误差
  • 舍入误差:由于计算级只能进行有限位的运算而产生的误差
  • 绝对误差: e = x ∗ − x e=x^{*}-x e=xx 其中e为绝对误差
    如果 ϵ \epsilon ϵ满足:
    ∣ e ∣ ≤ ϵ |e|\leq\epsilon eϵ, 则 ϵ \epsilon ϵ x x x的绝对误差限
  • 相对误差:
    e r = x ∗ − x x = e x e_r = \frac{x^* - x}{x} = \frac{e}{x} er=xxx=xe, e r e_r er为相对误差
  • 相对误差限:
    ϵ r = ϵ ∣ x ∣ \epsilon_r=\frac{\epsilon}{|x|} ϵr=xϵ, ϵ r \epsilon_r ϵr为相对误差限,同时 ∣ e r ∣ ≤ ϵ r |e_r|\le\epsilon_r erϵr

有效数字

  • 有效数字与绝对误差限的关系:
    ∣ x ∗ − x ∣ ≤ 1 2 × 1 0 m − n |x^*-x|\leq\frac{1}{2}\times10^{m-n} xx21×10mn,其中 n n n为有效数字的位数, m m m x ∗ x^* x化为标准浮点数形式下的10的 m m m次幂。
    注:精确值的有效数字有无穷多位!
  • 有效数字和相对误差限的关系(其中 a 1 a_1 a1 x x x化为标准浮点数下小数点后第一个非零的数):
    • 已知有效位数 n n n:
      ϵ r ≤ 1 2 a 1 × 1 0 − n + 1 \epsilon_r\le\frac{1}{2a_1}\times10^{-n+1} ϵr2a11×10n+1

    • 已知 x x x的相对误差限:
      ϵ r ≤ 1 2 ( a 1 + 1 ) × 1 0 − n + 1 \epsilon_r\le\frac{1}{2(a_1+1)}\times10^{-n+1} ϵr2(a1+1)1×10n+1

数值计算中的若干原则

  • 避免两个相近的数相减(使用其他算法,公式?乘除?)
    假设 z = x − y , z ∗ = x ∗ − y ∗ z=x-y,z^*=x^*-y^* z=xy,z=xy,那么:
    e r ( z ) = ∣ x x − y ∣ ∣ e r ( x ) ∣ + ∣ y x − y ∣ ∣ e r ( x ) ∣ e_r(z)=|\frac{x}{x-y}||e_r(x)|+|\frac{y}{x-y}||e_r(x)| er(z)=xyxer(x)+xyyer(x),从该式中我们可以看出 z z z的相对误差会特别大

  • 防止“大数”吃掉小数(改变运算顺序?)

  • 绝对值太小的数不宜做除数
    假设 z = x ÷ y , z ∗ = x ∗ ÷ y ∗ z=x\div y,z^*=x^*\div y^* z=x÷y,z=x÷y,那么:

    e ( z ) = ∣ z ∗ − z ∣ = ∣ y ( x ∗ − x ) + x ( y − y ∗ ) y y ∗ ∣ ≈ ∣ y ∣ ∣ e ( x ) ∣ + ∣ x ∣ ∣ e ( y ) ∣ y 2 e(z)=|z^*-z|=|\frac{y(x^*-x)+x(y-y^*)}{yy*}|\approx \frac{|y||e(x)|+|x||e(y)|}{y^2} e(z)=zz=yyy(xx)+x(yy)y2ye(x)+xe(y)

    则如果 y y y的绝对值太小,那么 z z z的绝对误差较大

  • 注意简化计算程序,减少计算次数(舍入误差的积累和计算的时间)

  • 选用数值稳定性好的算法

例题

  1. 将下列表达式进行等价变形,使其数值计算结果较为精确。

    (1) 1 1 − 2 x − 1 + x 1 − x , ∣ x ∣ < < 1 \frac{1}{1-2x}-\frac{1+x}{1-x},|x|<<1 12x11x1+x,x<<1

    解: 原 式 = 2 x 2 ( 1 − 2 x ) ( 1 − x ) 原式=\frac{2x^2}{(1-2x)(1-x)} =(12x)(1x)2x2

    (2) 1 − e x x , ∣ x ∣ < < 1 \frac{1-e^x}{x},|x|<<1 x1ex,x<<1

    解:由 e x e^x ex在x=0处的泰勒展开式可得:

    e x = 1 + x + 1 2 ! x 2 + … + 1 n ! x 2 + R n ( x ) e^x= 1+x+\frac{1}{2!}x^2+…+\frac{1}{n!}x^2+R_n(x) ex=1+x+2!1x2++n!1x2+Rn(x)

    所以

    1 − e x x = x + 1 2 ! x 2 + … + 1 n ! x 2 x = 1 + 1 2 ! x + 1 3 ! x 2 + … + 1 n ! x n − 1 \frac{1-e^x}{x}=\frac{x+\frac{1}{2!}x^2+…+\frac{1}{n!}x^2}{x}=1+\frac{1}{2!}x+\frac{1}{3!}x^2+…+\frac{1}{n!}x^{n-1} x1ex=xx+2!1x2++n!1x2=1+2!1x+3!1x2++n!1xn1

  2. 假设 f = ( 2 − 1 ) 6 , 2 f=(\sqrt{2}-1)^6,\sqrt{2} f=(2 1)6,2 取1.4,下列哪种计算方式的精确度最高。

    (1) 1 ( 2 + 1 ) 6 ⇒ f ( x ) = 1 x 6 \frac{1}{(\sqrt{2}+1)^6}\Rightarrow f(x)=\frac{1}{x^6} (2 +1)61f(x)=x61

    (2) ( 3 − 2 2 ) 3 ⇒ f ( x ) = x 3 (3-2\sqrt2)^3 \Rightarrow f(x)=x^3 (322 )3f(x)=x3

    (3) 1 ( 3 − 2 2 ) 3 ⇒ f ( x ) = 1 x 3 \frac{1}{(3-2\sqrt2)^3} \Rightarrow f(x)=\frac{1}{x^3} (322 )31f(x)=x31

    (4) 99 − 70 2 ⇒ f ( x ) = 99 − 70 x 99-70\sqrt2 \Rightarrow f(x)=99-70x 99702 f(x)=9970x

    解:使用函数的条件数 c o n d = ∣ f ′ ( x ) x f ( x ) ∣ cond=|\frac{f^{'}(x)x}{f(x)}| cond=f(x)f(x)x

    x = 1.4 x=1.4 x=1.4带入其中,可得(3)式的精确度最高。

    注:条件数低为良态,条件数高为病态。

补充: x 1 x 2 x_1x_2 x1x2的绝对误差限

x 1 ≈ x 1 , x 2 ≈ x 2 x_1\approx x_1,x_2\approx x_2 x1x1,x2x2
∣ x 1 x 2 − x 1 ∗ x 2 ∗ ∣ = ∣ x 1 x 2 − x 1 x 2 ∗ + x 1 x 2 ∗ − x 1 ∗ x 2 ∗ ∣ |x_1x_2-x_1^*x_2^*|=|x_1x_2-x_1x_2^*+x_1x_2^*-x_1^*x_2^*| x1x2x1x2=x1x2x1x2+x1x2x1x2
≤ ∣ x 1 ∣ ∣ x 2 − x 2 ∗ ∣ + ∣ x 2 ∗ ∣ ∣ x 1 − x 1 ∗ ∣ \le|x_1||x_2-x_2^*|+|x_2^*||x_1-x_1^*| x1x2x2+x2x1x1
= ∣ x 1 ∣ ∣ e ( x 2 ) ∣ + ∣ x 2 ∣ ∣ e ( x 1 ) ∣ =|x_1||e(x_2)|+|x_2||e(x_1)| =x1e(x2)+x2e(x1)

你可能感兴趣的:(数值分析)