数 值 分 析 (第 4 版) 李庆扬 王能超 易大义 编 清华大学出版社 施普林格出版社
数值分析课程 学时:50+10 讲课时间:3~16周 上机时间:16~18周 平时成绩:上机 测验 作业 出勤 期末考试:半开卷 教师:罗蕴玲 电话:81720522 E-mail: yunlingluo@126.com 办公室:1-812 答疑时间: 周一下午2:30-4:30 周三下午3:30-5:00 具体考核方案
第1章 绪 论 1.1 数值分析研究对象与特点
例1 求方程 x2=2sinx,在区间(1,2)内的根。 先看两个例子。 例1 求方程 x2=2sinx,在区间(1,2)内的根。 理论上可知显然找不出根的解析式,即无法求出精确解。 例2 用Cramer法则求解n元线性方程组。 显然理论上可行,且有精确表达式。实际计算时会出现什么问题呢?
看用数学和计算机解决实际问题的过程: 实际问题 应用数学研究的任务 数学模型 数值计算方法 数值分析研究的对象 上机计算求出结果 最终提供的是针对各类数学问题的数值算法(即计算公式、计算方案、计算过程)
数值分析提供的算法具有下面四个特点: 1、面向计算机 2、有可靠的理论分析 3、具有好的计算复杂性 4、通过数值实验验证有效性
本门课程学习的主要内容: 误差分析,插值法与拟合,数值积分,数值微分,解线性方程组的直接方法和迭代方法,非线性方程求根,矩阵特征值问题计算.
1. 认识建立算法和对每个算法进行理论分析是基本 任务,主动适应“公式多”的特点; 2. 注重各章建立算法的问题的提法,搞清问题的基 如何进行学习? 1. 认识建立算法和对每个算法进行理论分析是基本 任务,主动适应“公式多”的特点; 2. 注重各章建立算法的问题的提法,搞清问题的基 本提法,逐步深入; 3. 理解每个算法建立的数学背景,数学原理和基本 线索,对最基本的算法要非常熟悉; 4. 认真进行数值计算的训练,学习各章算法完全是 为用于实际计算,必须真会算。
本课程的基本要求 掌握数值方法的基本原理 掌握常用的科学与工程计算的基本方法 能用所学方法在计算机上算出正确结果
课程学习结束后你具备的能力 1. 对具体的数值计算问题,你会选择合适的算法,并通过计算机计算出正确结果; 2. 对给定的算法会从理论上分析其优劣性; 3. 会根据原理构造解决较简单数值计算问题的算法。
1.2 数值计算的误差 1.2.1 误差来源与分类 引言——为什么要进行误差分析? 例1 用具有舍入功能的八位计算器直接计算下式: 结果为 1.2 数值计算的误差 1.2.1 误差来源与分类 引言——为什么要进行误差分析? 例1 用具有舍入功能的八位计算器直接计算下式: 结果为 事实上 结果 不可靠
例2 用求根公式在尾数为八位的浮点计算机上,求下面方程的根: 例2 用求根公式在尾数为八位的浮点计算机上,求下面方程的根: 解 计算机上 计算机上 求得 事实上
用计算机解决实际问题的一般过程 建立数 上机求解 实际问题 确定数 学模型 值解法 应用数学解决的问题 数值分析解决的问题 截断误差 舍入误差 模型误差、观测误差 在此主要研究这两种误差
1.2.2 误差与有效数字 一、绝对误差 设 为准确值, 定义1 为 的一个近似值, 称 为近似值的绝对误差, 简称误差. 1.2.2 误差与有效数字 一、绝对误差 设 为准确值, 定义1 为 的一个近似值, 称 为近似值的绝对误差, 简称误差. 误差 可正可负,当绝对误差为正时近似值偏大,叫 强近似值; 当绝对误差为负时近似值偏小,叫弱近似值. 通常准确值 是未知的, 因此误差 也未知. 若能根据测量工具或计算情况估计出误差绝对值的一个上界,即 则 叫做近似值的误差限, 它总是正数.
对于一般情形 , 即 也可以表示为 解 因为 ,而 所以 注意:(1)绝对误差限不是唯一的,但越小越好; (2)绝对误差限的大小并不能完全表示近似值的好坏。
二、相对误差 把近似值的误差 与准确值 的比值 定义2 称为近似值 的相对误差, 记作 . 实际计算中, 由于真值 总是未知的, 通常取 条件是 较小, 作为 的相对误差, 此时利用 知
是 的平方项级, 故可忽略不计. 相对误差也可正可负,它的绝对值上界叫做相对误差限, 即 记作 ,
三、有效数字 当准确值 位数比较多时,常常按四舍五入的原则得 到 的前几位近似值 , 例如 取3位 取5位 它们的误差都不超过末位数字的半个单位, 即
若近似值 的误差限是某一位的半个单位, 定义3 该位到 的第一位非零数字共有 位,就说 有 位有效数字. 表示为 (2.1) 其中 是0到9中的一个数字, 为整数, 且 (2.2) 例如 3.142,3.141,3.1416分别作为π的近似值时分别有几位有效数字?
重力常数g, 例4 如果以 m/s2 为单位, 若以km/s2为单位, ,它们具有几位有效数字?绝对误差和相对误差有区别吗?与量纲有关吗? 因为按第一种写法 按(2.1)的表示方法, 按第二种写法 这里 它们虽然写法不同,但都具有3位有效数字. (2.1)
至于绝对误差限,由于单位不同所以结果也不同, 但相对误差都是 注意相对误差与相对误差限是无量纲的,而绝对误差 与误差限是有量纲的. 例4说明有效位数与小数点后有多少位数无关.
从(2.2)可得到具有 位有效数字的近似数 ,其绝对 误差限为 在 相同的情况下, 越大则 越小,故有效位数越 多,绝对误差限越小. (2.2)
关于有效数字说明 ① 用四舍五入取准确值的前n位x*作为近似值,则x*必有n位 有效数字。如3.142作为 的近似值有4位有效数字,而 3.141为3位有效数字; ② 有效数字相同的两个近似数,绝对误差不一定相同。例 如,设x1*=12345,设x2*=12.345,两者均有5位有效数字但 绝对误差不一样 x - x1* = x - 12345 ≤ 0.5= 1/2 100 x - x2* = x - 12.345≤0.0005=1/210-3 ③ 把任何数乘以10 p(p=0,1,…)不影响有效位数; ④ 准确值具有无穷多位有效数字,如1/2=0.5 因0.5是真值, 没有误差,*=0,因此n,准确值具有无穷位有效数字。
四、有效数字与相对误差限的关系 设近似数 表示为 定理1 其中 是0到9中的一个数字, 为整数. 若 具有 位有效数字, 则其相对误差限为 反之, 若 的相对误差限 , 则 至少具有 位有效数字.
要使 的近似值的相对误差限小于0.1%,需取 例5 几位有效数字? 设取 位有效数字, 由定理1 由于 知 , 故只要取 , 就有 即只要对 的近似值取4位有效数字,其相对误差限就 小于0.1%. 此时由开方表得 .
1.2.3 数值运算的误差估计 一般情况下,当自变量有误差时函数值也产生误差, 其误差限可利用函数的微分进行估计. 1.2.3 数值运算的误差估计 一般情况下,当自变量有误差时函数值也产生误差, 其误差限可利用函数的微分进行估计. 设 是一元函数, 的近似值为 ,以 近 似 ,其误差界记作 , 利用微分 由此可得:
当 为多元函数,如计算 时, 如果 的近似值为 , 则 的近似值为 于是由全微分, 函数值 的误差 为 于是误差限
而 的相对误差及相对误差限限分别为
练习:
1.3 误差定性分析与避免误差危害 1.3.1 病态问题与条件数 对一个数值问题本身, 如果输入数据有微小扰动(即误 1.3 误差定性分析与避免误差危害 1.3.1 病态问题与条件数 对一个数值问题本身, 如果输入数据有微小扰动(即误 差),引起输出数据(即问题解)相对误差很大,这就是病 态问题. 若 有扰动 ,其 相对误差为 , 例如计算函数值 时, 函数值 的相对误差为
相对误差比值 (3.1) 称为计算函数值问题的条件数. 自变量相对误差一般不会太大,如果条件数 很大, 将引起函数值相对误差很大,出现这种情况的问题就是病态问题.
例如, , 则有 它表示相对误差可能放大 倍. 如 , 有 , 若取 自变量相对误差为 , 函数值相对误差为 , 这时问题可以认为是病态的. 一般情况下,条件数 就认为是病态, 越大 病态越严重.
1.3.2 算法的数值稳定性 用一个算法进行计算,如果初始数据误差在计算中传播 使计算结果的误差增长很快,这个算法就是数值不稳定的. 1.3.2 算法的数值稳定性 用一个算法进行计算,如果初始数据误差在计算中传播 使计算结果的误差增长很快,这个算法就是数值不稳定的. 计算 并估计误差. 例6 由分部积分可得计算 的递推公式 (3.2) 问题:由递推公式(3.2)可以构造几种计算积分序列{In}(n=1,2, …,N)的算法?假设计算中只有初始值带有误差,计算过程中不 产生新的误差,请判断哪种方法能给出更精确的结果。
算法A:计算公式为 若初值 有误差 则由此引起以后各步计算的误差 满足关系 则 这说明 的误差被放大了 倍. 算法B:计算公式为 记 , 则 , 比 缩小了 倍。 看数值计算结果,见书p13. 显然算法B的计算结果更精确、更可靠,当用算法A计算时, 由于误差传播是逐步扩大的,因而计算结果不可靠. 此例说明,数值不稳定的算法是不能使用的.
一个算法如果输入数据有误差,而在计算过 程中舍入误差不增长,则称此算法是数值稳定的,否则称 此算法为不稳定的. 定义4 在例6中算法(B)是数值稳定的,而算法(A)是不 稳定的.
1.3.3 避免误差危害的若干原则 数值计算中首先要分清问题是否病态和算法是否数 值稳定,计算时还应尽量避免误差危害,防止有效数字 1.3.3 避免误差危害的若干原则 数值计算中首先要分清问题是否病态和算法是否数 值稳定,计算时还应尽量避免误差危害,防止有效数字 的损失,有下面若干原则. 1. 要避免除数绝对值远远小于被除数绝对值的除法 用绝对值小的数作除数舍入误差会增大,如计算 若 , 则可能对计算结果带来严重影响,应尽量避免.
在数值计算中两相近数相减有效数字会严重损失. 2. 要避免两相近数相减 在数值计算中两相近数相减有效数字会严重损失. 分析前述例1 0位有效数字 8位有效数字 8位有效数字 这说明必须尽量避免出现这类运算. 最好是改变计算方法,防止这种现象产生.
改变计算公式: 精度提高了很多。此例说明,可通过改变计算公式避免或 减少有效数字的损失。 类似地,如果 和 很接近时,由 用右边算式有效数字就不损失. 当 很大时, 也应该用右端算式代替左端.
3. 要防止大数“吃掉”小数 在数值运算中参加运算的数有时数量级相差很大, 而计算机位数有限,如不注意运算次序就可能出现大数“吃掉”小数的现象,影响计算结果的可靠性. 前面用求根公式求根的例2中, 现改变计算公式如下:
4. 注意简化计算步骤,减少运算次数 同样一个计算问题,如果能减少运算次数,不但可节省计算机的计算时间,还能减少舍入误差. 这是数值计算必须遵从的原则,也是“数值分析”要研究的重要内容.
例7 计算多项式 的值, 若直接计算 再逐项相加,一共需做 次乘法和 次加法. 若采用秦九韶算法 只要 次乘法和 次加法就可算出 的值. 在“数值分析”中,这种节省计算次数的算法还有不少.