1.3 数值代数研究中的基本技术
- 矩阵分解 (matrix factorizations)
- 扰动理论和条件数 (Perturbation and condition numbers)
- 舍入误差对算法的影响 (effects of roundoff error on algorithms)
- 算法速度的分析 (analysis of the speed of algorithm)
- 数值软件工程 (engineering numerical software)
1.3.1 矩阵分解
矩阵分解就是把复杂的矩阵分解为多个简单矩阵乘积的形式, 从而更有利于问题的求解 。
例1.1 假如要求解 , 其中
若 是下三角矩阵,利用前向替换(forward substitutions)很容易求解:
定理1.1 若 阶矩阵 非奇异,则存在一个置换矩阵 (对单 位矩阵进行行置换后得到的矩阵)、一个非奇异下三角矩阵 和一个非奇异上三角阵 ,使得 。 求解 可转化为求解 等价方程组 , 求解过程如下:
讲课笔记
- 代码演示
- 置换矩阵
Jordan 标准分解:
- 的主对角线为 的特征值
- 的列向量为对应的特征向量
- 非奇异
Schur 分解: 。
- 是酉矩阵(unitary matrix), 它的列向量正交
- 的对角线元素为 的特征值
讲课笔记
- 解释比较两种分解
1.3.2 扰动理论与条件数
数值算法算出的结果一般有两类误差来源:
- 输入数据误差
- 算法逼近误差
问题: 给定一个算法,如果输入数据存在一个小小的扰动,会给输出结果带来多大的 改变或扰动。
例 1.3 设 是关于实变量 的一个实值可微函数。给定一个带扰动的输入 , 且知道 上界,问函数值 的扰动有多大。
分析: 要计算 , 但实际计算的是 , 并试图给出绝对 误差 的界.
对 进行简单的线性近似可得
称 为 在 上的绝对条件数。
若 足够大,即使 很小,函数值的扰动也可能很大, 即误差很 大。 此时,称 于 处是病态的。
通常也可以用下面的表达式来界定误差:
上式左端称为计算结果的相对误差, 它的大小可由右端的相对输入误差 和相对条件数 的乘积来界定。
对每一个代数计算的问题,都会给出相应的条件数。
讲课笔记
- 举例解释为什么要引入相对误差
1.3.3 舍入误差对算法的影响(Effects of Roundoff Error on Algorithms)
设 是含有舍入误差影响的计算 的算法, 若对一切 存在一个 “小的” , 使得 , 则称 为 的向后稳定算法 (backward stable algorithm), 称为相应的 向后误差 (backward error)。
讲课笔记
- 解释向后稳定的意义
- 要选择向后稳定的算法
- 向后稳定的算法也可以误差很大
1.3.4 分析算法的速度(Analyzing the Speed of Algorithms)
选择算法时,除了要考虑向后稳定性,还要考虑算法的执行速度(speed), 有以下三种 常用的估计速度的方法:
- 实现算法在机器上跑一遍
- 浮点数操作的数目 (flops, floating point operations)
- 迭代法中估计误差的下降率
- 线性:
- 二次:
讲课笔记
- 解释三种方法
- 三种方法各自的局限
1.3.5 工程数值计算软件(Engineering Numerical Software)
设计或选择一个数值软件的常用标准:
- 易用性 (easy of use)
- 可靠性 (reliablility)
- 速度 (speed)
讲课笔记
- 解释何种情况下,易用性比其它标准,更重要
使用其它专家的数值代数软件的三种基本方式:
讲课笔记
- 解释 Matlab 为什么会降低了算法的执行效率
- 解释模板库的应用环境。
扩展学习
模板
模板是一个一般算法的描述,而不是像通常软件库中的可执行程序或代码片断