• 沒有找到結果。

数值计算方法 数值计算中的误差分析

N/A
N/A
Protected

Academic year: 2021

Share "数值计算方法 数值计算中的误差分析"

Copied!
70
0
0

加載中.... (立即查看全文)

全文

(1)

数值计算方法

数值计算中的误差分析

张晓平

2019 年 9 月 2 日

武汉大学数学与统计学院

(2)

图 1: 教材: 1. 计算方法,李大美、李素贞、朱方生,武汉大学出版社;2. 现 代数值计算方法,肖筱南,北京大学出版社

课件及作业见网址:www.xpzhang.me

1

(3)

目录

1. 数值计算简介

2. 误差

3. 数值计算的误差估计

4. 选用和设计算法应遵循的原则

2

(4)

数值计算简介

(5)

数值计算简介

现代科学的三种研究方式

(6)

现代科学的三种研究方式

当今世界科学活动的三种主要方式:

• 理论

• 实验

• 科学计算

3

(7)

数值计算简介

解决科学工程问题的几个步骤

(8)

解决科学工程问题的几个步骤

实 际 问 题

数 学 模 型

计 算 方 法

程 序 设 计

上 机 求 解

应用数学 计算数学

图 2: 解决科学工程问题的步骤

4

(9)

数值计算简介

研究数值方法的必要性

(10)

研究数值方法的必要性

解线性方程组

Ax = b, A∈ Rn×n, b∈ Rn 定理 : Crammer 法则

A非奇异 =⇒ 此方程组有唯一解,且xi= |Ai|

|A|, i = 1, 2,· · · , n.

该结论从理论上讲非常漂亮,它把线性方程组的求解问题归结为计算 n + 1 个 n 阶行列式的计算问题。

5

(11)

研究数值方法的必要性

而对于行列式,可以采用 Laplace 展开定理进行计算:

定理 : Laplace 展开定理

|A| = ai1|Ai1| + ai2|Ai2| + · · · + ain|Ain|, Aij为aij的代数余子式

6

(12)

研究数值方法的必要性

实际操作中,该方法的运算量大的惊人,以至于完全不能用于实际计 算。事实上,设 k 阶行列式所需乘法运算的次数为 mk,则

mk= k + kmk−1, 于是有

mn = n + nmn−1

= n + n[(n − 1) + (n − 1)mn−2]

=· · ·

= n + n(n − 1) + n(n − 1)(n − 2) +· · · + n(n − 1) · · · 3 · 2

> n!

故用 Crammer 法则和 Laplace 展开定理求解一个 n 阶线性方程组,所 需乘法运算的次数就大于

(n + 1)n! = (n + 1)!.

7

(13)

研究数值方法的必要性

在一台百亿次的计算机上求解一个 25 阶线性方程组,则至少需要 26!

1010× 3600 × 24 × 365 4.0329× 1028

3.1526× 1017 ≈ 13亿年 而用下章介绍的消去法求解,则需要不到一秒钟。

8

(14)

数值计算简介

数值计算方法的研究对象

(15)

数值计算方法的研究对象

数值分析的研究对象为:

• 线性代数

• 曲线拟合

• 数值逼近

• 微积分

• 微分方程

• 积分方程

· · ·

9

(16)

数值计算简介

数值计算方法的研究任务

(17)

数值计算方法的研究任务

数值分析的研究任务为:

• 算法设计

• 理论分析

• 算法的收敛性

• 稳定性

• 误差分析

• 复杂度分析

• 时间复杂度

• 空间复杂度

10

(18)

数值计算简介

数值计算方法的特点

(19)

数值计算方法的特点

数值分析的特点为:

• 既有数学的抽象性与严格性,又有广泛的应用性

• 有自身的研究方法和理论系统

• 与计算机紧密结合,实用性很强

11

(20)

误差

(21)

误差

误差来源与分类

(22)

误差来源与分类

误差按照其来源可分为四类,即 模型误差

数学模型只是复杂客观现象的一种近似,它与实际问题总会存在 一定误差。

观测误差

由于测量精度和手段的限制,观测或实验得来的物理量总会与实 际量之间存在误差。

截断误差

数学模型的精确解与由数值方法求出的近似解之间的误差。如 ex≈ 1 + x +x2!2 +· · · +x10!10

