1、数值分析,主讲人:张瑞,张瑞简介:西安交通大学计算数学专业理学博士。,现从事支持向量机、神经网络、计算智能与数据挖掘、 环境预测及偏微分方程的数值计算等研究工作。,提问:数值分析是做什么用的?,研究内容,数值逼近 数值微分 数值积分 非线性方程的数值解 常微、偏微的数值解 数值线性代数,研究方法,理论分析 算法分析 误差分析 收敛性分析 收敛速度,误差分析,来源与分类,从实际问题中抽象出数学模型 模型误差 /* Modeling Error */,通过测量得到模型中参数的值 观测误差 /* Measurement Error */,求近似解 方法误差 (截断误差 /* Truncation E
2、rror */ ),机器字长有限 舍入误差 /* Roundoff Error */,1 Introduction: Source & Classification,大家一起猜?,1,1 / e,解法之一:将 作Taylor展开后再积分,| 舍入误差 /* Roundoff Error */ |,= 0.747 ,由截去部分 /* excluded terms */ 引起,由留下部分 /* included terms */ 引起,误差传播与积累,例:计算, 公式一:,注意此公式精确成立,?,?,? !,! !,What happened?!,考察第n步的误差, 公式,注意此公式与公式一 在理
3、论上等价。,方法:先估计一个IN ,再反推要求的In ( n N )。,可取,取,考察反推一步的误差:,以此类推,对 n N 有:,误差逐步递减, 这样的算法称为稳定的算法 /* stable algorithm */,在我们今后的讨论中,误差将不可回避,算法的稳定性会是一个非常重要的话题。,误差与有效数字 /* Error and Significant Digits */, 绝对误差 /* absolute error */,其中x为精确值,x*为x的近似值。,注:e* 理论上讲是唯一确定的,可能取正,也可能取负。e* 0 不唯一,当然 e* 越小越具有参考价值。,I can tell t
4、hat distance between two planets is 1 million light year 1 light year.,2 Error and Significant Digits, 相对误差 /* relative error */,x 的相对误差上限 /* relative accuracy */ 定义为,有效数字 /* significant digits */,用科学计数法,记 (其中 )。若 (即 的截取按四舍五入规则),则称为有n 位有效数字,精确到 。,5,4,注:0.2300有4位有效数字,而00023只有2位有效。12300如果写成0.123105,则表
5、示只有3位有效数字。数字末尾的0不可随意省去!,and,证明:,有效数字与相对误差的关系, 有效数字 相对误差限,已知 x* 有 n 位有效数字,则其相对误差限为, 相对误差限 有效数字,2 Error and Significant Digits,例:为使 的相对误差小于0.001%,至少应取几位有效数字?,解:假设 * 取到 n 位有效数字,则其相对误差上限为,要保证其相对误差小于0.001%,只要保证其上限满足,已知 a1 = 3,则从以上不等式可解得 n 6 log6,即 n 6,应取 * = 3.14159。,函数的误差估计,问题:对于 y = f (x),若用 x* 取代 x,将对
6、y 产生什么影响?,分析:e*(y) = f (x*) f (x) e*(x) = x* x,= f ( )(x* x),x* 与 x 非常接近时,可认为 f ( ) f (x*) ,则有: |e*(y)| | f (x*)|e*(x)|,即:x*产生的误差经过 f 作用后被放大/缩小了| f (x*)|倍。故称| f (x*)|为放大因子 /* amplification factor */ 或 绝对条件数 /* absolute condition number */.,3 Error Estimation for Functions,相对误差条件数/* relative conditio
7、n number*/,f 的条件数在某一点是小大,则称 f 在该点是好条件的 /* well-conditioned */ 坏条件的 /* ill-conditioned */。,几点注意事项,1. 避免相近二数相减,例:a1 = 0.12345,a2 = 0.12346,各有5位有效数字。而 a2 a1 = 0.00001,只剩下1位有效数字。, 几种经验性避免方法:,当 | x | 1 时:,2. 避免小分母 : 分母小会造成浮点溢出 /* over flow */,3. 避免大数吃小数,例:用单精度计算 的根。,精确解为, 算法1:利用求根公式,在计算机内,109存为0.11010,1存为0.1101。做加法时,两加数的指数先向大指数对齐,再将浮点部分相加。即1 的指数部分须变为1010,则:1 = 0.0000000001 1010,取单精度时就成为: 109+1=0.100000001010+0.00000000 1010=0.10000000 1010,大数吃小数,4 Remarks,算法2:先解出再利用,注:求和时从小到大相加,可使和的误差减小。,例:按从小到大、以及从大到小的顺序分别计算 1 + 2 + 3 + + 40 + 109,4. 先化简再计算,减少步骤,避免误差积累。,一般来说,计算机处理下列运算的速度为,5. 选用稳定的算法。,