当前位置: 移动技术网 > 科技>操作系统>windows > 数值计算复习笔记之(一)误差定义

数值计算复习笔记之(一)误差定义

2020年10月11日  | 移动技术网科技  | 我要评论
误差准确值与近似值的差距就是误差。误差通常来自于截断误差:由简化问题引起的误差,如求收敛级数之和的近似值cos(x)=1−x22!+x44!−x66!+⋯+(−1)nx2n(2n)!+⋯≈1−x22!cos(x)=1-\frac{x^2}{2!}+\frac{x^4}{4!}-\frac{x^6}{6!}+\cdots+\frac{(-1)^nx^{2n}}{(2n)!}+\cdots\approx1-\frac{x^2}{2!}cos(x)=1−2!x2​+4!x4​−6!x6​+⋯+(2n)!

误差

准确值与近似值的差距就是误差。

误差通常来自于

  1. 截断误差:由简化问题引起的误差,如求收敛级数之和的近似值 c o s ( x ) = 1 − x 2 2 ! + x 4 4 ! − x 6 6 ! + ⋯ + ( − 1 ) n x 2 n ( 2 n ) ! + ⋯ ≈ 1 − x 2 2 ! cos(x)=1-\frac{x^2}{2!}+\frac{x^4}{4!}-\frac{x^6}{6!}+\cdots+\frac{(-1)^nx^{2n}}{(2n)!}+\cdots\approx1-\frac{x^2}{2!} cos(x)=12!x2+4!x46!x6++(2n)!(1)nx2n+12!x2
  2. 舍入误差:由采取舍入操作引起的误差,通常因为计算机等精度限制。
  3. 模型误差及观测误差:由数学模型、观测引起的误差。
    基本上只研究舍入误差和截断误差。

绝对误差与相对误差

设近似值 x ∗ x^* x近似于准确值 x x x,那么 x ∗ x^* x绝对误差(即误差)表示为:
e ( x ∗ ) = x − x ∗ e(x^*)=x-x^* e(x)=xx
由于难以求出准确值,只能估算出误差绝对值的某个上界 ϵ \epsilon ϵ,这些上界称为绝对误差限(即误差限):
∣ e ( x ∗ ) ∣ ≤ ϵ |e(x^*)|\le\epsilon e(x)ϵ

  • 注意误差有正负之分,而误差限总是正值
  • 误差限不唯一

近似值 x ∗ x^* x的误差与准确值 x x x之比称为相对误差 e r ( x ∗ ) e_r(x^*) er(x),由于难以求出准确值,一般取相对误差为:
e r ( x ∗ ) = e ( x ∗ ) x ∗ e_r(x^*)=\frac{e(x^*)}{x^*} er(x)=xe(x)
相似的,估算相对误差的某个上界 ϵ r \epsilon_r ϵr,这些上界称为相对误差限
∣ e r ( x ∗ ) ∣ ≤ ϵ r |e_r(x^*)|\le\epsilon_r er(x)ϵr

有效数字

如果近似值 x ∗ x^* x的误差限是 0.5 × 1 0 − n 0.5×10^{-n} 0.5×10n则称 x ∗ x^* x准确到小数点后的第 n n n位,从第一个非零数字到这一位的所有数字均称为有效数字。

x = 0.003400 ± 0.5 × 1 0 − 5 x=0.003400\pm 0.5×10^{-5} x=0.003400±0.5×105 表示近似值 x ∗ = 0.003400 x^*=0.003400 x=0.003400 精确到小数点后第5位,有3位有效数字。

有效数字与相对误差限关系

x ∗ x^* x n n n位有效数字, a 1 a_1 a1为首位有效数字,则 x ∗ x^* x的相对误差限为:
1 2 a 1 × 1 0 − n + 1 \frac{1}{2a_1}×10^{-n+1} 2a11×10n+1
反之,若 x ∗ x^* x的相对误差限 ϵ r \epsilon_r ϵr满足:
ϵ r ≤ 1 2 a 1 × 1 0 − n + 1 \epsilon_r\le\frac{1}{2a_1}×10^{-n+1} ϵr2a11×10n+1
x ∗ x^* x至少有 n n n位有效数字。