R10(x) = ξ11!11

12

(23)

误差来源与分类

误差按照其来源可分为四类,即 模型误差

数学模型只是复杂客观现象的一种近似,它与实际问题总会存在 一定误差。

观测误差

由于测量精度和手段的限制,观测或实验得来的物理量总会与实 际量之间存在误差。

截断误差

数学模型的精确解与由数值方法求出的近似解之间的误差。如 ex≈ 1 + x +x2!2 +· · · +x10!10

R10(x) = ξ11!11

12

(24)

误差来源与分类

误差按照其来源可分为四类,即 模型误差

数学模型只是复杂客观现象的一种近似,它与实际问题总会存在 一定误差。

观测误差

由于测量精度和手段的限制,观测或实验得来的物理量总会与实 际量之间存在误差。

截断误差

数学模型的精确解与由数值方法求出的近似解之间的误差。如 ex≈ 1 + x +x2!2 +· · · +x10!10

R10(x) = ξ11!11

12

(25)

误差来源与分类

舍入误差

由于计算机的字长有限,进行数值计算的过程中,对计算得到的 中间结果数据要使用“四舍五入”或其他规则取近似值,因而使 计算过程有误差。

典故

1990 年 2 月 25 日,海湾战争期间,在沙特阿拉伯宰赫兰的爱国 者导弹防御系统因浮点数舍入错误而失效,该系统的计算机精度 仅有 24 位,存在 0.0001% 的计时误差,所以有效时间阈值是 20 个小时。当系统运行 100 个小时以后,已经积累了 0.3422 秒的误 差。这个错误导致导弹系统不断地自我循环,而不能正确地瞄准 目标。结果未能拦截一枚伊拉克飞毛腿导弹,飞毛腿导弹在军营 中爆炸,造成 28 名美国陆军死亡。

13

(26)

误差来源与分类

舍入误差

由于计算机的字长有限,进行数值计算的过程中,对计算得到的 中间结果数据要使用“四舍五入”或其他规则取近似值,因而使 计算过程有误差。

典故

1990 年 2 月 25 日,海湾战争期间,在沙特阿拉伯宰赫兰的爱国 者导弹防御系统因浮点数舍入错误而失效,该系统的计算机精度 仅有 24 位,存在 0.0001% 的计时误差,所以有效时间阈值是 20 个小时。当系统运行 100 个小时以后,已经积累了 0.3422 秒的误 差。这个错误导致导弹系统不断地自我循环,而不能正确地瞄准 目标。结果未能拦截一枚伊拉克飞毛腿导弹,飞毛腿导弹在军营 中爆炸,造成 28 名美国陆军死亡。

13

(27)

误差

误差与有效数字

(28)

误差与有效数字

定义 : 绝对误差与绝对误差限

设某个量的精确值为 x,其近似值为 x,则称 E(x) = x − x

为近似值 x 的绝对误差,简称误差。若存在 η > 0,使得

|E(x)| = |x − x| ⩽ η

则称 η 为近似值 x 的绝对误差限,简称误差限或精度。

η 越小,表示近似值 x 的精度越高。

x− η⩽ x ⩽ x+ η or x = x± η

14

(29)

误差与有效数字

定义 : 绝对误差与绝对误差限

设某个量的精确值为 x,其近似值为 x,则称 E(x) = x − x

为近似值 x 的绝对误差,简称误差。若存在 η > 0,使得

|E(x)| = |x − x| ⩽ η

则称 η 为近似值 x 的绝对误差限,简称误差限或精度。

η 越小,表示近似值 x 的精度越高。

x− η⩽ x ⩽ x+ η or x = x± η

14

(30)

误差与有效数字

用毫米刻度的直尺量一长度为 x 的物体,测得其近似值为 x = 84mm。

因直尺以 mm 为刻度,其误差不超过 0.5mm,即有

|x − 84| ⩽ 0.5 mm or x = 84 ± 0.5 mm.

15

(31)

误差与有效数字

测量 100m 和 10m 的两个长度,若它们的绝对误差均为 1cm,显 然前者的测量更为精确。

由此可见,决定一个量的近似值的精确度,除了绝对误差外,还必须 考虑该量本身的大小,为此引入相对误差的概念。

16

(32)

误差与有效数字

