工程数学中的误差

第一章 概论

  • 数值计算方法(数值分析):求解的数值方法及与此有关的理论。

  • 实际问题的步骤:(面向计算机)

    1. 实际问题
    2. 数学模型(应用数学:数学建模)
    3. 数值算法(计算数学)
    4. 设计程序
    5. 出结果
  • 做题步骤

    1. 数值计算
    2. 近似结果
    3. 误差估计

1.1 误差基本概念

  • 种类

    例题:用牛顿第二定律测量单摆周期 T = 2 π l g T=2\pi\sqrt{\dfrac{l}{g}} T=2πgl .
    在这里插入图片描述

    1. 模型误差:忽视空气阻力,摩擦力
    2. 观测误差:重力加速度 g g g 不精确
    3. 截断误差 θ ≈ sin ⁡ θ \theta \approx \sin\theta θsinθ (无限的计算过程用有限步替代:泰勒展开)
    4. 舍入误差:数位太长四舍五入
  • 绝对误差与相对误差

    x x x 是准确值 x ∗ x^* x 的近似值

    • 绝对误差 e ( x ) = x − x ∗ \color{red}e(x)=x-x^* e(x)=xx x x x 的绝对误差,注意没有绝对值。

      e ( x ) > 0 e(x)>0 e(x)>0,称 x x x x ∗ x^* x的强近似; e ( x ) < 0 e(x)<0 e(x)<0,称 x x x x ∗ x^* x 的近似。

    • 绝对误差限/界(用于误差估计):确定 η > 0 \eta>0 η>0,使 ∣ e ( x ) ∣ = ∣ x − x ∗ ∣ ≤ η \color{red}|e(x)|=|x-x^*|\le \eta e(x)=xxη ,称 η \eta η x x x 的绝对误差限(不唯一)。

    • 相对误差 e r ( x ) = x − x ∗ x ∗ ≈ x − x ∗ x \color{red}e_r(x)=\dfrac{x-x^*}{x^*}\approx \dfrac{x-x^*}{x} er(x)=xxxxxx x x x 的相对误差。

      e ( x ) > 0 e(x)>0 e(x)>0,称 x x x x ∗ x^* x 的强近似; e ( x ) < 0 e(x)<0 e(x)<0,称 x x x x ∗ x^* x 的弱近似

    • 绝对误差限/界:若存在 η > 0 \eta>0 η>0,使 ∣ e r ( x ) ∣ ≤ η \color{red}|e_r(x)|\le \eta er(x)η ,称 η \eta η x x x 的相对误差限

  • 有效数字:工程上常用有效数字,可隐含绝对误差限相对误差限

    • 简单说:若近似值 x x x 误差限是某一位上的 半个单位,该位到左边第一位非零数字共有 n n n 位,则称 x x x 具有 x x x 位有效数字。
    • a 1 ≠ 0 , x = ± 1 0 m × a 1 . a 2 a 3 . . . a n . . . a_1\ne0,x=\pm10^m\times a_1.a_2a_3...a_n... a1=0,x=±10m×a1.a2a3...an...,若 η ≤ 1 2 × 1 0 m − ( n − 1 ) \eta\le {1\over 2}\times 10^{m-(n-1)} η21×10m(n1),则 a n a_n an为有效数字, x x x 共有 n n n 位有效数字。

    例:精确数 π 0 = 3.14159265.. \pi_0=3.14159265.. π0=3.14159265..,近似数 π = 3.1416 \pi=3.1416 π=3.1416,求有效数字

    解:
    e ( π ) = 3.1416 − 3.14159265.. = 0.00000734.. ≤ 0.5 × 1 0 − 4 称 π = 3.1416 准 确 到 小 数 点 后 4 位 , 共 5 位 有 效 数 字 e(\pi)=3.1416-3.14159265..=0.00000734..\le 0.5\times 10^{-4} \\ 称\pi=3.1416准确到小数点后4位,共5位有效数字 e(π)=3.14163.14159265..=0.00000734..0.5×104π=3.14164,5

  • 定理1.1:近似数 x x x n n n 位有效数字,则其相对误差限 η ≤ 1 2 a 1 × 1 0 − ( n − 1 ) \color{red}\eta\le\dfrac{1}{2a_1}\times 10^{-(n-1)} η2a11×10(n1)

    ​ 反之,若 x x x 有相对误差限 η ≤ 1 2 ( a 1 + 1 ) × 1 0 − ( n − 1 ) \color{red}\eta\le\dfrac{1}{2(a_1+1)}\times 10^{-(n-1)} η2(a1+1)1×10(n1),则 x x x 至少具有 n n n 位有效数字。

    表明有效数字位数越多,相对误差越小。

  • 基本运算与函数运算的误差估计

    • 引入微分 { e ( x ) = x − x ∗ = d x e r ( x ) = d x x = d ln ⁡ x \begin{cases}e(x)=x-x^*=dx \\e_r(x)=\dfrac{dx}{x}=d\ln{x} \end{cases} e(x)=xx=dxer(x)=xdx=dlnx

    • 四则运算

      • 加减法:
        e ( x ± y ) = e ( x ) ± e ( y ) e(x\pm y)=e(x)\pm e(y) e(x±y)=e(x)±e(y)

      • 乘法:
        { e ( x y ) = d ( x y ) = x d ( y ) + y d ( x ) = x e ( y ) + y e ( x ) e r ( x y ) = d ln ⁡ ( x y ) = d ln ⁡ x + d ln ⁡ y = e r ( x ) + e r ( y ) \begin{cases}e(xy)=d(xy)=xd(y)+yd(x)=xe(y)+ye(x) \\e_r(xy)=d\ln(xy)=d\ln{x}+d\ln{y}=\color{red}e_r(x)+e_r(y) \end{cases} {e(xy)=d(xy)=xd(y)+yd(x)=xe(y)+ye(x)er(xy)=dln(xy)=dlnx+dlny=er(x)+er(y)

      • 除法:
        { e ( x y ) = y e ( x ) − x e ( y ) y 2 e r ( x y ) = e r ( x ) − e r ( y ) \begin{cases}e(\dfrac{x}{y})=\dfrac{ye(x)-xe(y)}{y^2} \\e_r(xy)=\color{red}e_r(x)-e_r(y) \end{cases} e(yx)=y2ye(x)xe(y)er(xy)=er(x)er(y)

    • 函数运算

      • 函数值:
        { e ( f ) = f ( x ) − f ( x ∗ ) ≈ d f ( x ) = f ′ ( x ) d x = f ′ ( x ) e ( x ) e r ( f ) ≈ d f ( x ) f ( x ) = f ′ ( x ) d x f ( x ) = x f ′ ( x ) f ( x ) e r ( x ) \begin{cases}e(f)=f(x)-f(x^*)\approx df(x)=f'(x)dx=\color{red}f'(x)e(x) \\e_r(f)\approx \dfrac{df(x)}{f(x)}= \dfrac{f'(x)dx}{f(x)} =\color{red}\dfrac{xf'(x)}{f(x)}e_r(x) \end{cases} e(f)=f(x)f(x)df(x)=f(x)dx=f(x)e(x)er(f)f(x)df(x)=f(x)f(x)dx=f(x)xf(x)er(x)

      • 于是,当== ∣ f ′ ( x ) ∣ ≤ 1 |f'(x)|\le1 f(x)1 ∣ x f ′ ( x ) f ( x ) ∣ ≤ 1 |\dfrac{xf'(x)}{f(x)}|\le1 f(x)xf(x)1==时,使 ∣ e ( f ) ∣ ≤ ∣ e ( x ) ∣ , ∣ e r ( f ) ∣ ≤ ∣ e r ( x ) ∣ |e(f)|\le|e(x)|,|e_r(f)|\le|e_r(x)| e(f)e(x),er(f)er(x)(函数值舍入误差不增加/可控),此时称算法是稳定的。

1.2 算法的优化与注意

  • 更稳定的数值计算格式

    例: 设 计 一 个 稳 定 算 法 , 计 算 定 积 分 I n = ∫ 0 1 x n e x   d x ( n = 0 , 1 , . . . , 99 ) \color{blue}设计一个稳定算法,计算定积分I_n=\int_0^1x^ne^x\,dx(n=0,1,...,99) In=01xnexdx(n=0,1,...,99)

    解:
    分 部 积 分 : I n = e − n I n − 1 若 I 0 = e − 1 = 1.71828 , 则 由 { I n = e − n I n − 1 I 0 = e − 1 ≈ 1.71828 计 算 此 时 I 99 的 误 差 是 I 1 误 差 的 99 ! 倍 , 导 致 结 果 严 重 失 真 。 取 I n − 1 = e n − I n n ∵ 1 100 = ∫ 0 1 x 99 e 0   d x ≤ I 99 ≤ ∫ 0 1 x 99 e 1   d x = e 100 ∴ I 99 ≈ 1 2 ( 1 100 + e 100 ) = 0.0185914 则 由 { I n − 1 = e n − I n n I 99 ≈ 0.0185914 计 算 , 向 下 计 算 误 差 逐 渐 减 少 分部积分:I_n=e-nI_{n-1}\\ 若I_0=e-1=1.71828,则由\begin{cases} I_n=e-nI_{n-1}\\I_0=e-1\approx 1.71828\end{cases}计算\\ 此时I_{99}的误差是I_1误差的99!倍,导致结果严重失真。\\ 取I_{n-1}=\dfrac{e}{n}-\dfrac{I_n}{n}\\ \because \dfrac{1}{100}=\int_0^1x^{99}e^0\,dx\le I_{99}\le \int_0^1x^{99}e^1\,dx=\dfrac{e}{100}\therefore I_{99}\approx {1\over 2}({1\over 100}+{e\over 100})=0.0185914\\ 则由\begin{cases} \color{red}I_{n-1}=\dfrac{e}{n}-\dfrac{I_n}{n}\\I_{99}\approx0.0185914\end{cases}计算,向下计算误差逐渐减少 In=enIn1I0=e1=1.71828,{In=enIn1I0=e11.71828I99I199!,In1=nenIn1001=01x99e0dxI9901x99e1dx=100eI9921(1001+100e)=0.0185914In1=nenInI990.0185914,

  • 防止“大数”吃“小数”:运算时若数字数量级差距太大,计算机运算时会造成结果失真

    例:在四位十进制计算机上计算 x = 1234 + ∑ i = 1 1000 0.02 x=1234+\sum\limits_{i=1}^{1000}0.02 x=1234+i=110000.02

    解:

    1. 计算机正常计算:
      x = 0.1234 × 1 0 4 + 0.000002 × 1 0 4 + ⋯ + 0.000002 × 1 0 4 ⏞ ≈ 0.1234 × 1 0 4 ( 小 数 被 吃 掉 ) x=0.1234\times 10^4+\overbrace{0.000002\times 10^4+\cdots+0.000002\times 10^4}\approx 0.1234\times 10^4(小数被吃掉) x=0.1234×104+0.000002×104++0.000002×104 0.1234×104()

    2. 算法优先算小数:
      ∑ i = 1 1000 0.02 = 20 x = 0.1234 × 1 0 4 + 0.002 × 1 0 4 ≈ 0.1254 × 1 0 4 \sum\limits_{i=1}^{1000}0.02=20\\ x=0.1234\times 10^4+0.002\times 10^4\approx0.1254\times10^4 i=110000.02=20x=0.1234×104+0.002×1040.1254×104

  • 其他减少误差

    1. 避免两个相近的数相减

      原因:两个数前几位相同的有效数字在差中消失,使得差的有效数字大大减少

      例:当 x x x 很大时,应将 x + 1 − x → 1 x + 1 + x \sqrt{x+1}-\sqrt{x}\rightarrow \dfrac{1}{\sqrt{x+1}+\sqrt{x}} x+1 x x+1 +x 1

      例:当 x → 0 x\rightarrow 0 x0时,应将 1 − cos ⁡ x sin ⁡ x → sin ⁡ x 1 + cos ⁡ x \dfrac{1-\cos{x}}{\sin{x}}\rightarrow \dfrac{\sin{x}}{1+\cos{x}} sinx1cosx1+cosxsinx

    2. 避免分母很小或分子很大

      原因:防止溢出(对于计算机来说)

  • 秦九韶算法(简化步骤,减少次数)

    • 介绍:对于多项式 P n ( x ) = a n x n + a n − 1 x n − 1 + . . . + a 1 x + a 0 P_n(x)=a_nx^n+a_{n-1}x^{n-1}+...+a_1x+a_0 Pn(x)=anxn+an1xn1+...+a1x+a0,直接计算在 x x x 处的值需要 n ( n + 1 ) 2 \dfrac{n(n+1)}{2} 2n(n+1)次乘法和 n n n次加法。转化为 P n ( x ) = ( ( ( ( a n ⋅ x + a n − 1 ) ⋅ x + a n − 1 ) ⋅ x + . . . a 2 ) ⋅ x + a 1 ) ⋅ x + a 0 \color{red}P_n(x)=((((a_n\cdot x+a_{n-1})\cdot x+a_{n-1})\cdot x+...a_2)\cdot x+a_1)\cdot x+a_0 Pn(x)=((((anx+an1)x+an1)x+...a2)x+a1)x+a0,计算在 x x x 处的值只需要 n n n次乘法和 n n n次加法。
    • 算法迭代格式 { S n = a n S k = x ⋅ S k + 1 + a k P n ( x ) = S 0 \begin{cases}S_n=a_n\\ S_k=x\cdot S_{k+1}+a_k\\ P_n(x)=S_0 \end{cases} Sn=anSk=xSk+1+akPn(x)=S0
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值