误差基本运算

y = f ( x 1 , x 2 , ⋯   , x n ) y=f(x_1,x_2,\cdots,x_n) y=f(x1,x2,,xn) ,近似解记为 y ∗ = f ( x 1 ∗ , x 2 ∗ , ⋯   , x n ∗ ) y^*=f(x_1^*,x_2^*,\cdots,x_n^*) y=f(x1,x2,,xn)假定 f f f在点 ( x 1 ∗ , x 2 ∗ , ⋯   , x n ∗ ) (x_1^*,x_2^*,\cdots,x_n^*) (x1,x2,,xn)可微解的误差为:
e ( y ∗ ) = y − y ∗ ≈ d y ∗ = ∑ i = 1 n ∂ y ∗ ∂ x i ⋅ e ( x i ∗ ) \begin{aligned} e(y^*)=y-y^* &\approx dy^* \\ &= \sum_{i=1}^{n} \frac{\partial y^*}{\partial x_i}·e(x_i^*) \end{aligned} e(y)=yydy=i=1nxiye(xi)

Δ y = A Δ x + o ( Δ x ) \Delta y = A\Delta x + o(\Delta x) Δy=AΔx+o(Δx) ,这里的 A A A就是偏导 ∂ y ∗ ∂ x \frac{\partial y^*}{\partial x} xy Δ x \Delta x Δx就是 e ( x ∗ ) e(x^*) e(x) d y dy dy A Δ x A\Delta x AΔx
微分学中,当自变量改变量 Δ x \Delta x Δx(这里可以看做是误差)很小时,函数的微分 d y = A Δ x dy=A\Delta x dy=AΔx 作为函数该变量的主要线性部分可以近似函数的改变量 Δ y \Delta y Δy,故利用微分运算公式可导出误差运算公式。