测量 100m 和 10m 的两个长度,若它们的绝对误差均为 1cm,显 然前者的测量更为精确。

由此可见,决定一个量的近似值的精确度,除了绝对误差外,还必须 考虑该量本身的大小,为此引入相对误差的概念。

16

(33)

误差与有效数字

定义 : 相对误差与相对误差限

近似值 x 的相对误差是绝对误差与精确值之比,即 Er(x) = E(x)

x = x − x x . 实际中精确值 x 一般无法知道,通常取

Er(x) = E(x)

x = x − x x . 若存在 δ > 0,使得

|Er(x)| = x − x

x

⩽ δ, 则称 δ 为近似值 x 的相对误差限。

17

(34)

误差与有效数字

|x − x| ⩽ 1cm 时,测量 100m 物体时的相对误差为

|Er(x)| = 1

10000 = 0.01%, 测量 10m 物体时的相对误差为

|Er(x)| = 1

1000 = 0.1%.

18

(35)

误差与有效数字

定义 : 有效数字

若近似值 x 的绝对误差限是某一位的半个单位,就称x 精确到 这一位。更进一步,若从该位直到 x 的第一位非零数字共有 n 位,则称x 有 n 位有效数字。

给定数 具有 5 位有效数字的近似值 358.467 358.47

0.00427511 0.0042751 8.000034 8.0000 8.000034× 103 8000.0

19

(36)

误差与有效数字

任何一个实数 x 经四舍五入后得到的近似值 x 都可写成 x=±(α1× 10−1+ α2× 10−2+· · · + αn× 10−n)× 10m, 其中 m∈ Z,α1∈ {1, · · · , 9},α2,· · · , αn∈ {0, 1, · · · , 9}。当其绝对误 差限满足

|x − x| ⩽ 1

2× 10m−n 时,则称近似值 x 具有 n 位有效数字。

20

(37)

误差与有效数字

验证 e = 2.718281828459046· · · 的近似值 2.71828 具有 6 位有效 数字

2.71828 =(

2× 10−1+ 7× 10−2+ 1× 10−3 +8× 10−4+ 2× 10−5+ 8× 10−6)

× 10

=⇒ m = 1, n = 6.

∵ |e − 2.71828| = 0.000001828 · · · < 12× 10−5,

∴ 它具有 6 位有效数字

21

(38)

误差与有效数字

定理

设某数 x 的近似值为 x,则

x有n位有效数字 =⇒ |x − x| ⩽ 1

2× 10m−n.

当 m 一定时,有效数字位数 n 越多,其绝对误差限越小。

22

(39)

误差与有效数字

定理

设某数 x 的近似值为 x 有如下形式

x=±(α1× 10−1+ α2× 10−2+· · · + αn× 10−n)× 10m, 则

• 若 x 有 n 位有效数字,则

|Er(x)| ⩽ 1

1 × 10−(n−1).

• 若

|Er(x)| ⩽ 1

2(α1+ 1)× 10−(n−1) 则 x 至少有 n 位有效数字。

23

(40)

误差

证明

x=±(α1× 10−1+ α2× 10−2+· · · + αn× 10−n)× 10m可知 α1× 10m−1⩽ |x| ⩽ (α1+ 1)× 10m−1

所以,

|Er(x)| = |x − x|

|x| ⩽

1

2× 10m−n α1× 10m−1 = 1

1 × 10−(n−1) 反之,由

|x − x| = |x| · |Er(x)| ⩽ (α1+ 1)× 10m−1· 1

2(α1+ 1)× 10−(n−1)

= 1

2× 10m−n 知,x 至少具有 n 位有效数字。

24

(41)

误差

为使

20 的近似值的相对误差小于 1%,问至少应取几位有效数 字?

20 的近似值的首位非零数字是 α1= 4,故

|Er(x)| = 1

2× 4× 10−(n−1)< 1% 可解得 n > 2,故取 n = 3 即可满足要求。

25

(42)

误差

为使

20 的近似值的相对误差小于 1%,问至少应取几位有效数 字?

20 的近似值的首位非零数字是 α1= 4,故

|Er(x)| = 1

2× 4× 10−(n−1)< 1%

可解得 n > 2,故取 n = 3 即可满足要求。

25

(43)

数值计算的误差估计

