文章目录
误差
误差的分类
1、模型误差:用数值计算方法解决实际问题时建立数学模型,而建立起的数学模型只是复杂客观现象的近似描述,存在误差。数学模型与实际问题之间出现的这种误差被称为模型误差。
2、观测误差:由于工具精度和测量手段的限制,由观测或实验得来的物理量存在误差。由观测产生的误差称为观测误差或参量误差。
3、截断误差:数学模型的精确解与由数值方法求出的近似解之间的误差称为截断误差,又称为方法误差。
例如:用
sin
x
\sin x
sinx 的泰勒展开式的部分和
S
n
(
x
)
S_n(x)
Sn(x) 来近似替代
sin
x
\sin x
sinx ,其余项
R
n
(
x
)
R_n(x)
Rn(x) 就是真值的截断误差。
sin
x
=
x
−
1
3
!
x
3
+
1
5
!
x
5
−
1
7
!
x
7
+
⋯
≈
x
−
1
3
!
x
3
+
1
5
!
x
5
=
S
5
(
x
)
\sin x=x-\frac{1}{3!}x^3+\frac{1}{5!}x^5-\frac{1}{7!}x^7+\cdots\approx x-\frac{1}{3!}x^3+\frac{1}{5!}x^5=S_5(x)
sinx=x−3!1x3+5!1x5−7!1x7+⋯≈x−3!1x3+5!1x5=S5(x)
R 5 ( x ) = sin x − S 5 ( x ) = − 1 7 ! x 7 + 1 9 ! x 9 − ⋯ R_5(x)=\sin x-S_5(x)=-\frac{1}{7!}x^7+\frac{1}{9!}x^9-\cdots R5(x)=sinx−S5(x)=−7!1x7+9!1x9−⋯
4、舍入误差:由于计算机位数有限,计算时只能对超过位数的数字进行四舍五入,由此产生的误差称为舍入误差。舍入误差的积累可能是十分惊人的。
截断误差和舍入误差是由计算方法所引起的,是数值计算方法的主要研究对象。
绝对误差、相对误差和有效数字
绝对误差与绝对误差限
设某一量的精确值为
x
x
x ,其近似值为
x
∗
x^*
x∗ ,则称:
e
∗
(
x
)
=
x
−
x
∗
e^*(x)=x-x^*
e∗(x)=x−x∗
为近似值
x
∗
x^*
x∗ 的绝对误差,简称误差。
一般地,某一量的精确值 x x x 是不知道的,因而 e ∗ ( x ) e^*(x) e∗(x) 也无法求出,但往往可以估计出 e ∗ ( x ) e^*(x) e∗(x) 的上界:
即存在正数
ε
∗
\varepsilon^*
ε∗ ,使得
∣
e
∗
(
x
)
∣
=
∣
x
−
x
∗
∣
≤
ε
∗
|e^*(x)|=|x-x^*|\leq\varepsilon^*
∣e∗(x)∣=∣x−x∗∣≤ε∗
称
ε
∗
\varepsilon^*
ε∗ 为近似值
x
∗
x^*
x∗ 的绝对误差限 ,简称误差限或精度,
ε ∗ \varepsilon^* ε∗ 越小,表示近似值 x ∗ x^* x∗ 的精度越高。
工程技术中,通常的表示是: x x x = x ∗ x^* x∗ ± \pm ± ε ∗ \varepsilon^* ε∗,绝对误差是有量纲的。
例如:
v
v
v =(100
±
\pm
± 2) V 表示
v
∗
v^*
v∗ =100 V 是电压
v
v
v 的一个近似值,而 2 V 是近似值
v
∗
v^*
v∗ 的一个绝对误差限,即:
∣
v
−
v
∗
∣
≤
2
V
.
|v-v^*|\leq2V.
∣v−v∗∣≤2V.
相对误差与相对误差限
称绝对误差与精确值之比为相对误差,即:
e
r
(
x
)
=
e
∗
(
x
)
x
=
x
−
x
∗
x
e_r(x)=\frac{e^*(x)}{x}=\frac{x-x^*}{x}
er(x)=xe∗(x)=xx−x∗
其中
x
∗
x^*
x∗ 为
x
x
x 的近似值,
e
∗
(
x
)
e^*(x)
e∗(x) 为绝对误差。
实际计算中,精确值
x
x
x 往往是不知道的,并且:
e
∗
(
x
)
x
−
e
∗
(
x
)
x
∗
=
e
∗
(
x
)
(
x
∗
−
x
)
x
x
∗
=
−
[
e
∗
(
x
)
]
2
[
x
∗
+
e
∗
(
x
)
]
x
∗
=
−
[
e
∗
(
x
)
x
∗
]
2
1
+
e
∗
(
x
)
x
∗
\frac{e^*(x)}{x}-\frac{e^*(x)}{x^*}=\frac{e^*(x)(x^*-x)}{xx^*}=\frac{-[e^*(x)]^2}{[x^*+e^*(x)]x^*}=\frac{-[\frac{e^*(x)}{x^*}]^2}{1+\frac{e^*(x)}{x^*}}
xe∗(x)−x∗e∗(x)=xx∗e∗(x)(x∗−x)=[x∗+e∗(x)]x∗−[e∗(x)]2=1+x∗e∗(x)−[x∗e∗(x)]2
这项是
e
∗
(
x
)
x
∗
\frac{e^*(x)}{x^*}
x∗e∗(x) 的平方级,为无穷小量,可忽略不计,所以相对误差也可写作:
e
r
∗
(
x
)
=
e
∗
(
x
)
x
∗
=
x
−
x
∗
x
∗
e_r^*(x)=\frac{e^*(x)}{x^*}=\frac{x-x^*}{x^*}
er∗(x)=x∗e∗(x)=x∗x−x∗
相对误差同样存在相对误差限,若存在正数
ε
r
∗
\varepsilon_r^*
εr∗ ,使得:
∣
e
r
∗
(
x
)
∣
=
∣
e
∗
(
x
)
x
∗
∣
=
∣
x
−
x
∗
x
∗
∣
≤
ε
r
∗
|e_r^*(x)|=|\frac{e^*(x)}{x^*}|=|\frac{x-x^*}{x^*}|\leq\varepsilon_r^*
∣er∗(x)∣=∣x∗e∗(x)∣=∣x∗x−x∗∣≤εr∗
则称
ε
r
∗
\varepsilon_r^*
εr∗ 为近似值
x
∗
x^*
x∗ 的相对误差限,相对误差是无量纲的,通常用百分比表示,也称百分误差。
例如,
x
1
x_1
x1 = 100
±
\pm
± 2的近似值
x
1
∗
x_1^*
x1∗ = 100的相对误差为
∣
e
r
∗
(
x
1
)
∣
=
∣
e
∗
(
x
1
)
x
1
∗
∣
≤
2
100
=
2
%
|e_r^*(x_1)|=|\frac{e^*(x_1)}{x_1^*}|\leq\frac{2}{100}=2\%
∣er∗(x1)∣=∣x1∗e∗(x1)∣≤1002=2%
而
x
2
x_2
x2 = 10
±
\pm
± 1的近似值
x
2
∗
x_2^*
x2∗ = 10的相对误差为
∣
e
r
∗
(
x
2
)
∣
=
∣
e
∗
(
x
2
)
x
2
∗
∣
≤
1
10
=
10
%
|e_r^*(x_2)|=|\frac{e^*(x_2)}{x_2^*}|\leq\frac{1}{10}=10\%
∣er∗(x2)∣=∣x2∗e∗(x2)∣≤101=10%
因此,从相对误差来看,近似值
x
1
∗
x_1^*
x1∗ 比
x
2
∗
x_2^*
x2∗ 的准确程度好得多。
有效数字与有效数字位数
当准确值 x x x 有很多位数时,我们常按四舍五入的原则得到 x x x 的近似值 x ∗ x^* x∗ 。
有效数字:若近似值 x ∗ x^* x∗ 的绝对误差是某一位的半个单位,就称其“准确”到这一位,且从该位直到 x ∗ x^* x∗ 的第一位非零数字共有 n n n 位有效数字。例如,358.467、0.00427511、8.000034的具有5位有效数字的近似值分别是358.47、0.0042751、8.0000。有效数字尾部的零不能随意省去,以免损失精度。
有效数字、绝对误差、相对误差之间的关系
近似值
x
∗
x^*
x∗ 具有
n
n
n 位有效数字的科学计数法:
x
∗
=
±
(
a
1
×
1
0
−
1
+
a
2
×
1
0
−
2
+
⋯
+
a
n
×
1
0
−
n
)
×
1
0
m
+
1
=
±
1
0
m
×
(
a
1
+
a
2
×
1
0
−
1
+
⋯
+
a
n
×
1
0
−
(
n
−
1
)
)
x^*=\pm(a_1\times10^{-1}+a_2\times10^{-2}+\cdots+a_n\times10^{-n})\times10^{m+1}=\pm10^m\times(a_1+a_2\times10^{-1}+\cdots+a_n\times10^{-(n-1)})
x∗=±(a1×10−1+a2×10−2+⋯+an×10−n)×10m+1=±10m×(a1+a2×10−1+⋯+an×10−(n−1))
其中
a
1
a_1
a1
≠
\neq
= 0,
a
2
a_2
a2,
⋯
\cdots
⋯,
a
n
a_n
an:0~9.
则其绝对误差满足:
∣
x
∗
−
x
∣
≤
1
2
×
1
0
m
−
n
+
1
|x^*-x|\leq\frac{1}{2}\times10^{m-n+1}
∣x∗−x∣≤21×10m−n+1
由
a
1
×
1
0
m
≤
∣
x
∗
∣
≤
(
a
1
+
1
)
×
1
0
m
a_1\times10^m\leq|x^*|\leq(a_1+1)\times10^m
a1×10m≤∣x∗∣≤(a1+1)×10m,可知:
∣
e
r
∗
(
x
)
∣
=
∣
x
−
x
∗
x
∣
≤
1
2
×
1
0
m
−
n
+
1
a
1
×
1
0
m
=
1
2
a
1
×
1
0
−
n
+
1
|e_r^*(x)|=|\frac{x-x^*}{x}|\leq\frac{\frac{1}{2}\times10^{m-n+1}}{a_1\times10^m}=\frac{1}{2a_1}\times10^{-n+1}
∣er∗(x)∣=∣xx−x∗∣≤a1×10m21×10m−n+1=2a11×10−n+1
定理1:若上述的近似值
x
∗
x^*
x∗ 具有
n
n
n 位有效数字,则其相对误差满足不等式:
∣
e
r
∗
(
x
)
∣
≤
1
2
a
1
×
1
0
−
n
+
1
|e_r^*(x)|\leq\frac{1}{2a_1}\times10^{-n+1}
∣er∗(x)∣≤2a11×10−n+1
其中
a
1
a_1
a1 为
x
∗
x^*
x∗ 的第一个非零数字。
定理2:若近似值
x
∗
x^*
x∗ 的相对误差满足不等式:
∣
e
r
∗
(
x
)
∣
≤
1
2
(
a
1
+
1
)
×
1
0
−
n
+
1
|e_r^*(x)|\leq\frac{1}{2(a_1+1)}\times10^{-n+1}
∣er∗(x)∣≤2(a1+1)1×10−n+1
其中
a
1
a_1
a1 为
x
∗
x^*
x∗ 的第一个非零数字,则它至少有
n
n
n 位有效数字。
对同一个数的近似值,有效数字位数越多,其绝对误差与相对误差越小;反之,绝对误差或相对误差变小,有效数字的位数则变多。
数值运算中误差传播规律简析
设
x
1
∗
,
x
2
∗
x_1^*,x_2^*
x1∗,x2∗ 分别是
x
1
,
x
2
x_1,x_2
x1,x2 的近似值,
y
∗
=
f
(
x
1
∗
,
x
2
∗
)
y^*=f(x_1^*,x_2^*)
y∗=f(x1∗,x2∗) 作为
y
=
f
(
x
1
,
x
2
)
y=f(x_1,x_2)
y=f(x1,x2) 的近似值,其绝对误差和相对误差有(利用泰勒展开式):
y
−
y
∗
=
f
(
x
1
,
x
2
)
−
f
(
x
1
∗
,
x
2
∗
)
≈
(
∂
f
∂
x
1
)
∗
(
x
1
−
x
1
∗
)
+
(
∂
f
∂
x
2
)
∗
(
x
2
−
x
2
∗
)
y-y^*=f(x_1,x_2)-f(x_1^*,x_2^*)\approx(\frac{\partial f}{\partial x_1})^*(x_1-x_1^*)+(\frac{\partial f}{\partial x_2})^*(x_2-x_2^*)
y−y∗=f(x1,x2)−f(x1∗,x2∗)≈(∂x1∂f)∗(x1−x1∗)+(∂x2∂f)∗(x2−x2∗)
e ∗ ( y ) ≈ ( ∂ f ∂ x 1 ) ∗ e ∗ ( x 1 ) + ( ∂ f ∂ x 2 ) ∗ e ∗ ( x 2 ) e^*(y)\approx(\frac{\partial f}{\partial x_1})^*e^*(x_1)+(\frac{\partial f}{\partial x_2})^*e^*(x_2) e∗(y)≈(∂x1∂f)∗e∗(x1)+(∂x2∂f)∗e∗(x2)
( ∂ f ∂ x 1 ) ∗ = ∂ f ∂ x 1 ∣ ( x 1 ∗ , x 2 ∗ ) , ( ∂ f ∂ x 2 ) ∗ = ∂ f ∂ x 2 ∣ ( x 1 ∗ , x 2 ∗ ) (\frac{\partial f}{\partial x_1})^*=\frac{\partial f}{\partial x_1}|_{(x_1^*,x_2^*)}\ \ \ ,\ \ \ \ (\frac{\partial f}{\partial x_2})^*=\frac{\partial f}{\partial x_2}|_{(x_1^*,x_2^*)} (∂x1∂f)∗=∂x1∂f∣(x1∗,x2∗) , (∂x2∂f)∗=∂x2∂f∣(x1∗,x2∗)
在近似等式的两边同时除以
y
∗
y^*
y∗ ,可得近似值
y
∗
y^*
y∗ 的相对误差:
e
r
∗
(
y
)
≈
(
∂
f
∂
x
1
)
∗
x
1
∗
y
∗
e
r
∗
(
x
1
)
+
(
∂
f
∂
x
2
)
∗
x
2
∗
y
∗
e
r
∗
(
x
2
)
e_r^*(y)\approx(\frac{\partial f}{\partial x_1})^*\frac{x_1^*}{y^*}e_r^*(x_1)+(\frac{\partial f}{\partial x_2})^*\frac{x_2^*}{y^*}e_r^*(x_2)
er∗(y)≈(∂x1∂f)∗y∗x1∗er∗(x1)+(∂x2∂f)∗y∗x2∗er∗(x2)
数值运算中应注意的几个原则
选用算法时一般应给遵循以下原则:算法是否稳定;算法的逻辑结构是否简单合理;算法的运算次数和算法的存储量是否尽量少等等。
1、选用数值稳定性好的算法:舍入误差对计算结果的精确性影响较小的算法,具有较好的数值稳定性,称为稳定的算法。如果算法不稳定,数值计算的结果就会严重背离数学模型的真实结果。因此,在选择数值计算公式来进行近似计算时,应特别注意选用那些在数值计算过程中不会导致误差迅速增长的计算公式。
2、相近两数避免相减:数值计算中,两个相近的数相减将会造成有效数字的严重损失。可通过因式分解、分子分母有理化、三角函数恒等式、其他恒等式、Taylor展开式等计算公式来防止减法运算的出现,得到比较精确的结果。
3、绝对值相对太小的数不宜作除数:数值计算中,用绝对值太小的数作除数,会使商数量级增加,甚至会在计算机造成“溢出”停机,且当很小的除数稍有一点误差时,会对计算结果影响很大。
4、警惕大数“吃掉”小数造成的危害:数值计算中参与运算的数有时数量级相差很大,而计算机的位数有限,如不注意运算次序,就很可能导致大数吃掉小数的现象。例如, ( 1 0 12 + 10 ) − 1 0 12 (10^{12}+10)-10^{12} (1012+10)−1012 在计算机上计算的结果接近于0,而 ( 1 0 12 − 1 0 12 ) + 10 (10^{12}-10^{12})+10 (1012−1012)+10 在计算机上计算可得到接近于10的真实结果。
5、简化计算步骤,减少运算次数:同样一个计算问题,若能选用更为简单的计算公式,减少运算次数,不但可以节省计算量,提高计算速度,还能增加逻辑结构,减少误差积累。