1.数值算法
数值计算是指借助计算机用数值方法来近似求解数学问题。
在数学的长期发展过程中,数学家们解决了一个又一个的问题。这中间有些问题是可以求出确切解的,但是有些问题是不容易或者根本无法求出确切的解的。数值计算可以用来解决这些数学问题。
我们通常使用下列四个标准来衡量数值算法的优劣:
- 简单易实现:算法容易在计算机上面实现
- 收敛与稳定:算法具有很好的收敛性和稳定性
- 计算效率高:算法的效率高,而且节省存储
- 算法有效:算法确实可以解决对应的问题
2.误差
误差的含义和分类
前面说了,数值计算的目的不是求一个确切解,而是近似的求解。误差就是衡量数值计算结果和确切解近似程度的工具。
误差描述数值计算中近似值的精确程度
在一般的数值计算教材的定义中,误差按来源可分为模型误差、观测误差、截断误差和舍入误差四种。下面我来谈一下我对四种误差的理解。
- 模型误差:在针对实际问题的分析中,我们建立了一个数学模型,这个数学模型带有自己的误差。例如对于人口问题,如果我们建立线性模型来研究人口问题,显然这和实际情况就存在一些误差
- 观测误差:这个比较好理解,我们在获取数据时,难免会有测量的误差,例如对于同一本书籍,用20cm的直尺和精度更高的游标卡尺测量,其厚度的测量值是不一样的,并且这两个测量的值和原始数据本身会有一定的误差
- 截断误差:在数学计算中,近似方法通常都要舍去某些项,这些舍去的东西就形成了截断误差,这是人为的截断,又称为方法误差
- 舍入误差:计算机只可以计算有限的数字,而且对于 2 \sqrt{2} 2这样的数字,计算机是无法表示的,那么我们必须进行保留有限位,这就是舍入
绝对误差,相对误差和误差限
- 假设精确值为 x ∗ x^* x∗, x x x 是精确值 x ∗ x^* x∗ 的一个近似值,将误差 e r r o r error error简单表示为 e e e记 e = x ∗ − x e =x^*-x e=x∗−x为近似值 x x x的绝对误差,简称误差
- 如果绝对误差满足 ∣ e ∣ ≤ ϵ |e|\leq \epsilon ∣e∣≤ϵ 则称 ϵ \epsilon ϵ 为近似值 x x x的绝对误差限,简称误差限
- 有时绝对误差不能很好的描述近似的程度,所以定义 e r = e x ∗ e_r=\frac{e}{x^*} er=x∗e为相对误差,在实际情况中, x ∗ x^* x∗不容易获得,所以实际中有时取 e r = e x e_r=\frac{e}{x} er=xe,相对的,可以定义满足 ∣ e r ∣ ≤ ϵ r |e_r|\leq\epsilon_r ∣er∣≤ϵr的 ϵ r \epsilon_r ϵr为相对误差限
- 有效数字:在诸多实验学科中都会定义一个有效数字的概念。这里用误差来给有效数字下一个数值计算的定义。设数 x x x是数 x ∗ x^* x∗的近似值,如果 x x x的绝对误差限是它的某一数位的半个单位,并且从 x x x左起第一个非零数字到该数位共有 n n n 位,则称这 n n n个数字为 x x x的有效数字,也称用 x x x近似 x ∗ x^* x∗时具有 n n n位有效数字。例如对于 x = 0.578 x = 0.578 x=0.578,若其绝对误差限为 0.0005 0.0005 0.0005,那么它就有3位有效数字
3.误差传播规律
在实际的数值计算中,已知局部的误差,如何通过分析求出整体的误差?
如果我们不考虑模型误差,截断误差和舍入误差,只分析初始的数据误差对结算结果误差的影响,即分析算法的稳定性,那么我们就需要分析误差传播规律。
这个问题可以描述成以下的数学问题
已 知 算 法 为 y = f ( x 1 , x 2 , . . . , x n ) x 1 , x 2 , . . . x n 的 精 确 值 分 别 为 x 1 ∗ , x 2 ∗ , . . . x n ∗ 每 个 数 据 的 误 差 为 e i = x i ∗ − x i 求 e y = y ∗ − y 的 值 已知算法为y=f(x_1,x_2,...,x_n) \\ x_1,x_2,...x_n的精确值分别为x_1^*,x_2^*,...x_n^* \\ 每个数据的误差为 e_i = x_i^*-x_i \\ 求 e_y=y^*-y的值 已知算法为y=f(x1,x2,...,xn)x1,x2,...x<