(44)

数值计算的误差估计

设有可微函数 y = f(x1, x2,· · · , xn),其中 x1, x2,· · · , xn 分别是 x1, x2,· · · , xn 的近似值,记 y 的近似值为 y= f(x1, x2,· · · , xn). 由

E(y) = y − y= f(x1, x2,· · · , xn) − f(x1, x2,· · · , xn)

n i=1

∂f(x1, x,2· · · , xn)

∂xi · (xi− xi),

Er(y) = E(y) y

n i=1

∂f(x1, x,2· · · , xn)

∂xi ·xi

y ·xi− xi xi 可知,

|E(y)| ⩽

n i=1

∂f(x1, x2,· · · , xn)

∂xi

· E(xi),

|Er(y)| ⩽

n i=1

xi y

·

∂f(x1, x2,· · · , xn)

∂xi

· Er(xi).

26

(45)

数值计算的误差估计

定义

∂f(x1, x2,· · · , xn)

∂xi

, xi

y ·

∂f(x1, x2,· · · , xn)

∂xi

为各个 xi 对 y 的绝对误差和相对误差的增长因子。

27

(46)

数值计算的误差估计

试估计 y = f(x1, x2,· · · , xn) = x1+ x2+· · · + xn 的绝对误差与相 对误差。

∂f

∂xi = 1,故

• 和的绝对误差不会超过各项的绝对误差之和,因

E(y) =

n i=1

E(xi) =⇒ |E(y)| ⩽

n i=1

|E(xi)|,

• 和的相对误差不会超过各项中最大的相对误差,因

|Er(y)| ⩽

n i=1

xi y

|Er(xi)| ⩽ max

1⩽i⩽n|Er(xi)|

n i=1

|xi|

|y| = max

1⩽i⩽n|Er(xi)|.

28

(47)

数值计算的误差估计

试估计 y = f(x1, x2,· · · , xn) = x1+ x2+· · · + xn 的绝对误差与相 对误差。

∂f

∂xi = 1,故

• 和的绝对误差不会超过各项的绝对误差之和,因

E(y) =

n i=1

E(xi) =⇒ |E(y)| ⩽

n i=1

|E(xi)|,

• 和的相对误差不会超过各项中最大的相对误差,因

|Er(y)| ⩽

n i=1

xi y

|Er(xi)| ⩽ max

1⩽i⩽n|Er(xi)|

n i=1

|xi|

|y| = max

1⩽i⩽n|Er(xi)|.

28

(48)

数值计算的误差估计

试估计 y = f(x1, x2,· · · , xn) = x1+ x2+· · · + xn 的绝对误差与相 对误差。

∂f

∂xi = 1,故

• 和的绝对误差不会超过各项的绝对误差之和,因

E(y) =

n i=1

E(xi) =⇒ |E(y)| ⩽

n i=1

|E(xi)|,

• 和的相对误差不会超过各项中最大的相对误差,因

|Er(y)| ⩽

n i=1

xi y

|Er(xi)| ⩽ max

1⩽i⩽n|Er(xi)|

n i=1

|xi|

|y| = max

1⩽i⩽n|Er(xi)|.

28

(49)

数值计算的误差估计

测得某桌面的长 a 的近似值为 a = 120cm,宽 b 的近似值为 b= 60cm,若已知|a − a| ⩽ 0.2cm,|b − b| ⩽ 0.2cm,试求近似 面积 S= ab的绝对误差限和相对误差限。

因 S= ab, ∂a∂S = b, ∂S∂b = a,故

|E(S)| ⩽ |b||E(a)| + |a||E(b)| ⩽ 60 × 0.2 + 120 × 0.1 = 24 cm2. 且

|Er(S)| = E(S)

S

= |E(S)| ab ⩽ 24

7200≈ 0.33%.

29

(50)

选用和设计算法应遵循的原则

(51)

选用和设计算法应遵循的原则

一、选用数值稳定的计算公式,控制舍入误差的传播

若算法不稳定,则数值计算的结果就会严重背离数学模型的真实结果。

因此在选择数值计算公式来进行近似计算时,应特别注意选用那些在 计算过程中不会导致误差迅速增长的计算公式。

30

(52)

选用和设计算法应遵循的原则

计算积分

In= e−1

1 0

