数值分析:绪论1

分析流程

block1=>operation: 实际问题 block2=>operation: 数学模型 block3=>operation: 数值计算方法 block4=>operation: 程序设计 block5=>operation: 计算机计算求出结果 block1->block2->block3->block4->block5

误差

设数xx是精确值xx^*的一个近似值。

误差来源

误差表示

绝对误差 e(x)e(x) e=xxe = \vert{x^*-x}\vert
绝对误差限 ε(x)ε(x) xxε(x)\vert{x^*-x}\vert ≤ ε(x)
相对误差 er(x)e_r(x) er=xxxe_r = \left\vert{\dfrac{x^*-x}{x}}\right\vert
相对误差限 εr(x)ε_r(x) xxx=er(x)εr(x)=ε(x)x\left\vert{\dfrac{x^*-x}{x}}\right\vert = e_r(x) ≤ ε_r(x) = \dfrac{ε(x)}{x}

误差估计

f(x)f(x)=f(x)(xx)+f(ξ)2(xx)2f(x^*) - f(x) = f'(x)(x^*-x) + \dfrac{f''(ξ)}{2}(x^*-x)^2,得

ε[f(x)]f(x)ε(x)ε[f(x)] ≈ |f'(x)|ε(x)|

推理得

ε[f(x1,,xn)]k=1nfxkε(xk)ε[f(x_1,\cdots,x_n)] ≈ \sum_{k=1}^{n} \left| \dfrac{∂f}{∂x_k} \right| ε(x_k)

运算性质

例1

xxyy的相对误差均为er=0.001e_r = 0.001,则xyx ⋅ y的相对误差为多少。

例2

xxyy的绝对误差均为e=0.001e = 0.001,则xyx - y的绝对误差为多少。

例3

x=1.24x=1.24是由精确值xx^*经过四舍五入得到的近似值。

  1. 绝对误差限εε是多少?
  2. 相对误差限εrε_r是多少?

结论

凡是由精确值经过四舍五入得到的近似值,其绝对误差限等于该近似值末位的半个单位。

例4

计算球的体积(V=43πr3V=\dfrac{4}{3}πr^3)要使相对误差限εr(V)=1100ε_r(V)=\dfrac{1}{100},问εr(r)ε_r(r)应为多少。

由题意得

由误差估计式得

综上可得

有效数字

如果xx绝对误差限ee是它的某一数位的半个单位(比如四舍五入这种情况),并且从xx左起第一个非零数字到该数位共有nn位,则称这nn个数字为xx的有效数字。即xx近似xx^*时有nn位有效数字。此外,我们认为精确值的有效数字有无穷多位。

标准浮点数

xx总可以写成
x=±0.a1a2ak×10mx=±0.a_1a_2{\dots}a_k×10^m

其中a10a_1≠0{a2,,ak}[0,9]\{a_2, \cdots, a_k\}∈[0, 9],该形式即称为标准浮点数

有效数字和绝对误差限

当且仅当等价于充要条件

xx作为xx^*的近似值,具有nn位有效数字,当且仅当

xx=e12×10mn|x^*-x| = e ≤ \frac{1}{2}×10^{m-n}

该方程反映了绝对误差ee和有效位数nn之间的关系。

有效数字和相对误差限

求相对误差限

xxnn位有效数字,则其相对误差限为:

εr=12a1×101nε_r = \frac{1}{2a_1}×10^{1-n}

求有效数字

xx的相对误差限满足:

εr=12(a1+1)×101nε_r = \frac{1}{2(a_1+1)}×10^{1-n}

xx至少有nn位有效数字。

例1

使x=2x^*=\sqrt{2}的近似值的绝对误差ee小于10510^{-5}

  1. 应取几位有效数字nn
  2. 近似值xx的取值为多少?

例2

x=0.01458663x=0.0145\underline{8663}为真值x=0.01451845x^*=0.0145\underline{1845}的近似,则xx的有效数字位数nn为?

x=0.1458663×101      m=1x = 0.1458663 × 10^{-1} { \ \ \ ⇒ \ \ \ } m=-1

e=0.00006418=0.6418×10412×10mn=12×103e = 0.00006418 = 0.6418 × 10^{-4} ≤ \dfrac{1}{2}×10^{m-n} =\dfrac{1}{2}×10^{-3}

综上可得n=2n=2

数值稳定性

即计算过程中,舍入误差不增长。

数值计算若干原则

  1. 避免两个相近的数相减(会造成有效数字丢失)
  2. 防止大数吃掉小数
  3. 绝对值过小的数不宜做除数
  4. 简化计算程序,减少计算次数
  5. 选用数值稳定性好的算法

例1

为减少舍入误差影响,应将109910-\sqrt{99}改写为

10991×10+9910+99=110+99\dfrac{10-\sqrt{99}}{1} × \dfrac{10+\sqrt{99}}{10+\sqrt{99}} = \dfrac{1}{10+\sqrt{99}}

例2

递推公式{y0=2yn=10yn11n=1,2,\begin{cases} y_0 = \sqrt{2} \\ y_n = 10y_{n-1} - 1 & n = 1,2,\dots \end{cases},如果取y0=21.41y_0 = \sqrt{2} ≈ 1.41作计算

(1)则计算到y10y_{10}时,误差为多少?
(2)计算公式数值稳定吗?

e0=21.41e1=10e0e2=10e1=102e0e10=1010e0=1010(21.41)\begin{array}{l} e_0 = \sqrt{2} - 1.41 \\ e_1 = 10e_0 \\ e_2 = 10e_1 = 10^2e_0 \\ \dots \\ e_{10} = 10^{10}e_0 = 10^{10}(\sqrt{2} - 1.41) \end{array}

明显,随着迭代次数增加,误差越来越大,故计算公式是不稳定的。

例3

计算(21)6(\sqrt{2}-1)^6的近似值,取2=1.414\sqrt{2} = 1.414,在4位计算机上,试问以下哪种算法误差较小。

①:1(2+1)6\dfrac{1}{(\sqrt{2}+1)^6}

②:1(3+22)3\dfrac{1}{(3+2\sqrt{2})^3}

①:(21)6=[(21)(2+1)2+1]6=1(2+1)6(\sqrt{2}-1)^6 = \left[ \dfrac{(\sqrt{2}-1)(\sqrt{2}+1)}{\sqrt{2}+1} \right]^6 = \dfrac{1}{(\sqrt{2}+1)^6}

②:1(2+1)6=1[(2+1)2]3=1(3+22)3\dfrac{1}{(\sqrt{2}+1)^6} = \dfrac{1}{\left[(\sqrt{2}+1)^2\right]^3} = \dfrac{1}{(3+2\sqrt{2})^3}

设初始误差ε=21.414<1ε=\sqrt{2} - 1.414 < 1

①:1(C1+ε)6)\dfrac{1}{(C_1 + ε)^6})
②:1(C2+2ε)3\dfrac{1}{(C_2 + 2ε)^3}

可以看出1ε6>>18ε3\dfrac{1}{ε^6} >> \dfrac{1}{8ε^3}

故②方法更好。