全章习题按难度分四组:A 组概念判断(快速自检)、B 组推导证明(考试大题)、C 组计算与编程(动手实操)、D 组开放建模(迁移综合)。四组均附解答或提示 (默认折叠);C 组每题给验收标准。凡标注「原书习题 n」的题目与颜书第 13 页习题逐条对应,可对照作答。
A1 · 误差来源分类
指出下列各情境中的主导误差属于哪一类(模型 / 观测 / 截断 / 舍入):
(a) 用单摆公式 T = 2 π L / g T=2\pi\sqrt{L/g} T = 2 π L / g 计算周期时,把地球简化为均匀引力场;
(b) 摆长 L L L 用米尺量得 0.98 ± 0.0005 0.98\pm0.0005 0.98 ± 0.0005 m;
(c) 用 1 − x 2 2 1-\frac{x^2}{2} 1 − 2 x 2 代替 cos x \cos x cos x (x = 0.1 x=0.1 x = 0.1 );
(d) 用 float64 计算 0.1 + 0.2 0.1+0.2 0.1 + 0.2 得 0.30000000000000004 0.30000000000000004 0.30000000000000004 。
解答
(a) 模型误差(建模假设偏离实际)。(b) 观测误差(测量仪器精度)。(c) 截断误差(Taylor 展开扔掉 x 4 24 \frac{x^4}{24} 24 x 4 ,数值约 4 × 1 0 − 6 4\times10^{-6} 4 × 1 0 − 6 )。(d) 舍入误差(0.1 0.1 0.1 与 0.2 0.2 0.2 都无法精确存入二进制浮点)。
A2 · 「减法比加法危险」辨析
由 ε ( a ± b ) = ε ( a ) + ε ( b ) \varepsilon(a\pm b)=\varepsilon(a)+\varepsilon(b) ε ( a ± b ) = ε ( a ) + ε ( b ) 可见,加与减的绝对 误差限算法完全相同。为什么实践中只说「减法危险」?危险在什么条件下出现?
解答
危险的是相对 误差限:ε r ( a − b ) = ε ( a ) + ε ( b ) ∣ a − b ∣ \varepsilon_{\mathrm r}(a-b)=\dfrac{\varepsilon(a)+\varepsilon(b)}{\lvert a-b\rvert} ε r ( a − b ) = ∣ a − b ∣ ε ( a ) + ε ( b ) 。当 a , b a,b a , b 相近(∣ a − b ∣ \lvert a-b\rvert ∣ a − b ∣ 远小于 ∣ a ∣ , ∣ b ∣ \lvert a\rvert,\lvert b\rvert ∣ a ∣ , ∣ b ∣ )时分母极小,相对误差爆炸、有效数字大量丢失(极端例子见例 1.2.7 :两个 4 位有效数字的数相减后连 1 位都不剩)。加法的分母 ∣ a + b ∣ \lvert a+b\rvert ∣ a + b ∣ 通常不小于较大的操作数,故无此问题。危险条件:两数近似相等。 绝对误差限公式对加减一视同仁,危险来自相对化。
A3 · 有效数字概念四连(含原书习题 2、3)
逐条判断下列说法或命题:
(a) 2.1400 2.1400 2.1400 与 2.14 2.14 2.14 作为同一准确值的近似值,哪个更精确?
(b) 准确值本身有多少位有效数字?
(c) 【原书习题 2】绝对误差限都是 0.0005 0.0005 0.0005 的三个近似值 a = − 1.00031 a=-1.00031 a = − 1.00031 、b = 0.042 b=0.042 b = 0.042 、c = − 0.00032 c=-0.00032 c = − 0.00032 各有几位有效数字?
(d) 【原书习题 3】a a a 是积分 ∫ 0 1 e − x 2 d x \displaystyle\int_0^1 e^{-x^2}dx ∫ 0 1 e − x 2 d x 的近似值且有四位有效数字,求 a a a 的绝对误差限。
解答
(a) 2.1400 2.1400 2.1400 :5 位有效数字,ε = 1 2 × 1 0 − 4 \varepsilon=\tfrac12\times10^{-4} ε = 2 1 × 1 0 − 4 ;2.14 2.14 2.14 :3 位,ε = 1 2 × 1 0 − 2 \varepsilon=\tfrac12\times10^{-2} ε = 2 1 × 1 0 − 2 。前者更精确。写出的尾零是有效数字声明,不能随意省略。
(b) 准确值自身的有效数字可视为无限多位(误差恒为零)。
(c) a = − 0.100031 × 1 0 1 a=-0.100031\times10^{1} a = − 0.100031 × 1 0 1 :1 2 × 1 0 1 − n = 0.0005 = 1 2 × 1 0 − 3 ⇒ n = 4 ( ≤ 6 \tfrac12\times10^{1-n}=0.0005=\tfrac12\times10^{-3}\Rightarrow n=4\ (\le6 2 1 × 1 0 1 − n = 0.0005 = 2 1 × 1 0 − 3 ⇒ n = 4 ( ≤ 6 位写出) ) ) ,4 位;b = 0.42 × 1 0 − 1 b=0.42\times10^{-1} b = 0.42 × 1 0 − 1 :1 2 × 1 0 − 1 − n = 1 2 × 1 0 − 3 ⇒ n = 2 \tfrac12\times10^{-1-n}=\tfrac12\times10^{-3}\Rightarrow n=2 2 1 × 1 0 − 1 − n = 2 1 × 1 0 − 3 ⇒ n = 2 ,2 位(4 , 2 4,2 4 , 2 );c = − 0.32 × 1 0 − 3 c=-0.32\times10^{-3} c = − 0.32 × 1 0 − 3 :需 1 2 × 1 0 − 3 − n = 1 2 × 1 0 − 3 ⇒ n = 0 \tfrac12\times10^{-3-n}=\tfrac12\times10^{-3}\Rightarrow n=0 2 1 × 1 0 − 3 − n = 2 1 × 1 0 − 3 ⇒ n = 0 ,没有 有效数字(误差限 0.0005 0.0005 0.0005 已是首位有效数字 1 0 − 4 10^{-4} 1 0 − 4 位半单位的 10 倍,连第一位都保不住,写法与误差限不匹配)。
(d) ∫ 0 1 e − x 2 d x = 0.74682413 ⋯ \displaystyle\int_0^1 e^{-x^2}dx=0.74682413\cdots ∫ 0 1 e − x 2 d x = 0.74682413 ⋯ ,4 位有效数字意味着 a = 0.7468 = 0.7468 × 1 0 0 a=0.7468=0.7468\times10^0 a = 0.7468 = 0.7468 × 1 0 0 ,ε ( a ) = 1 2 × 1 0 0 − 4 = 0.00005 \varepsilon(a)=\tfrac12\times10^{0-4}=0.00005 ε ( a ) = 2 1 × 1 0 0 − 4 = 0.00005 。
A4 · 范数概念四连
判断下列各命题对错,并说明理由:
(a) 存在矩阵 A , B A,B A , B 使 ∥ A B ∥ 2 = ∥ A ∥ 2 ∥ B ∥ 2 \lVert AB\rVert_2=\lVert A\rVert_2\lVert B\rVert_2 ∥ A B ∥ 2 = ∥ A ∥ 2 ∥ B ∥ 2 ;
(b) ∥ A ∥ F \lVert A\rVert_F ∥ A ∥ F 从属于某个向量范数;
(c) 对对称正定矩阵 A A A ,∥ A ∥ 2 = λ max ( A ) \lVert A\rVert_2=\lambda_{\max}(A) ∥ A ∥ 2 = λ m a x ( A ) ;
(d) 把向量范数 ∥ ⋅ ∥ 2 \lVert\cdot\rVert_2 ∥ ⋅ ∥ 2 换成 ∥ ⋅ ∥ 1 \lVert\cdot\rVert_1 ∥ ⋅ ∥ 1 ,迭代序列「是否收敛到 x ∗ \boldsymbol{x}^{*} x ∗ 」的结论可能改变。
解答
(a) 对 。取 B = A T B=A^{\mathrm T} B = A T :∥ A A T ∥ 2 = λ max ( A A T ) = σ max ( A ) 2 = ∥ A ∥ 2 2 \lVert A A^{\mathrm T}\rVert_2=\lambda_{\max}(AA^{\mathrm T})=\sigma_{\max}(A)^2=\lVert A\rVert_2^2 ∥ A A T ∥ 2 = λ m a x ( A A T ) = σ m a x ( A ) 2 = ∥ A ∥ 2 2 ;或平凡地取 B = I B=I B = I 。
(b) 错 。∥ I ∥ F = n ≠ 1 \lVert I\rVert_F=\sqrt n\neq1 ∥ I ∥ F = n = 1 ,而任何算子范数必有 ∥ I ∥ = 1 \lVert I\rVert=1 ∥ I ∥ = 1 (见 1.3.3 推论)。
(c) 对 。A A A 对称正定时 A T A = A 2 A^{\mathrm T}A=A^2 A T A = A 2 ,特征值为 λ i 2 \lambda_i^2 λ i 2 ,λ max ( A 2 ) = λ max ( A ) \sqrt{\lambda_{\max}(A^2)}=\lambda_{\max}(A) λ m a x ( A 2 ) = λ m a x ( A ) 。
(d) 错 。这正是范数等价定理(定理 1.3.3 ):m ∥ u k ∥ β ≤ ∥ u k ∥ α ≤ M ∥ u k ∥ β m\lVert\boldsymbol{u}_k\rVert_\beta\le\lVert\boldsymbol{u}_k\rVert_\alpha\le M\lVert\boldsymbol{u}_k\rVert_\beta m ∥ u k ∥ β ≤ ∥ u k ∥ α ≤ M ∥ u k ∥ β ,一侧趋于零则另一侧必趋于零。会变的是误差界的大小 与停机步数 ,不是收敛与否。
B1 · 【原书习题 10】加权范数 ∥ x ∥ A = ∥ A x ∥ \lVert\boldsymbol{x}\rVert_A=\lVert A\boldsymbol{x}\rVert ∥ x ∥ A = ∥ A x ∥
设 A ∈ R n × n A\in\mathbb{R}^{n\times n} A ∈ R n × n ,对任意 x ∈ R n \boldsymbol{x}\in\mathbb{R}^n x ∈ R n 记 ∥ x ∥ A = ∥ A x ∥ \lVert\boldsymbol{x}\rVert_A=\lVert A\boldsymbol{x}\rVert ∥ x ∥ A = ∥ A x ∥ ,其中 ∥ ⋅ ∥ \lVert\cdot\rVert ∥ ⋅ ∥ 为某种向量范数。试证:若 A A A 非奇异,则 ∥ ⋅ ∥ A \lVert\cdot\rVert_A ∥ ⋅ ∥ A 是向量范数;若 A A A 奇异,则 ∥ ⋅ ∥ A \lVert\cdot\rVert_A ∥ ⋅ ∥ A 不是向量范数。
解答
设 A A A 非奇异。(1) 正定:∥ x ∥ A ≥ 0 \lVert\boldsymbol{x}\rVert_A\ge0 ∥ x ∥ A ≥ 0 ;∥ x ∥ A = 0 ⟺ A x = 0 ⟺ x = 0 \lVert\boldsymbol{x}\rVert_A=0\iff A\boldsymbol{x}=\boldsymbol{0}\iff\boldsymbol{x}=\boldsymbol{0} ∥ x ∥ A = 0 ⟺ A x = 0 ⟺ x = 0 (A A A 非奇异,齐次方程组只有零解)。(2) 齐次:∥ k x ∥ A = ∥ A ( k x ) ∥ = ∣ k ∣ ∥ A x ∥ \lVert k\boldsymbol{x}\rVert_A=\lVert A(k\boldsymbol{x})\rVert=\lvert k\rvert\lVert A\boldsymbol{x}\rVert ∥ k x ∥ A = ∥ A ( k x )∥ = ∣ k ∣ ∥ A x ∥ 。(3) 三角不等式:∥ x + y ∥ A = ∥ A x + A y ∥ ≤ ∥ A x ∥ + ∥ A y ∥ = ∥ x ∥ A + ∥ y ∥ A \lVert\boldsymbol{x}+\boldsymbol{y}\rVert_A=\lVert A\boldsymbol{x}+A\boldsymbol{y}\rVert\le\lVert A\boldsymbol{x}\rVert+\lVert A\boldsymbol{y}\rVert=\lVert\boldsymbol{x}\rVert_A+\lVert\boldsymbol{y}\rVert_A ∥ x + y ∥ A = ∥ A x + A y ∥ ≤ ∥ A x ∥ + ∥ A y ∥ = ∥ x ∥ A + ∥ y ∥ A 。
设 A A A 奇异,则存在 v ≠ 0 \boldsymbol{v}\neq\boldsymbol{0} v = 0 使 A v = 0 A\boldsymbol{v}=\boldsymbol{0} A v = 0 ,于是 ∥ v ∥ A = ∥ 0 ∥ = 0 \lVert\boldsymbol{v}\rVert_A=\lVert\boldsymbol{0}\rVert=0 ∥ v ∥ A = ∥ 0 ∥ = 0 ,正定性被破坏,不是范数。∎
(应用:加权残差 ∥ r ∥ D − 1 / 2 \lVert\boldsymbol{r}\rVert_{D^{-1/2}} ∥ r ∥ D − 1/2 、椭圆范数 ∥ x ∥ A 1 / 2 \lVert\boldsymbol{x}\rVert_{A^{1/2}} ∥ x ∥ A 1/2 都是本题特例,第 2 章 迭代法用它们度量误差。)
B2 · 【原书习题 14(1)】三个显式等价不等式
证明:∥ x ∥ 2 ≤ ∥ x ∥ 1 ≤ n ∥ x ∥ 2 \lVert\boldsymbol{x}\rVert_2\le\lVert\boldsymbol{x}\rVert_1\le\sqrt n\,\lVert\boldsymbol{x}\rVert_2 ∥ x ∥ 2 ≤ ∥ x ∥ 1 ≤ n ∥ x ∥ 2 ,并补出 1.3.2 节表格中另外两行的证明。
解答
左半 :∥ x ∥ 2 2 = ∑ i x i 2 ≤ ∑ i x i 2 + ∑ i ≠ j ∣ x i x j ∣ = ( ∑ i ∣ x i ∣ ) 2 = ∥ x ∥ 1 2 \lVert\boldsymbol{x}\rVert_2^2=\sum_i x_i^2\le\sum_i x_i^2+\sum_{i\neq j}\lvert x_ix_j\rvert=\Bigl(\sum_i\lvert x_i\rvert\Bigr)^2=\lVert\boldsymbol{x}\rVert_1^2 ∥ x ∥ 2 2 = ∑ i x i 2 ≤ ∑ i x i 2 + ∑ i = j ∣ x i x j ∣ = ( ∑ i ∣ x i ∣ ) 2 = ∥ x ∥ 1 2 (交叉项 ≥ 0 \ge0 ≥ 0 )。
右半 :∥ x ∥ 1 = ∑ i ∣ x i ∣ ⋅ 1 ≤ ( ∑ i x i 2 ) 1 / 2 ( ∑ i 1 2 ) 1 / 2 = n ∥ x ∥ 2 \lVert\boldsymbol{x}\rVert_1=\sum_i\lvert x_i\rvert\cdot1\le\Bigl(\sum_i x_i^2\Bigr)^{1/2}\Bigl(\sum_i1^2\Bigr)^{1/2}=\sqrt n\,\lVert\boldsymbol{x}\rVert_2 ∥ x ∥ 1 = ∑ i ∣ x i ∣ ⋅ 1 ≤ ( ∑ i x i 2 ) 1/2 ( ∑ i 1 2 ) 1/2 = n ∥ x ∥ 2 (Cauchy–Schwarz,取 y = ( 1 , ⋯ , 1 ) T \boldsymbol{y}=(1,\cdots,1)^{\mathrm T} y = ( 1 , ⋯ , 1 ) T )。
另两行:∥ x ∥ ∞ ≤ ∥ x ∥ 1 \lVert\boldsymbol{x}\rVert_\infty\le\lVert\boldsymbol{x}\rVert_1 ∥ x ∥ ∞ ≤ ∥ x ∥ 1 (最大不超过总和);∥ x ∥ 1 ≤ n ∥ x ∥ ∞ \lVert\boldsymbol{x}\rVert_1\le n\lVert\boldsymbol{x}\rVert_\infty ∥ x ∥ 1 ≤ n ∥ x ∥ ∞ (每项不超过最大值,共 n n n 项);∥ x ∥ ∞ ≤ ∥ x ∥ 2 ≤ n ∥ x ∥ ∞ \lVert\boldsymbol{x}\rVert_\infty\le\lVert\boldsymbol{x}\rVert_2\le\sqrt n\,\lVert\boldsymbol{x}\rVert_\infty ∥ x ∥ ∞ ≤ ∥ x ∥ 2 ≤ n ∥ x ∥ ∞ (max 2 ≤ ∑ x i 2 \max^2\le\sum x_i^2 max 2 ≤ ∑ x i 2 与 ∑ x i 2 ≤ n max 2 \sum x_i^2\le n\max^2 ∑ x i 2 ≤ n max 2 )。∎
B3 · 【原书习题 13】∥ I ∥ ≥ 1 \lVert I\rVert\ge1 ∥ I ∥ ≥ 1 与 ∥ A − 1 ∥ ∥ A ∥ ≥ 1 \lVert A^{-1}\rVert\lVert A\rVert\ge1 ∥ A − 1 ∥ ∥ A ∥ ≥ 1
证明:对任何非奇异矩阵 A A A 与任何矩阵范数,∥ I ∥ ≥ 1 \lVert I\rVert\ge1 ∥ I ∥ ≥ 1 且 ∥ A − 1 ∥ ∥ A ∥ ≥ 1 \lVert A^{-1}\rVert\,\lVert A\rVert\ge1 ∥ A − 1 ∥ ∥ A ∥ ≥ 1 。
解答
由 ∥ I ∥ = ∥ I ⋅ I ∥ ≤ ∥ I ∥ 2 \lVert I\rVert=\lVert I\cdot I\rVert\le\lVert I\rVert^2 ∥ I ∥ = ∥ I ⋅ I ∥ ≤ ∥ I ∥ 2 得 ∥ I ∥ ( ∥ I ∥ − 1 ) ≥ 0 \lVert I\rVert(\lVert I\rVert-1)\ge0 ∥ I ∥ (∥ I ∥ − 1 ) ≥ 0 ;又 ∥ I ∥ = ∥ I ⋅ I ∥ ≥ 0 \lVert I\rVert=\lVert I\cdot I\rVert\ge0 ∥ I ∥ = ∥ I ⋅ I ∥ ≥ 0 且 I ≠ O I\neq O I = O 给出 ∥ I ∥ > 0 \lVert I\rVert\gt0 ∥ I ∥ > 0 ,故 ∥ I ∥ ≥ 1 \lVert I\rVert\ge1 ∥ I ∥ ≥ 1 。再由次可乘性:
1 = (数 1) ≤ ∥ I ∥ = ∥ A A − 1 ∥ ≤ ∥ A ∥ ∥ A − 1 ∥ , 1=\text{(数 1)}\le\lVert I\rVert=\lVert A\,A^{-1}\rVert\le\lVert A\rVert\,\lVert A^{-1}\rVert, 1 = ( 数 1) ≤ ∥ I ∥ = ∥ A A − 1 ∥ ≤ ∥ A ∥ ∥ A − 1 ∥ ,
(利用 A A A 非奇异)即 ∥ A − 1 ∥ ∥ A ∥ ≥ 1 \lVert A^{-1}\rVert\lVert A\rVert\ge1 ∥ A − 1 ∥ ∥ A ∥ ≥ 1 。∎
(对照:当 ∥ A ∥ < 1 \lVert A\rVert\lt1 ∥ A ∥ < 1 时,定理 1.3.6 的界 ∥ ( I − A ) − 1 ∥ ≤ ( 1 − ∥ A ∥ ) − 1 \lVert(I-A)^{-1}\rVert\le(1-\lVert A\rVert)^{-1} ∥( I − A ) − 1 ∥ ≤ ( 1 − ∥ A ∥ ) − 1 可以任意接近 1;而本题表明 ∥ A ∥ ∥ A − 1 ∥ \lVert A\rVert\lVert A^{-1}\rVert ∥ A ∥ ∥ A − 1 ∥ 永远不小于 1——这正是条件数(1.3.6 )的下界。)
B4 · 【原书习题 15】任何矩阵范数都有相容的向量范数
对任意一种矩阵范数 N ( ⋅ ) N(\cdot) N ( ⋅ ) ,总存在一种与它相容的向量范数。试证明之。
解答
取定任一非零向量 b \boldsymbol{b} b (例如 b = e 1 \boldsymbol{b}=\boldsymbol{e}_1 b = e 1 ),定义
∥ x ∥ ∗ : = N ( x b T ) , x ∈ R n . \lVert\boldsymbol{x}\rVert_*:=N\bigl(\boldsymbol{x}\,\boldsymbol{b}^{\mathrm T}\bigr),\qquad\boldsymbol{x}\in\mathbb{R}^n . ∥ x ∥ ∗ := N ( x b T ) , x ∈ R n .
(x b T \boldsymbol{x}\boldsymbol{b}^{\mathrm T} x b T 是把 x \boldsymbol{x} x 复制到列方向的秩 1 矩阵,x = 0 ⟺ \boldsymbol{x}=\boldsymbol{0}\iff x = 0 ⟺ 该矩阵为零矩阵。)验证三条向量范数公理:
(1) ∥ x ∥ ∗ ≥ 0 \lVert\boldsymbol{x}\rVert_*\ge0 ∥ x ∥ ∗ ≥ 0 ;∥ x ∥ ∗ = 0 ⟺ x b T = O ⟺ x = 0 \lVert\boldsymbol{x}\rVert_*=0\iff\boldsymbol{x}\boldsymbol{b}^{\mathrm T}=O\iff\boldsymbol{x}=\boldsymbol{0} ∥ x ∥ ∗ = 0 ⟺ x b T = O ⟺ x = 0 (因 b ≠ 0 \boldsymbol{b}\neq\boldsymbol{0} b = 0 )。
(2) N ( k x b T ) = N ( k ( x b T ) ) = ∣ k ∣ N ( x b T ) N(k\boldsymbol{x}\boldsymbol{b}^{\mathrm T})=N\bigl(k(\boldsymbol{x}\boldsymbol{b}^{\mathrm T})\bigr)=\lvert k\rvert N(\boldsymbol{x}\boldsymbol{b}^{\mathrm T}) N ( k x b T ) = N ( k ( x b T ) ) = ∣ k ∣ N ( x b T ) 。
(3) N ( ( x + y ) b T ) = N ( x b T + y b T ) ≤ N ( x b T ) + N ( y b T ) N\bigl((\boldsymbol{x}+\boldsymbol{y})\boldsymbol{b}^{\mathrm T}\bigr)=N(\boldsymbol{x}\boldsymbol{b}^{\mathrm T}+\boldsymbol{y}\boldsymbol{b}^{\mathrm T})\le N(\boldsymbol{x}\boldsymbol{b}^{\mathrm T})+N(\boldsymbol{y}\boldsymbol{b}^{\mathrm T}) N ( ( x + y ) b T ) = N ( x b T + y b T ) ≤ N ( x b T ) + N ( y b T ) 。
相容性:对任意 A , x A,\boldsymbol{x} A , x ,用矩阵范数的次可乘性,
∥ A x ∥ ∗ = N ( A x b T ) = N ( A ( x b T ) ) ≤ N ( A ) N ( x b T ) = N ( A ) ∥ x ∥ ∗ . \lVert A\boldsymbol{x}\rVert_*=N\bigl(A\boldsymbol{x}\boldsymbol{b}^{\mathrm T}\bigr)=N\bigl(A\,(\boldsymbol{x}\boldsymbol{b}^{\mathrm T})\bigr)\le N(A)\,N(\boldsymbol{x}\boldsymbol{b}^{\mathrm T})=N(A)\,\lVert\boldsymbol{x}\rVert_* . ∥ A x ∥ ∗ = N ( A x b T ) = N ( A ( x b T ) ) ≤ N ( A ) N ( x b T ) = N ( A ) ∥ x ∥ ∗ .
∎
B5 · 新增 · 相对误差的精确公式
推导带符号相对误差的精确恒等式:e r ( a b ) = e r ( a ) + e r ( b ) + e r ( a ) e r ( b ) e_{\mathrm r}(ab)=e_{\mathrm r}(a)+e_{\mathrm r}(b)+e_{\mathrm r}(a)\,e_{\mathrm r}(b) e r ( ab ) = e r ( a ) + e r ( b ) + e r ( a ) e r ( b ) 与 e r ( a b ) = e r ( a ) − e r ( b ) 1 + e r ( b ) e_{\mathrm r}\!\left(\dfrac ab\right)=\dfrac{e_{\mathrm r}(a)-e_{\mathrm r}(b)}{1+e_{\mathrm r}(b)} e r ( b a ) = 1 + e r ( b ) e r ( a ) − e r ( b ) ,并据此说明教材中「乘除法相对误差限相加」在什么条件下近似成立。
解答
先约定带符号相对误差的记法:e r ( a ) = x − a a e_{\mathrm r}(a)=\dfrac{x-a}{a} e r ( a ) = a x − a (即 x = a ( 1 + e r ( a ) ) x=a(1+e_{\mathrm r}(a)) x = a ( 1 + e r ( a )) )。则
x y = a ( 1 + e r ( a ) ) b ( 1 + e r ( b ) ) = a b ( 1 + e r ( a ) + e r ( b ) + e r ( a ) e r ( b ) ) , xy=a(1+e_{\mathrm r}(a))\,b(1+e_{\mathrm r}(b))=ab\bigl(1+e_{\mathrm r}(a)+e_{\mathrm r}(b)+e_{\mathrm r}(a)e_{\mathrm r}(b)\bigr), x y = a ( 1 + e r ( a )) b ( 1 + e r ( b )) = ab ( 1 + e r ( a ) + e r ( b ) + e r ( a ) e r ( b ) ) ,
对照 x y = a b ( 1 + e r ( a b ) ) xy=ab\,(1+e_{\mathrm r}(ab)) x y = ab ( 1 + e r ( ab )) 即得第一式。除法:
x y = a b ⋅ 1 + e r ( a ) 1 + e r ( b ) = a b ( 1 + e r ( a ) − e r ( b ) 1 + e r ( b ) ) , \frac{x}{y}=\frac{a}{b}\cdot\frac{1+e_{\mathrm r}(a)}{1+e_{\mathrm r}(b)}=\frac ab\left(1+\frac{e_{\mathrm r}(a)-e_{\mathrm r}(b)}{1+e_{\mathrm r}(b)}\right), y x = b a ⋅ 1 + e r ( b ) 1 + e r ( a ) = b a ( 1 + 1 + e r ( b ) e r ( a ) − e r ( b ) ) ,
得第二式。当 ∣ e r ( a ) ∣ , ∣ e r ( b ) ∣ ≪ 1 \lvert e_{\mathrm r}(a)\rvert,\lvert e_{\mathrm r}(b)\rvert\ll1 ∣ e r ( a )∣ , ∣ e r ( b )∣ ≪ 1 时,乘积项与 e r ( b ) 1 + e r ( b ) ≈ e r ( b ) \dfrac{e_{\mathrm r}(b)}{1+e_{\mathrm r}(b)}\approx e_{\mathrm r}(b) 1 + e r ( b ) e r ( b ) ≈ e r ( b ) 的修正都是高阶小量,故近似为 ε r \varepsilon_{\mathrm r} ε r 相加。∎
B6 · 【原书习题 14(2)】∥ A x ∥ 2 ≤ n ∥ A ∥ 1 ∥ x ∥ 2 \lVert A\boldsymbol{x}\rVert_2\le\sqrt n\,\lVert A\rVert_1\,\lVert\boldsymbol{x}\rVert_2 ∥ A x ∥ 2 ≤ n ∥ A ∥ 1 ∥ x ∥ 2 (附原书习题 12 的数值检验)
证明 ∥ A x ∥ 2 ≤ n ∥ A ∥ 1 ∥ x ∥ 2 \lVert A\boldsymbol{x}\rVert_2\le\sqrt n\,\lVert A\rVert_1\,\lVert\boldsymbol{x}\rVert_2 ∥ A x ∥ 2 ≤ n ∥ A ∥ 1 ∥ x ∥ 2 ;再对原书习题 12 的矩阵 A = ( 2 − 5 4 − 1 0 3 4 2 − 2 ) A=\begin{pmatrix}2&-5&4\\-1&0&3\\4&2&-2\end{pmatrix} A = 2 − 1 4 − 5 0 2 4 3 − 2 、x = ( 4 , − 8 , 2 ) T \boldsymbol{x}=(4,-8,2)^{\mathrm T} x = ( 4 , − 8 , 2 ) T 用五种范数数值检验本节全部不等式。
解答
证明。 分三步。
第一步:∥ A ∥ F ≤ n ∥ A ∥ 1 \lVert A\rVert_F\le\sqrt n\,\lVert A\rVert_1 ∥ A ∥ F ≤ n ∥ A ∥ 1 。把 A A A 按列分块,第 j j j 列记 c j \boldsymbol{c}_j c j ,则 ∥ A ∥ F 2 = ∑ j ∥ c j ∥ 2 2 ≤ ∑ j ∥ c j ∥ 1 2 ≤ n max j ∥ c j ∥ 1 2 = n ∥ A ∥ 1 2 \lVert A\rVert_F^2=\sum_j\lVert\boldsymbol{c}_j\rVert_2^2\le\sum_j\lVert\boldsymbol{c}_j\rVert_1^2\le n\max_j\lVert\boldsymbol{c}_j\rVert_1^2=n\,\lVert A\rVert_1^2 ∥ A ∥ F 2 = ∑ j ∥ c j ∥ 2 2 ≤ ∑ j ∥ c j ∥ 1 2 ≤ n max j ∥ c j ∥ 1 2 = n ∥ A ∥ 1 2 (每列的 2-范数不超过其 1-范数——B2 的向量不等式用于列向量;再 n n n 项相加不超过最大值的 n n n 倍)。
第二步:∥ ⋅ ∥ F \lVert\cdot\rVert_F ∥ ⋅ ∥ F 与 ∥ ⋅ ∥ 2 \lVert\cdot\rVert_2 ∥ ⋅ ∥ 2 相容(正文 1.3.4 的结论 (b)):∥ A x ∥ 2 ≤ ∥ A ∥ F ∥ x ∥ 2 \lVert A\boldsymbol{x}\rVert_2\le\lVert A\rVert_F\lVert\boldsymbol{x}\rVert_2 ∥ A x ∥ 2 ≤ ∥ A ∥ F ∥ x ∥ 2 。
串联:∥ A x ∥ 2 ≤ ∥ A ∥ F ∥ x ∥ 2 ≤ n ∥ A ∥ 1 ∥ x ∥ 2 \lVert A\boldsymbol{x}\rVert_2\le\lVert A\rVert_F\,\lVert\boldsymbol{x}\rVert_2\le\sqrt n\,\lVert A\rVert_1\,\lVert\boldsymbol{x}\rVert_2 ∥ A x ∥ 2 ≤ ∥ A ∥ F ∥ x ∥ 2 ≤ n ∥ A ∥ 1 ∥ x ∥ 2 。∎
数值检验(原书习题 12)。 x = ( 4 , − 8 , 2 ) T \boldsymbol{x}=(4,-8,2)^{\mathrm T} x = ( 4 , − 8 , 2 ) T :∥ x ∥ 1 = 14 \lVert\boldsymbol{x}\rVert_1=14 ∥ x ∥ 1 = 14 ,∥ x ∥ 2 = 2 21 ≈ 9.165 \lVert\boldsymbol{x}\rVert_2=2\sqrt{21}\approx9.165 ∥ x ∥ 2 = 2 21 ≈ 9.165 ,∥ x ∥ ∞ = 8 \lVert\boldsymbol{x}\rVert_\infty=8 ∥ x ∥ ∞ = 8 。矩阵 A A A :列和 ( 7 , 7 , 9 ) ⇒ ∥ A ∥ 1 = 9 (7,7,9)\Rightarrow\lVert A\rVert_1=9 ( 7 , 7 , 9 ) ⇒ ∥ A ∥ 1 = 9 ;行和 ( 11 , 4 , 8 ) ⇒ ∥ A ∥ ∞ = 11 (11,4,8)\Rightarrow\lVert A\rVert_\infty=11 ( 11 , 4 , 8 ) ⇒ ∥ A ∥ ∞ = 11 ;∥ A ∥ F = 79 ≈ 8.888 \lVert A\rVert_F=\sqrt{79}\approx8.888 ∥ A ∥ F = 79 ≈ 8.888 ;A T A = ( 21 − 2 − 3 − 2 29 − 24 − 3 − 24 29 ) A^{\mathrm T}A=\begin{pmatrix}21&-2&-3\\-2&29&-24\\-3&-24&29\end{pmatrix} A T A = 21 − 2 − 3 − 2 29 − 24 − 3 − 24 29 的最大特征值 ≈ 53.016 ⇒ ∥ A ∥ 2 ≈ 7.281 \approx53.016\Rightarrow\lVert A\rVert_2\approx7.281 ≈ 53.016 ⇒ ∥ A ∥ 2 ≈ 7.281 。逐条核对:
∥ A x ∥ 2 = 56.18 ≤ 3 × 9 × 9.165 = 142.87 ✓ , \lVert A\boldsymbol{x}\rVert_2=56.18\ \le\ \sqrt3\times9\times9.165=142.87\ \checkmark, ∥ A x ∥ 2 = 56.18 ≤ 3 × 9 × 9.165 = 142.87 ✓ ,
∥ A ∥ 2 = 7.281 ≤ ∥ A ∥ 1 ∥ A ∥ ∞ = 99 ≈ 9.950 , ∥ A ∥ 2 = 7.281 ≤ ∥ A ∥ F = 8.888 ✓ . \lVert A\rVert_2=7.281\le\sqrt{\lVert A\rVert_1\lVert A\rVert_\infty}=\sqrt{99}\approx9.950,\qquad \lVert A\rVert_2=7.281\le\lVert A\rVert_F=8.888\ \checkmark . ∥ A ∥ 2 = 7.281 ≤ ∥ A ∥ 1 ∥ A ∥ ∞ = 99 ≈ 9.950 , ∥ A ∥ 2 = 7.281 ≤ ∥ A ∥ F = 8.888 ✓ .
(第二个界的一行来历:∥ A ∥ 2 2 = λ max ( A T A ) ≤ ∥ A T A ∥ ∞ ≤ ∥ A T ∥ ∞ ∥ A ∥ ∞ = ∥ A ∥ 1 ∥ A ∥ ∞ \lVert A\rVert_2^2=\lambda_{\max}(A^{\mathrm T}A)\le\lVert A^{\mathrm T}A\rVert_\infty\le\lVert A^{\mathrm T}\rVert_\infty\lVert A\rVert_\infty=\lVert A\rVert_1\lVert A\rVert_\infty ∥ A ∥ 2 2 = λ m a x ( A T A ) ≤ ∥ A T A ∥ ∞ ≤ ∥ A T ∥ ∞ ∥ A ∥ ∞ = ∥ A ∥ 1 ∥ A ∥ ∞ ,其中 ∥ A T ∥ ∞ = ∥ A ∥ 1 \lVert A^{\mathrm T}\rVert_\infty=\lVert A\rVert_1 ∥ A T ∥ ∞ = ∥ A ∥ 1 ,且 λ max ≤ \lambda_{\max}\le λ m a x ≤ 谱半径(spectral radius)≤ \le ≤ 任一算子范数——后者见补充篇 2.5 ,此处可当引理用。)这两个界与 ∥ A ∥ F \lVert A\rVert_F ∥ A ∥ F 互不控制,本题中 9.950 > 8.888 9.950\gt8.888 9.950 > 8.888 。所有实测值与理论一致。
C1 · 【原书习题 1、2】误差限与有效数字互推
(1)【原书习题 1】下列各近似值均有四位有效数字:a = 0.01347 a=0.01347 a = 0.01347 ,b = − 12.341 b=-12.341 b = − 12.341 ,c = − 1.200 c=-1.200 c = − 1.200 。求它们的绝对误差限和相对误差限。
(2) 编程验证:把 0.01347 0.01347 0.01347 视为某个未知真值 x ∈ [ 0.013465 , 0.013475 ] x\in[0.013465,0.013475] x ∈ [ 0.013465 , 0.013475 ] 的近似,用 Python 检查区间两端点下 a a a 是否都保持 4 位有效数字。
解答
(1) 四位有效数字意味着误差限恰是末位的半个单位:
ε ( a ) = 1 2 × 1 0 − 5 = 0.000005 , ε r ( a ) = 0.000005 0.01347 ≈ 0.037 % ; \varepsilon(a)=\tfrac12\times10^{-5}=0.000005,\quad \varepsilon_{\mathrm r}(a)=\frac{0.000005}{0.01347}\approx0.037\%; ε ( a ) = 2 1 × 1 0 − 5 = 0.000005 , ε r ( a ) = 0.01347 0.000005 ≈ 0.037% ;
ε ( b ) = 1 2 × 1 0 − 3 = 0.0005 , ε r ( b ) = 0.0005 12.341 ≈ 0.0041 % ; \varepsilon(b)=\tfrac12\times10^{-3}=0.0005,\quad \varepsilon_{\mathrm r}(b)=\frac{0.0005}{12.341}\approx0.0041\%; ε ( b ) = 2 1 × 1 0 − 3 = 0.0005 , ε r ( b ) = 12.341 0.0005 ≈ 0.0041% ;
ε ( c ) = 1 2 × 1 0 − 3 = 0.0005 , ε r ( c ) = 0.0005 1.200 ≈ 0.042 % . \varepsilon(c)=\tfrac12\times10^{-3}=0.0005,\quad \varepsilon_{\mathrm r}(c)=\frac{0.0005}{1.200}\approx0.042\%. ε ( c ) = 2 1 × 1 0 − 3 = 0.0005 , ε r ( c ) = 1.200 0.0005 ≈ 0.042%.
注意 c = − 1.200 c=-1.200 c = − 1.200 的两个尾零使其误差限比 − 1.2 -1.2 − 1.2 写法小 10 倍。
(2) 验收标准:程序对区间内任意真值输出 ∣ x − a ∣ ≤ 5 × 1 0 − 6 \lvert x-a\rvert\le5\times10^{-6} ∣ x − a ∣ ≤ 5 × 1 0 − 6 ,并按规格化形式自动判定有效位数为 4;参考判据:a = 0.01347 = 0.1347 × 1 0 − 1 a=0.01347=0.1347\times10^{-1} a = 0.01347 = 0.1347 × 1 0 − 1 即 m = − 1 m=-1 m = − 1 ,直接检验 ∣ x − a ∣ ≤ 1 2 × 1 0 m − 4 = 1 2 × 1 0 − 5 = 5 × 1 0 − 6 \lvert x-a\rvert\le\tfrac12\times10^{m-4}=\tfrac12\times10^{-5}=5\times10^{-6} ∣ x − a ∣ ≤ 2 1 × 1 0 m − 4 = 2 1 × 1 0 − 5 = 5 × 1 0 − 6 。
C2 · 【原书习题 4】函数求值的误差估计
已知 x = 2.14 ± 0.005 x=2.14\pm0.005 x = 2.14 ± 0.005 ,y = − 1.231 ± 0.0005 y=-1.231\pm0.0005 y = − 1.231 ± 0.0005 。
(1) 用 u ~ 1 = 2.14 \tilde u_1=\sqrt{2.14} u ~ 1 = 2.14 作为 u 1 = x u_1=\sqrt x u 1 = x 的近似值;
(2) 用 u ~ 2 = 2.14 × ( − 1.231 ) + 2.14 1.231 \tilde u_2=2.14\times(-1.231)+\dfrac{2.14}{1.231} u ~ 2 = 2.14 × ( − 1.231 ) + 1.231 2.14 作为 u 2 = x y − x y u_2=xy-\dfrac xy u 2 = x y − y x 的近似值。
分别求 u ~ \tilde u u ~ 的绝对误差限和相对误差限,并指出 u ~ \tilde u u ~ 能有几位有效数字。
解答
(1) 记 f ( x ) = x f(x)=\sqrt x f ( x ) = x ,f ′ ( x ) = 1 2 x f'(x)=\dfrac{1}{2\sqrt x} f ′ ( x ) = 2 x 1 。由定理 1.2.2 :
ε ( u ~ 1 ) ≈ ε ( x ) 2 2.14 = 0.005 2 × 1.46287 ≈ 0.00171 , ε r = 0.00171 1.46287 ≈ 0.12 % . \varepsilon(\tilde u_1)\approx\frac{\varepsilon(x)}{2\sqrt{2.14}}=\frac{0.005}{2\times1.46287}\approx0.00171,\qquad \varepsilon_{\mathrm r}=\frac{0.00171}{1.46287}\approx0.12\% . ε ( u ~ 1 ) ≈ 2 2.14 ε ( x ) = 2 × 1.46287 0.005 ≈ 0.00171 , ε r = 1.46287 0.00171 ≈ 0.12%.
u ~ 1 = 1.46287 ⋯ = 0.146 × 1 0 1 \tilde u_1=1.46287\cdots=0.146\times10^1 u ~ 1 = 1.46287 ⋯ = 0.146 × 1 0 1 (m = 1 m=1 m = 1 ):n = 3 n=3 n = 3 时 1 2 × 1 0 − 2 = 0.005 ≥ 0.00171 \tfrac12\times10^{-2}=0.005\ge0.00171 2 1 × 1 0 − 2 = 0.005 ≥ 0.00171 ✓,n = 4 n=4 n = 4 时 0.0005 < 0.00171 0.0005\lt0.00171 0.0005 < 0.00171 ✗,故 u ~ 1 \tilde u_1 u ~ 1 能有 3 位 有效数字(u ~ 1 ≈ 1.46 \tilde u_1\approx1.46 u ~ 1 ≈ 1.46 )。
(2) u 2 = x y − x y u_2=xy-\dfrac xy u 2 = x y − y x ,u ~ 2 = 2.14 × ( − 1.231 ) + 2.14 1.231 = − 2.63434 + 1.73842 = − 0.89592 \tilde u_2=2.14\times(-1.231)+\dfrac{2.14}{1.231}=-2.63434+1.73842=-0.89592 u ~ 2 = 2.14 × ( − 1.231 ) + 1.231 2.14 = − 2.63434 + 1.73842 = − 0.89592 。由 (1.1),
∂ u 2 ∂ x = y − 1 y = − 1.231 + 1 1.231 = − 0.41865 , ∂ u 2 ∂ y = x + x y 2 = 2.14 + 2.14 1.23 1 2 = 3.55220. \frac{\partial u_2}{\partial x}=y-\frac1y=-1.231+\frac{1}{1.231}=-0.41865,\qquad \frac{\partial u_2}{\partial y}=x+\frac{x}{y^2}=2.14+\frac{2.14}{1.231^2}=3.55220 . ∂ x ∂ u 2 = y − y 1 = − 1.231 + 1.231 1 = − 0.41865 , ∂ y ∂ u 2 = x + y 2 x = 2.14 + 1.23 1 2 2.14 = 3.55220.
(注意此处的 y y y 为负;两个偏导数已按链式法则合并:∂ ∂ y ( x y − x y ) = x + x y 2 \dfrac{\partial}{\partial y}\bigl(xy-\dfrac xy\bigr)=x+\dfrac{x}{y^2} ∂ y ∂ ( x y − y x ) = x + y 2 x 。)误差限按绝对值求和:
ε ( u ~ 2 ) ≈ ∣ − 0.41865 ∣ × 0.005 + ∣ 3.55220 ∣ × 0.0005 ≈ 0.00209 + 0.00178 = 0.00387 , \varepsilon(\tilde u_2)\approx\lvert-0.41865\rvert\times0.005+\lvert3.55220\rvert\times0.0005\approx0.00209+0.00178=0.00387, ε ( u ~ 2 ) ≈ ∣ − 0.41865 ∣ × 0.005 + ∣ 3.55220 ∣ × 0.0005 ≈ 0.00209 + 0.00178 = 0.00387 ,
ε r ( u ~ 2 ) = 0.00387 0.89592 ≈ 0.43 % . \varepsilon_{\mathrm r}(\tilde u_2)=\frac{0.00387}{0.89592}\approx0.43\% . ε r ( u ~ 2 ) = 0.89592 0.00387 ≈ 0.43%.
u ~ 2 = − 0.89592 × 1 0 0 \tilde u_2=-0.89592\times10^0 u ~ 2 = − 0.89592 × 1 0 0 (m = 0 m=0 m = 0 ):n = 2 n=2 n = 2 时 0.005 ≥ 0.00387 0.005\ge0.00387 0.005 ≥ 0.00387 ✓,n = 3 n=3 n = 3 时 0.0005 < 0.0005\lt 0.0005 < ✗,故 u ~ 2 \tilde u_2 u ~ 2 能有 2 位 有效数字(u ~ 2 ≈ − 0.90 \tilde u_2\approx-0.90 u ~ 2 ≈ − 0.90 )。验收标准:程序复算全部 8 个中间值,与教材数字逐位一致(误差 < 1 0 − 6 \lt10^{-6} < 1 0 − 6 )。
C3 · 【原书习题 5】相近数相减选算法
设 x = 3.214 x=3.214 x = 3.214 和 y = 3.213 y=3.213 y = 3.213 都是准确值。在四位十进制限制下,欲计算 u = x − y u=\sqrt x-\sqrt y u = x − y 与 u = tan x − tan y u=\tan x-\tan y u = tan x − tan y 。试选择精确度较高的算法,计算出 u u u 的近似值。
解答
u 1 = x − y u_1=\sqrt x-\sqrt y u 1 = x − y 。 直接算:3.214 ≈ 1.793 \sqrt{3.214}\approx1.793 3.214 ≈ 1.793 ,3.213 ≈ 1.792 \sqrt{3.213}\approx1.792 3.213 ≈ 1.792 (四位),相减得 0.001 0.001 0.001 ,而真值 u 1 = 0.00027892 ⋯ u_1=0.00027892\cdots u 1 = 0.00027892 ⋯ ——结果是真值的 3.6 倍(误差达到真值的 2.6 倍),一位有效数字都没有 。改写(有理化):
u 1 = x − y x + y = 0.001 3.214 + 3.213 . u_1=\frac{x-y}{\sqrt x+\sqrt y}=\frac{0.001}{\sqrt{3.214}+\sqrt{3.213}} . u 1 = x + y x − y = 3.214 + 3.213 0.001 .
四位算术:分母 1.793 + 1.792 = 3.585 1.793+1.792=3.585 1.793 + 1.792 = 3.585 ,u 1 = 0.001 / 3.585 = 0.0002789 u_1=0.001/3.585=0.0002789 u 1 = 0.001/3.585 = 0.0002789 ,与真值 0.000278921 0.000278921 0.000278921 相对误差 ≈ 1 0 − 4 \approx10^{-4} ≈ 1 0 − 4 ——4 位有效数字。
u 2 = tan x − tan y u_2=\tan x-\tan y u 2 = tan x − tan y 。 直接算:tan 3.214 = 0.07253 \tan 3.214=0.07253 tan 3.214 = 0.07253 ,tan 3.213 = 0.07153 \tan 3.213=0.07153 tan 3.213 = 0.07153 ,相减 0.0010 0.0010 0.0010 (真值 0.00100519 0.00100519 0.00100519 ,2 位)。改写(和差化积):
u 2 = sin ( x − y ) cos x cos y = sin 0.001 cos 3.214 ⋅ cos 3.213 = 0.001000 0.9974 × 0.9975 = 0.001000 0.9949 = 0.001005 , u_2=\frac{\sin(x-y)}{\cos x\cos y}=\frac{\sin 0.001}{\cos 3.214\cdot\cos 3.213}=\frac{0.001000}{0.9974\times0.9975}=\frac{0.001000}{0.9949}=0.001005, u 2 = cos x cos y sin ( x − y ) = cos 3.214 ⋅ cos 3.213 sin 0.001 = 0.9974 × 0.9975 0.001000 = 0.9949 0.001000 = 0.001005 ,
与真值 0.00100519 0.00100519 0.00100519 相对误差 ≈ 2 × 1 0 − 4 \approx2\times10^{-4} ≈ 2 × 1 0 − 4 ——4 位。验收标准:用 decimal(prec=4)模拟四位机复现两个结果;打印直接法与改写法的实测相对误差表。
C4 · 【原书习题 6】六个公式算 ( 2 − 1 ) 6 (\sqrt2-1)^6 ( 2 − 1 ) 6
取 2 ≈ 1.4 \sqrt2\approx1.4 2 ≈ 1.4 ,欲计算 ( 2 − 1 ) 6 (\sqrt2-1)^6 ( 2 − 1 ) 6 的近似值,又已知
( 2 − 1 ) 6 = ( 3 − 2 2 ) 3 = 99 − 70 2 = 1 ( 2 + 1 ) 6 = 1 ( 3 + 2 2 ) 3 = 1 99 + 70 2 . (\sqrt2-1)^6=(3-2\sqrt2)^3=99-70\sqrt2=\frac{1}{(\sqrt2+1)^6}=\frac{1}{(3+2\sqrt2)^3}=\frac{1}{99+70\sqrt2}. ( 2 − 1 ) 6 = ( 3 − 2 2 ) 3 = 99 − 70 2 = ( 2 + 1 ) 6 1 = ( 3 + 2 2 ) 3 1 = 99 + 70 2 1 .
试分析这六个公式中使用哪一个进行计算使得误差最小。
解答
真值 ( 2 − 1 ) 6 = 0.00505063388 ⋯ (\sqrt2-1)^6=0.00505063388\cdots ( 2 − 1 ) 6 = 0.00505063388 ⋯ ,输入误差 δ = 1.4 − 2 = − 0.01421356 \delta=1.4-\sqrt2=-0.01421356 δ = 1.4 − 2 = − 0.01421356 。六个公式都可视为 2 \sqrt2 2 的函数 g g g ;按其导数在近似值处取值(定理 1.2.2 ),放大因子 G = ∣ g ′ ( 1.4 ) ∣ G=\lvert g'(1.4)\rvert G = ∣ g ′ ( 1.4 )∣ 。各式的 G G G 与实测误差如下:
公式
∣ g ′ ∣ \lvert g'\rvert ∣ g ′ ∣
误差估计 G δ G\delta G δ
实测结果
实测误差
( 2 − 1 ) 6 (\sqrt2-1)^6 ( 2 − 1 ) 6
0.0614 0.0614 0.0614
8.7 × 1 0 − 4 8.7\times10^{-4} 8.7 × 1 0 − 4
0.004096 0.004096 0.004096
9.6 × 1 0 − 4 9.6\times10^{-4} 9.6 × 1 0 − 4
( 3 − 2 2 ) 3 (3-2\sqrt2)^3 ( 3 − 2 2 ) 3
0.240 0.240 0.240
3.4 × 1 0 − 3 3.4\times10^{-3} 3.4 × 1 0 − 3
0.008 0.008 0.008
3.0 × 1 0 − 3 3.0\times10^{-3} 3.0 × 1 0 − 3
99 − 70 2 99-70\sqrt2 99 − 70 2
70 70 70
1.0 1.0 1.0
1.000 1.000 1.000
9.9 × 1 0 − 1 9.9\times10^{-1} 9.9 × 1 0 − 1
1 / ( 2 + 1 ) 6 1/(\sqrt2+1)^6 1/ ( 2 + 1 ) 6
0.0131 0.0131 0.0131
1.9 × 1 0 − 4 1.9\times10^{-4} 1.9 × 1 0 − 4
0.0052328 0.0052328 0.0052328
1.8 × 1 0 − 4 1.8\times10^{-4} 1.8 × 1 0 − 4
1 / ( 3 + 2 2 ) 3 1/(3+2\sqrt2)^3 1/ ( 3 + 2 2 ) 3
0.0053 0.0053 0.0053
7.5 × 1 0 − 5 7.5\times10^{-5} 7.5 × 1 0 − 5
0.0051253 0.0051253 0.0051253
7.5 × 1 0 − 5 7.5\times10^{-5} 7.5 × 1 0 − 5
1 / ( 99 + 70 2 ) 1/(99+70\sqrt2) 1/ ( 99 + 70 2 )
0.0018 0.0018 0.0018
2.6 × 1 0 − 5 2.6\times10^{-5} 2.6 × 1 0 − 5
0.0050761 0.0050761 0.0050761
2.6 × 1 0 − 5 \mathbf{2.6\times10^{-5}} 2.6 × 1 0 − 5
结论:第 6 式 1 / ( 99 + 70 2 ) 1/(99+70\sqrt2) 1/ ( 99 + 70 2 ) 的误差最小 (比第 3 式好近 5 个数量级)。道理在于:第 3 式是两个相近的大数 99 99 99 与 70 2 ≈ 98 70\sqrt2\approx98 70 2 ≈ 98 相减(放大因子 70);第 6 式把同样两个数放进分母 相加再取倒数——相近数由相减改为相加,除法又把误差进一步压低。验收标准:复现表中的实测列,并画出六个误差随 δ \delta δ 变化的对数图(斜率应都为 1,截距差即放大因子之差)。
C5 · 【原书习题 7】求和次序 + 秦九韶实测
(1) 在四位十进制的限制下,选择精确度最高的算法计算 u = 1340 × 1 0 2 + 40 + 50 + 60 + 90 u=1340\times10^2+40+50+60+90 u = 1340 × 1 0 2 + 40 + 50 + 60 + 90 。
(2) 用 Python 实测:n = 5000 n=5000 n = 5000 时逐项幂算法与秦九韶算法的耗时比,验证 O ( n 2 ) O(n^2) O ( n 2 ) 与 O ( n ) O(n) O ( n ) 。
解答
(1) 真值 134000 + 240 = 134240 134000+240=134240 134000 + 240 = 134240 。原序(累加器先取 0.1340 × 1 0 6 0.1340\times10^6 0.1340 × 1 0 6 ):按对阶规则,40 , 50 40,50 40 , 50 小于累加器末位的半单位 50 50 50 ,60 , 90 60,90 60 , 90 也过不了对阶,故在截断模型下全部丢失,结果停在 0.1340 × 1 0 6 0.1340\times10^6 0.1340 × 1 0 6 ,误差 − 240 -240 − 240 ;四舍五入模型下 60、90 会部分存活,见实验三 。精确度最高的算法:先把小数加在一起 ——40 + 50 + 60 + 90 = 240 40+50+60+90=240 40 + 50 + 60 + 90 = 240 (精确),再 134000 + 240 = 134240 134000+240=134240 134000 + 240 = 134240 ,最后舍入得 0.1342 × 1 0 6 0.1342\times10^6 0.1342 × 1 0 6 ,误差仅 − 40 -40 − 40 。
(2) 实测(教材运行环境,n=5000):逐项幂 279 ms,秦九韶 0.39 ms,比值约 700。验收标准:你的实测比值应在数百量级;若接近 1,检查是否把「幂每次从 1 重乘」写成了「复用上一轮的 x k x^k x k 」(那也是 O ( n ) O(n) O ( n ) ,见1.2.4 的代码注释)。
C6 · 【原书习题 8】积分递推的稳定方向
设 y n = ∫ 0 1 x n 1 + 4 x d x y_n=\displaystyle\int_0^1\frac{x^n}{1+4x}\,dx y n = ∫ 0 1 1 + 4 x x n d x 。在四位十进制的限制下,使用一个具有数值稳定性的算法,计算 y n ( n = 0 , 1 , ⋯ , 8 ) y_n\ (n=0,1,\cdots,8) y n ( n = 0 , 1 , ⋯ , 8 ) 的近似值。
解答
建立递推: y n + 1 4 y n − 1 = ∫ 0 1 x n + 1 4 x n − 1 1 + 4 x d x = ∫ 0 1 x n − 1 ( x + 1 4 ) 1 + 4 x d x = 1 4 ∫ 0 1 x n − 1 d x = 1 4 n ( n ≥ 1 ) y_n+\dfrac14y_{n-1}=\displaystyle\int_0^1\frac{x^n+\frac14x^{n-1}}{1+4x}dx=\int_0^1\frac{x^{n-1}(x+\frac14)}{1+4x}dx=\frac14\int_0^1x^{n-1}dx=\frac{1}{4n}\ (n\ge1) y n + 4 1 y n − 1 = ∫ 0 1 1 + 4 x x n + 4 1 x n − 1 d x = ∫ 0 1 1 + 4 x x n − 1 ( x + 4 1 ) d x = 4 1 ∫ 0 1 x n − 1 d x = 4 n 1 ( n ≥ 1 ) ,且
y 0 = ∫ 0 1 d x 1 + 4 x = ln 5 4 ≈ 0.4024. y_0=\int_0^1\frac{dx}{1+4x}=\frac{\ln 5}{4}\approx0.4024 . y 0 = ∫ 0 1 1 + 4 x d x = 4 ln 5 ≈ 0.4024.
判断方向: 两式中,正向 y n = 1 4 n − 1 4 y n − 1 y_n=\dfrac{1}{4n}-\dfrac14y_{n-1} y n = 4 n 1 − 4 1 y n − 1 的系数是 − 1 4 -\dfrac14 − 4 1 ——误差每步缩小 4 倍,正向稳定(与1.2.4 原则 (1) 的 − 5 -5 − 5 恰好相反!);反向 y n − 1 = 1 n − 4 y n y_{n-1}=\dfrac1n-4y_n y n − 1 = n 1 − 4 y n 的系数是 − 4 -4 − 4 ,误差被放大,不可用。所以直接正向递推即可 (关键是把方向判断做对)。
四位十进制下的计算结果(「真值」列为 scipy 求积结果,供对照):
n n n
四位递推值
真值
误差
0
0.4024
0.4023595
+ 4.0 × 1 0 − 5 +4.0\times10^{-5} + 4.0 × 1 0 − 5
1
0.1494
0.1494101
− 1.0 × 1 0 − 5 -1.0\times10^{-5} − 1.0 × 1 0 − 5
2
0.08765
0.0876475
+ 2.5 × 1 0 − 6 +2.5\times10^{-6} + 2.5 × 1 0 − 6
3
0.06142
0.0614215
− 1.5 × 1 0 − 6 -1.5\times10^{-6} − 1.5 × 1 0 − 6
4
0.04714
0.0471446
− 4.6 × 1 0 − 6 -4.6\times10^{-6} − 4.6 × 1 0 − 6
5
0.03821
0.0382138
− 3.8 × 1 0 − 6 -3.8\times10^{-6} − 3.8 × 1 0 − 6
6
0.03212
0.0321132
+ 6.8 × 1 0 − 6 +6.8\times10^{-6} + 6.8 × 1 0 − 6
7
0.02768
0.0276860
− 6.0 × 1 0 − 6 -6.0\times10^{-6} − 6.0 × 1 0 − 6
8
0.02433
0.0243285
+ 1.5 × 1 0 − 6 +1.5\times10^{-6} + 1.5 × 1 0 − 6
初始误差按每步约 1 4 \tfrac14 4 1 衰减(4 × 1 0 − 5 → 1 0 − 6 4\times10^{-5}\to10^{-6} 4 × 1 0 − 5 → 1 0 − 6 量级),总量被新舍入噪声压在 1 0 − 5 10^{-5} 1 0 − 5 附近、不再增长。验收标准:程序以 y = 1/(4*n) - y/4 迭代并打印误差列,误差总体呈 1 4 \tfrac14 4 1 衰减趋势且不随 n n n 累积增长;再把递推倒过来跑一遍,观察 n n n 回退 8 步时误差放大 4 8 ≈ 6.5 × 1 0 4 4^8\approx6.5\times10^4 4 8 ≈ 6.5 × 1 0 4 倍。
D1 · 量具与有效数字的逆向设计
你为车间设计长度检验规程。目标:对长度在 [ 1 mm , 1 m ] [1\,\text{mm},\,1\,\text{m}] [ 1 mm , 1 m ] 内的工件,测量相对 误差不超过 0.5 % 0.5\% 0.5% 。参照原书例 1(卡尺的绝对误差限为 0.5 0.5 0.5 mm,量程内相对误差随物长变化)回答:
(1) 一把最小刻度为 1 mm 的卡尺能覆盖多长的工件区间?
(2) 对 [ 1 mm , 10 mm ] [1\,\text{mm},\,10\,\text{mm}] [ 1 mm , 10 mm ] 的小件,应选什么刻度的量具?
(3) 写一份 3 行的检验规程,说明「量具选择由被测物量级决定」。
提示与参考
(1) 需 0.5 L ≤ 0.5 % ⇒ L ≥ 100 \dfrac{0.5}{L}\le0.5\%\Rightarrow L\ge100 L 0.5 ≤ 0.5% ⇒ L ≥ 100 mm:只覆盖 [ 100 , 1000 ] [100,1000] [ 100 , 1000 ] mm。(2) 需刻度 1 2 gridscale ≤ 0.005 L \tfrac12\,\text{gridscale}\le0.005L 2 1 gridscale ≤ 0.005 L :L = 1 L=1 L = 1 mm 时刻度须 ≤ 0.01 \le0.01 ≤ 0.01 mm:0.01 mm 刻度的千分尺(=螺旋测微器)勉强够用,0.001 mm 刻度的高精度测微器则稳妥。(3) 规程要点:量具刻度 ≤ 0.01 × \le0.01\times ≤ 0.01 × 被测长度下限;同一批工件按量级分三档选具;读数记录到刻度的 1 2 \tfrac12 2 1 单位(与有效数字声明一致)。开放要点: 讨论「估读到 1/10 格」是否合理——人的读数分辨约 1/5~1/10 格,可就此做敏感性分析。
D2 · float32 还是 float64?写一份选型报告
对「求解 1 0 5 10^5 1 0 5 阶三对角方程组(追赶法,约 1 0 5 × 10^5\times 1 0 5 × 常数次乘加)」这一任务,从内存、速度、精度三个维度比较 float32 与 float64,写出带数据的选型结论。要求:实测(np.dtype、time.perf_counter)、引用本章概念(u u u 、有效数字位数、误差放大)、给出「何时可以降精度」的判据。
提示与参考
内存:float32 减半(1 0 5 10^5 1 0 5 阶三对角存 3 条带约 3 × 1 0 5 3\times10^5 3 × 1 0 5 个数 → 1.2 MB vs 2.4 MB);速度:纯算术下 float32 可快 1~2 倍,但带宽受限时收益缩小(用 NumPy 实测 np.dot / np.linalg.solvebanded);精度:float32 的 u ≈ 6 × 1 0 − 8 u\approx6\times10^{-8} u ≈ 6 × 1 0 − 8 对应约 7 位有效数字,而追赶法的舍入误差按 O ( n ) O(n) O ( n ) 放大(1 0 5 10^5 1 0 5 步 → 最坏丢掉 4~5 位,只剩 2~3 位有效数字),float64 放大后仍剩 11 位以上。判据:保留位数 ≈ 15.9 − log 10 ( cond × n ) \approx15.9-\log_{10}(\text{cond}\times n) ≈ 15.9 − log 10 ( cond × n ) ;小于任务要求位数就不能降精度。 (完整的条件数分析见补充篇 2.4 ,此处先按 n n n 的量级估计。)
D3 · 数值代码体检器
写一个函数 audit(expr_pairs, eps):输入一组「数学表达式 → 计算它的可调用函数」对,自动检测三类隐患:(a) 结果量级远小于操作数量级(疑似相近数相减:∣ u ∣ < 1 0 − 6 max ( ∣ a ∣ , ∣ b ∣ ) \lvert u\rvert\lt10^{-6}\max(\lvert a\rvert,\lvert b\rvert) ∣ u ∣ < 1 0 − 6 max (∣ a ∣ , ∣ b ∣) );(b) 除法的分母远小于分子(∣ b ∣ < 1 0 − 6 ∣ a ∣ \lvert b\rvert\lt10^{-6}\lvert a\rvert ∣ b ∣ < 1 0 − 6 ∣ a ∣ );(c) 大小悬殊的加法(∣ a ∣ > 1 0 9 ∣ b ∣ \lvert a\rvert\gt10^{9}\lvert b\rvert ∣ a ∣ > 1 0 9 ∣ b ∣ 且 b ≠ 0 b\neq0 b = 0 )。再用它体检求根公式、方差两遍法与 ( 2 − 1 ) 6 (\sqrt2-1)^6 ( 2 − 1 ) 6 的六公式,输出「危险 / 安全」清单。
提示与参考
参考骨架:
def audit(name, f, args, eps=1e-6):
a, b = args
u = f(*args)
risks = []
if abs(u) < eps * max(abs(a), abs(b)) and u != 0:
risks.append("疑似相近数相减")
if b != 0 and abs(b) < eps * abs(a):
risks.append("疑似小除数")
if a != 0 and abs(a) > 1e9 * abs(b) and b != 0:
risks.append("疑似大数吞噬小数")
print(f"{name:24s} u={u:+.3e} {'; '.join(risks) or '安全'}")
验收标准:对 ( 2 − 1 ) 6 (\sqrt2-1)^6 ( 2 − 1 ) 6 的公式 3(99 − 70 × 1.4 99-70\times1.4 99 − 70 × 1.4 )应报「疑似相近数相减」,对公式 6 报「安全」;报告里解释阈值 1 0 − 6 10^{-6} 1 0 − 6 的选取依据(对应损失约 6 位有效数字的临界点)。
D4 · 真实数据的方差:三条路线的对比
找一组带真实偏移的数据(如某城市连续 30 天的气温、某股票连续收益率加常数、或你自己课程的分数),用三种方法算方差并对比:(a) 两遍法 1 n ∑ x i 2 − x ˉ 2 \dfrac1n\sum x_i^2-\bar x^2 n 1 ∑ x i 2 − x ˉ 2 ;(b) 平移法(先减去肉眼可见的共同偏移);(c) Welford 单遍算法。以 statistics.variance 或高精度 math.fsum 版本为基准,报告三种方法各自的相对误差,并解释结果差异。
提示与参考
Welford 递推:x ˉ 1 = x 1 \bar x_1=x_1 x ˉ 1 = x 1 ,s 1 = 0 s_1=0 s 1 = 0 ;x ˉ k = x ˉ k − 1 + x k − x ˉ k − 1 k \bar x_k=\bar x_{k-1}+\dfrac{x_k-\bar x_{k-1}}{k} x ˉ k = x ˉ k − 1 + k x k − x ˉ k − 1 ,s k = s k − 1 + ( x k − x ˉ k − 1 ) ( x k − x ˉ k ) s_k=s_{k-1}+\bigl(x_k-\bar x_{k-1}\bigr)\bigl(x_k-\bar x_k\bigr) s k = s k − 1 + ( x k − x ˉ k − 1 ) ( x k − x ˉ k ) ;方差 = s n n − 1 =\dfrac{s_n}{n-1} = n − 1 s n (样本方差)。预期现象:数据共同偏移 μ ≫ \mu\gg μ ≫ 波动幅度时 (a) 失效(可复现教材实验二的 0 0 0 输出,把偏移加大到 1 0 10 10^{10} 1 0 10 ),(b)(c) 稳定;Welford 的优点是单遍数据流 即可用,且每一步都不构造大数。报告要点:列出偏移/波动比从 1 0 0 10^0 1 0 0 扫到 1 0 10 10^{10} 1 0 10 的误差曲线,标出 (a) 开始失守的临界比值并解释(Σ x i 2 \Sigma x_i^2 Σ x i 2 的绝对舍入误差 ∼ n ⋅ u ⋅ μ 2 \sim n\cdot u\cdot\mu^2 ∼ n ⋅ u ⋅ μ 2 追上方差本身)。
原书习题对照表
原书 15 道习题的归宿:习题 1、2 → [C1];习题 3 → [A3(c)(d)];习题 4 → [C2];习题 5 → [C3];习题 6 → [C4];习题 7 → [C5];习题 8 → [C6];习题 9 → 正文定理 1.3.1 已证;习题 10 → [B1];习题 11 → 正文 1.3.4 已证;习题 12 → [B6] 的数值检验部分;习题 13 → [B3];习题 14 → [B2][B6];习题 15 → [B4]。新增的 A、D 组题只使用第一章概念。