xnexdx, n = 0, 1, 2,· · ·

31

(53)

选用和设计算法应遵循的原则

算法 1



In= 1 − nIn−1, I0= 1 − e−1≈ 0.6321.

matlab code t0 = 0.6321;

for i = 1:9

fprintf('%10.5 f\n', t0);

t1 = 1 - i * t0;

t0 = t1;

end

running result 0.63210 0.36790 0.26420 0.20740 0.17040 0.14800 0.11200 0.21600 -0.72800

32

(54)

选用和设计算法应遵循的原则

误差分析

0 < In< e−1 max

0⩽x⩽1(ex)

1 0

xndx = 1 n + 1

I7< 1

8 = 0.1250, I8< 1

9 ≈ 0.1111.

由此可知以上算法得到的 I7, I8的结果时错误的。设 In 的近似解 为 In,由

In= 1 − nIn−1

In= 1 − nIn−1 ⇒ |en| = (n − 1)|en−1|

可知,由于 I0 本身有不超过 0.5× 10−4 的舍入误差,即|e0| ⩽ 0.5× 10−4 此误差在运算中传播、积累很快,传播到 I7 和 I8时,

该误差已放大了 7 与 8 倍,从而使得 I7 和 I8的结果面目全非。

33

(55)

选用和设计算法应遵循的原则

算法 2:

In−1= 1

n(1 − In)

matlab code t0 = 0.1124;

for i = 7: -1:0

fprintf('%10.5 f\n', t0);

t1 = (1 - t0) / i;

t0 = t1;

end

running result 0.11240 0.12680 0.14553 0.17089 0.20728 0.26424 0.36788 0.63212

34

(56)

选用和设计算法应遵循的原则

误差分析

In> e−1 min

0⩽x⩽1(ex)

1 0

xndx = e−1 n + 1

e−1

n + 1 < In< 1 n + 1.

I7≈ 0.1124.

设 In 的近似解为 In,由 In−1= 1n(1 − In)

In−1= 1n(1 − In) ⇒ |en−1| = 1 n|en|

可知,由 I7引起的初始误差在以后的计算过程中逐渐减小,最后 便得到了与 I0= 1 − e−1≈ 0.6321 相差无几的结果。

35

(57)

选用和设计算法应遵循的原则

定义 : 数值稳定

在数值计算中,误差不会增长的计算格式称为是数值稳定的,否 则就是不稳定的。

为了不影响数值计算结果的精确度与真实性,在实际应用中,应选用 数值稳定的计算公式,尽量避免使用数值不稳定的公式。

36

(58)

选用和设计算法应遵循的原则

定义 : 数值稳定

在数值计算中,误差不会增长的计算格式称为是数值稳定的,否 则就是不稳定的。

为了不影响数值计算结果的精确度与真实性,在实际应用中,应选用 数值稳定的计算公式,尽量避免使用数值不稳定的公式。

36

(59)

选用和设计算法应遵循的原则

二、尽量简化计算步骤以便减少运算次数

节省计算量,提高计算速度,简化逻辑结构,减少误差积累。

计算多项式

Pn(x) = anxn+ an−1xn−1+· · · + a1x + a0

37

(60)

选用和设计算法应遵循的原则

• 逐项计算

共需1 + 2 +· · · + (n − 1) + n = 12n(n + 1)次乘法和n次加法

• 秦九韶算法

