误差的来源#
- 模型误差:数学模型与实际问题之间的误差
- 观测误差:观察模型参数值产生的误差
- 截断误差:也称方法误差,数值方法计算的误差
- 舍入误差:计算过程中取有限位数字引起的误差
绝对误差、相对误差#
设 x 是某实数的精确值,x~ 是它的一个近似值。那么:
- 绝对误差:e(x)=∣x−x~∣
- 相对误差:er=∣x∣e(x) (x=0)
- 绝对误差限:若 ∣x−x~∣≤ε,则称 ε 是 x~ 的绝对误差限
- 相对误差限:称 εr=∣x∣ε (x=0) 为近似值 x~ 的相对误差限
由于 x 一般未知,常用 er=∣x~∣e(x) 来表示相对误差,用 εr=∣x~∣ε 表示相对误差界。
有效数字#
- 若近似值 x~ 的误差限小于其某一位的半个单位,该位到 x~ 的第一位非零数字共有 n 位,则 x~ 有 n 位有效数字。
- 设 x~ 是 x 的一个近似值,将 x~ 写成规范形式:
x~=±0.a1a2…ai⋯×10m
其中:m 为整数。ai∈{0,1,2,…,9},且 a1=0。如果有:
∣x−x~∣≤0.5×10m−n
则称 x~ 为 x 的具有 n 位有效数字的近似值。
- x~ 的误差限小于其某一位的半个单位,该位到 x~ 的第一位非零数字共有 n 位,则 x~ 有 n 位有效数字。
- 有效数字与相对误差的关系。
已知有效数字为 n,估计相对误差的公式为:
∣x~∣∣x~−x∣≤2a11×10−(n−1)
反之,若满足以下条件:
∣x~∣∣x~−x∣≤2(a1+1)1×10−(n−1)
则至少具有 n 位有效数字。
运算误差分析#
- 问题:设 x~ 是自变量 x 的一个近似值,误差界为 ε(x~)。利用 f(x~) 近似 f(x) 的误差界为 ε(f(x~)),试估计 ε(f(x~))
- 由 Taylor 展开可知:
f(x)−f(x~)=f′(x~)(x−x~)+2!f′′(ξ)(x−x~)2
由此可得绝对误差的估计:
∣f(x)−f(x~)∣≤∣f′(x~)ε(x~)∣+2!∣f′′(ξ)∣ε(x~)2
忽略 ε(x~) 的高阶项可得函数的误差为:
ε(f(x~))≈∣f′(x~)∣ε(x~)
推论:
n 元函数的误差估计对于 n 元函数 f(x1,x2,…,xn),x~1,x~2,…,x~n 分别是自变量 x1,x2,…,xn 的近似值,则有:
ε(f(x~1,x~2,…,x~n))=∣f(x~1,x~2,…,x~n)−f(x1,x2,…,xn)∣≈k=1∑n(∂xk∂f)x~ε(x~k)
其中:
(∂xk∂f)x~=∂xk∂f(x1,x2,…,xn)x1,x2,…,xn=x~1,x~2,…,x~n
特别地:
ε(x~1±x~2)≈ε(x~1)+ε(x~2)
ε(x~1⋅x~2)≈∣x~1∣ε(x~2)+∣x~2∣ε(x~1)
病态问题#
对于数学问题本身,如果输入数据有微小扰动,引起问题的解有很大扰动,则称该问题是病态问题。非病态的问题称为良态问题。
病态和良态是相对的,没有严格的界线。
当数学问题的解的相对误差与输入数据的相对误差之比的绝对值远远大于1时,常常就
认为该问题是病态的。
相对误差的比值:
εr(x~)εr(f(x~))=∣f(x~)∣εr(x~)ε(f(x~))≈∣f(x~)∣εr(x~)∣f′(x~)∣ε(x~)=f(x~)f′(x~)x~=Cp
其中,Cp 称为条件数。判定标准:通常认为当 条件数 Cp≥10 时,该计算问题是病态的。
数值稳定性#
对于某个数值计算方法,如果输入数据的误差在计算过程中迅速增长而得不到控制,则称该算法是数值不稳定的,否则是数值稳定的。
更准确地说,假设一个算法有初始误差 ε0>0,它引起此后运算 n 步的误差是 εn:
- 线性型增长:如果 εn≈Cnε0(其中 C 是与 n 无关的常数),则称误差的增长是线性型的。
- 指数型增长:如果 εn≈Cnε0,则称误差的增长是指数型的。
数值计算的基本原则#
-
防止大数吃小数。
用三位十进制数字计算:
x=101+δ1+δ2+⋯+δ100
其中 0.1≤δi≤0.4,i=1,2,…,100。
-
避免两个相近的数字相减。
常用公式:
sinx1−cosx=1+cosxsinx
x+1−x=x+1+x1
logx1−logx2=logx2x1
-
简化计算步骤,减少运算次数。
- 快速幂运算:求 x255。
x255=x⋅x2⋅x4⋅x8⋅x16⋅x32⋅x64⋅x128
- 秦九韶算法:给定 x,计算多项式 P(x)=anxn+an−1xn−1+⋯+a1x+a0。将多项式改写为嵌套形式:
P(x)=(…((anx+an−1)x+an−2)x+⋯+a1)x+a0
- 级数展开的选择:计算 ln2。利用级数
ln1−x1+x=2(x+3x3+5x5+…)
取 x=31:只需计算 前 5 项,即可精确到 10−5。计算前 10 项,截断误差小于 10−10。
-
控制误差的传播。
计算积分 In=∫01x+5xndx,n=0,1,…,6
递推公式:
In+5In−1=∫01x+5xn+5xn−1dx=∫01xn−1dx=n1
| 计算方法 | 递推公式 | 误差传播特性 |
|---|
| 方法 A (正向) | In=n1−5In−1 | 误差被放大 5 倍,迅速爆炸 |
| 方法 B (反向) | In−1=51(n1−In) | 误差被缩小为 1/5,趋于稳定 |