数值计算中的误差

(1)误差的基本概念

误差的基本概念

实际问题的精确解与数值计算所得的近似解之间的差别称为误差

误差来源
(1)模型误差

实际问题与数学模型之差

(2)观测误差

观测所的

(3)截断误差

近似导致

(4)舍入误差

机器字长限制

(2)绝对误差与相对误差与有效数字

绝对误差

e(x*)=x-x*

绝对误差限

|e(x*)|=x-x*
x*-算法误差修正python_算法误差修正pythonx算法误差修正python_有效数字_02x*+算法误差修正python_有效数字_03
x=x*算法误差修正python_有效数字_04

用毫米刻度尺的米尺测量一长度为x,如读出的长度为x*=765mm,qi绝对误差限为0.5mm
准确值x: 764.5mm算法误差修正python_四舍五入_05x$\leqslant算法误差修正python_有效数字_06算法误差修正python_有效数字_07[764.5mm,765.5mm]
x=765$\plusmn$0.5mm

相对误差

因为准确值x总是未知,所以一般取相对误差为:
算法误差修正python_算法误差修正python_08

相对误差限(限->取模)

|算法误差修正python_四舍五入_09|=|算法误差修正python_四舍五入_10|算法误差修正python_有效数字_02算法误差修正python_算法误差修正python_12

两种误差限的关系

算法误差修正python_算法误差修正python_12=算法误差修正python_算法误差修正python_14
算法误差修正python_有效数字_03=|x^*|算法误差修正python_有效数字_03

算法误差修正python_算法误差修正python_17 (1.41421356237310)
是经过四舍五入得到的近似值,则
绝对误差限算法误差修正python_四舍五入_18=算法误差修正python_数值计算_19
相对误差限算法误差修正python_有效数字_20%

有效数字

算法误差修正python_算法误差修正python_21
算法误差修正python_四舍五入_22 算法误差修正python_四舍五入_23—有效数字4个
算法误差修正python_数值计算_24 算法误差修正python_四舍五入_25—有效数字8个

x=0.005800算法误差修正python_算法误差修正python_26算法误差修正python_数值计算_27表示近似值
算法误差修正python_有效数字_28准确到小数点后6位,有4位有效数字

算法误差修正python_算法误差修正python_29=1.41421356237310……
算法误差修正python_数值计算_30作为算法误差修正python_算法误差修正python_29d的近似值,有几位有效数字?

算法误差修正python_有效数字_32<算法误差修正python_四舍五入_33
准确到小数点后5为,有6位有效数字

为使算法误差修正python_算法误差修正python_29的近似值的相对误差线小于0.1%,至少要取几位有效数字?
(用绝对误差限和有效数字的关系)
算法误差修正python_有效数字_35
算法误差修正python_四舍五入_36
需要准确到小数点后第3位,有4位有效数字

x表示成规范模式*

定理一:若x的近似值x*=算法误差修正python_算法误差修正python_37有n位有效数字,则算法误差修正python_有效数字_38为其相对误差限。
反之,若算法误差修正python_四舍五入_39的相对误差限算法误差修正python_四舍五入_40满足算法误差修正python_数值计算_41,则x至少有n位有效数字
实际上,使用的时候,通过绝对误差限中转

(3)数值计算中误差的传播

基本运算中的误差传播

用微分表示误差
算法误差修正python_数值计算_42

绝对误差的传播

算法误差修正python_四舍五入_43
算法误差修正python_有效数字_44

算法误差修正python_数值计算_45在点算法误差修正python_数值计算_46处可微,算法误差修正python_算法误差修正python_47算法误差修正python_数值计算_48的近似值,则

算法误差修正python_四舍五入_49

相对误差的传播

算法误差修正python_算法误差修正python_50

(4)和差积商的误差公式

算法误差修正python_算法误差修正python_51


算法误差修正python_四舍五入_52


即和,差的绝对误差限不超过各数的绝对误差限之和

积,商的相对误差限不超过各数的相对误差限之和

算法误差修正python_四舍五入_53


算法误差修正python_四舍五入_54

(5)算法的数值稳定性

稳定性:在算法的计算过程中,舍入误差在计算过程中不增长,则称算法是数值稳定的,否则称算法是数值不稳定的

算法误差修正python_数值计算_55


算法误差修正python_数值计算_56


算法误差修正python_数值计算_57


算法误差修正python_有效数字_58


算法误差修正python_四舍五入_59


算法误差修正python_四舍五入_60


算法误差修正python_有效数字_61


算法误差修正python_四舍五入_62


算法误差修正python_有效数字_63

(6)数值计算中应注意的问题

  • 避免两个相近的数相减

算法误差修正python_四舍五入_64


算法误差修正python_算法误差修正python_65


算法误差修正python_有效数字_66

  • 避免大数吃小数的现象
    改变顺序,先对小的部分操作,就有可能最后不会被吃掉
  • 避免除数的绝对值远小于被除数的绝对值
  • 算法误差修正python_数值计算_67

  • 当|y|<<|x|时,舍入误差可能增大很多
  • 要简化计算,减少运算次数,提高效率
    秦九韶算法
  • 选用数值稳定性好的算法