{ u0= an,

uk= uk−1x + an−k, k = 1, 2,· · · , n.

共需n 次乘法和n 次加法。

38

(61)

选用和设计算法应遵循的原则

秦九韶(1208 年- 1261 年),南宋官 员、数学家,与李冶、杨辉、朱世杰并 称宋元数学四大家。

数学成就

• 数学九章

• 大衍求一术: 比高斯的同余理论早 554 年

• 任意次方程的数值解法: 比英国人霍纳早提出 572 年

• 三斜求积术: 海伦公式 (公元 50 年左右)

• 秦九韶公式

· · ·

39

(62)

选用和设计算法应遵循的原则

三、避免两个相近的数相减

数值计算中,两个相近的数相减会造成有效数字的严重丢失。常用的 处理办法有:

• 因式分解

• 分子分母有理化

• 三角函数恒等式

• Taylor 展开式

· · ·

40

(63)

选用和设计算法应遵循的原则

计算(取 4 位有效数字)

√x + 1 −√

x (x = 1000)

• 直接计算

1001 −

1000≈ 31.64 − 31.62 = 0.02 只有一个有效数字,损失了三位有效数字

• 分子有理化

√x + 1 −√

x = 1

√x + 1 +√

x ≈ 0.01581 没有损失有效数字

41

(64)

选用和设计算法应遵循的原则

计算(取 4 位有效数字)

√x + 1 −√

x (x = 1000)

• 直接计算

1001 −

1000≈ 31.64 − 31.62 = 0.02 只有一个有效数字,损失了三位有效数字

• 分子有理化

√x + 1 −√

x = 1

√x + 1 +√

x ≈ 0.01581 没有损失有效数字

41

(65)

选用和设计算法应遵循的原则

计算(取 4 位有效数字)

√x + 1 −√

x (x = 1000)

• 直接计算

1001 −

1000≈ 31.64 − 31.62 = 0.02 只有一个有效数字,损失了三位有效数字

• 分子有理化

√x + 1 −√

x = 1

√x + 1 +√

x≈ 0.01581 没有损失有效数字

41

(66)

选用和设计算法应遵循的原则

计算(取 4 位有效数字)

A = 107(1 − cos 2) (cos 2= 0.9994)

• 直接计算

A≈ 107(1 − 0.9994) = 6× 103 只有一个有效数字

• 三角恒等式

1 − cos x = 2 sin2x 2

A = 2× (sin 1)2× 107≈ 2 × 0.017452× 107≈ 6.09 × 103 有三位有效数字

42

(67)

选用和设计算法应遵循的原则

计算(取 4 位有效数字)

A = 107(1 − cos 2) (cos 2= 0.9994)

• 直接计算

A≈ 107(1 − 0.9994) = 6× 103 只有一个有效数字

• 三角恒等式

1 − cos x = 2 sin2x 2

A = 2× (sin 1)2× 107≈ 2 × 0.017452× 107≈ 6.09 × 103 有三位有效数字

42

(68)

选用和设计算法应遵循的原则

计算(取 4 位有效数字)

A = 107(1 − cos 2) (cos 2= 0.9994)

• 直接计算

A≈ 107(1 − 0.9994) = 6× 103 只有一个有效数字

• 三角恒等式

1 − cos x = 2 sin2x 2

A = 2× (sin 1)2× 107≈ 2 × 0.017452× 107≈ 6.09 × 103 有三位有效数字

42

(69)

选用和设计算法应遵循的原则

四、绝对值太小的数不宜做除数

数值计算中,用绝对值很小的数作除数,会使商的数量级增加,甚至 在计算机中造成“溢出”停机,而且当很小的除数稍有一点误差,会对 计算结果影响很大。

3.1416

0.001 = 3141.6 3.1416

0.001 + 0.0001 = 2856

43

(70)

选用和设计算法应遵循的原则

五、合理安排运算次序,防止“大数吃小数”

计算 a, b, c 的和,其中 a = 1012, b = 10, c≈ −a.

• (a + b) + c 结果接近于 0

• (a + c) + b 结果接近于 10

44

參考文獻

相關文件

统计暨普查局过往主要采用基本价格计算及分析行业的生产总额、增加值总额以及产业结构,亦同时一并公布按生产者价

统计暨普查局过往主要采用基本价格计算及分析行业的生产总额、增加值总额以及产业结构,亦同时一并公布按生产者价

按行业及在职员工数目抽选。对于在职员工为 20 人或以上的店铺,以及场所总 数较少的分层会进行全面统计。. 统计结果推算

按行业及在职员工数目抽选。对于在职员工为 20 人或以上的店铺,以及场所总 数较少的分层会进行全面统计。. 统计结果推算

统计范围包括参考年在本澳注册的225间旅行社。是次调查把旅行社的主场所、分社及服务柜台合并为一个单位计算;为方便

某项货物的单位价格是指该项货物的贸易货值与其货量之比。季度单位价格指数是计算当季各

某项货物的单位价格是指该项货物的贸易货值与其货量之比。季度单位价格指数是计算当季各

某项货物的单位价格是指该项货物的贸易货值与其货量之比。季度单位价格指数是计算当季各