导出误差基本运算公式:
{ e ( x 1 ± x 2 ) = e ( x 1 ) ± e ( x 2 ) e ( x 1 x 2 ) ≈ x 2 e ( x 1 ) + x 1 e ( x 2 ) e ( x 1 x 2 ) ≈ 1 x 2 e ( x 1 ) − x 1 x 2 2 e ( x 2 ) \left\{ \begin{aligned} e(x_1 \pm x_2)&=e(x_1) \pm e(x_2) \\ e(x_1x_2)&\approx x_2e(x_1)+x_1e(x_2)\\ e(\frac{x_1}{x_2})&\approx \frac{1}{x_2}e(x_1)-\frac{x_1}{x_2^2} e(x_2)\\ \end{aligned} \right. e(x1±x2)e(x1x2)e(x2x1)=e(x1)±e(x2)x2e(x1)+x1e(x2)x21e(x1)x22x1e(x2)

解的相对误差为:
e ( y ∗ ) = e ( y ∗ ) y ∗ ≈ d y ∗ y ∗ = ∑ i = 1 n ∂ y ∗ ∂ x i ⋅ e ( x i ∗ ) y ∗ \begin{aligned} e(y^*)=\frac{e(y^*)}{y^*} &\approx \frac{dy^*}{y^*} \\ &= \sum_{i=1}^{n} \frac{\partial y^*}{\partial x_i}·\frac{ e(x_i^*) }{y^*} \end{aligned} e(y)=ye(y)ydy=i=1nxiyye(xi)

导出相对误差基本运算公式:
{ e r ( x 1 ± x 2 ) = e ( x 1 ) ± e ( x 2 ) x 1 ± x 2 e r ( x 1 x 2 ) ≈ e ( x 1 ) x 1 + e ( x 2 ) x 2 = e r ( x 1 ) + e r ( x 2 ) e ( x 1 x 2 ) ≈ e ( x 1 ) x 1 − e ( x 2 ) x 2 = e r ( x 1 ) − e r ( x 2 ) \left\{ \begin{aligned} e_r(x_1 \pm x_2)&= \frac{ e(x_1) \pm e(x_2) }{x_1 \pm x_2}\\ e_r(x_1x_2)&\approx \frac{ e(x_1)}{x_1}+\frac{ e(x_2)}{x_2}=e_r(x_1)+e_r(x_2)\\ e(\frac{x_1}{x_2})&\approx \frac{e(x_1)}{x_1}-\frac{e(x_2)}{x_2}=e_r(x_1)-e_r(x_2)\\ \end{aligned} \right. er(x1±x2)er(x1x2)e(x2x1)=x1±x2e(x1)±e(x2)x1e(x1)+x2e(x2)=er(x1)+er(x2)x1e(x1)x2e(x2)=er(x1)er(x2)

注意分辨公式里的误差 e e e 和相对误差 e r e_r er
相对误差公式即在上述误差公式的基础上除以 y ∗ y^* y ,再把 e e e 转化为 e r e_r er

例1:假设运算中数据都精确到两位小数,试求 x ∗ = a ⋅ b − c x^*=a·b-c x=abc的误差限和相对误差限。
e ( x ∗ ) = a ∗ ⋅ e ( b ∗ ) + b ∗ ⋅ e ( a ∗ ) − e ( c ∗ ) e(x^*)=a^*·e(b^*)+b^*·e(a^*)-e(c^*) e(x)=ae(b)+be(a)e(c)
由于数据精确到两位小数,故 e ( a ∗ ) , e ( b ∗ ) , e ( c ∗ ) ≤ 0.5 × 1 0 − 2 e(a^*),e(b^*),e(c^*) \le 0.5×10^{-2} e(a),e(b),e(c)0.5×102 ,则有:
e ( x ∗ ) ≤ ( 0.5 × 1 0 − 2 ) a ∗ + ( 0.5 × 1 0 − 2 ) b ∗ − ( 0.5 × 1 0 − 2 ) = ( a ∗ + b ∗ − 1 ) ⋅ ( 0.5 × 1 0 − 2 ) \begin{aligned} e(x^*) & \le (0.5×10^{-2})a^*+(0.5×10^{-2})b^*-(0.5×10^{-2}) \\ &=(a^*+b^*-1)·(0.5×10^{-2}) \end{aligned} e(x)(0.5×102)a+(0.5×102)b(0.5×102)=(a+b1)(0.5×102)

数值计算应注意的问题

  1. 避免两个相近的数相减
    e r ( x ∗ − y ∗ ) = e ( x ∗ − y ∗ ) x ∗ − y ∗ e_r(x^*-y^*)=\frac{e(x^*-y^*)}{x^*-y^*} er(xy)=xye(xy)
    相近的 x x x y y y会导致相对误差增大,相对误差限增大,从而使得结果的有效数字减少。
  2. 避免大数吃小数
    由于计算机小数位数精度限制,大数减去小数经常会未变化,此时结果不准确。
  3. 避免除数的绝对值远小于被除数的绝对值
    e ( x y ) ≈ 1 y e ( x ) − x y 2 e ( y ) e(\frac{x}{y})\approx \frac{1}{y}e(x)-\frac{x}{y^2} e(y) e(yx)y1e(x)y2xe(y)
    y ≪ x y\ll x yx时,后项导致舍入误差增大
  4. 要简化计算,减少计算次数
    计算量大小会影响误差的累积。

例2(算法稳定性问题):考虑递推式算法 I n = 1 n − 5 I n − 1 I_n=\frac{1}{n}-5I_{n-1} In=n15In1 ,假设 I 0 I_0 I0 有误差 e 0 e_0 e0 ,计算中没有舍入误差情况下,求 e n e_n en
e n = I n − I n ∗ = − 5 I n − 1 + 5 I n − 1 ∗ = − 5 ( I n − 1 − I n − 1 ∗ ) = − 5 e n − 1 = ( − 5 ) n e 0 \begin{aligned} e_n = I_n - I_n^* &= -5I_{n-1}+5I_{n-1}^* \\&= -5(I_{n-1}-I_{n-1}^*)\\&=-5e_{n-1}\\&= (-5)^ne_0 \end{aligned} en=InIn=5In1+5In1=5(In1In1)=5en1=(5)ne0
每计算一次,误差便会扩大到5倍。由于计算过程中舍入误差增长,该算法不具有数值稳定性。相反,舍入误差不增长的算法具有数值稳定性

本文地址:https://blog.csdn.net/weixin_39955411/article/details/109011134

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网