稳定性是数值分析的一个基本问题。

--L N. Trefethen

一个问题定义为由数据的向量空间 X 到解空间 Y 的一个函数 f:X->Y。相应地,一个算法可以看成是两个相同空间之间的另外一个映射 f{bar}:X->Y。注意,前者大部分情况下是一个连续系统,而由于计算机浮点数表示的原因后者是离散系统(即里面表示的数字是可数的,而针对浮点数而言,它不仅可数,而且是有限个数的)。离散系统要表达出连续系统必然要进行舍入。因而,f^{bar}的结果势必要受到舍入误差的影响。数值稳定性要解决的是一个算法,是否能够使用离散系统取得“正确答案”[1]。

显然,一个好的算法应该保证对于给定的 x,考虑计算的相对误差(||f(x)-f{bar}(x)||)/||f(x)||,自然地,我们期望相对误差很小,由于计算机浮点数精度的限制,它有个界限,不妨记作e_{mach},如果对每个x,有(||f(x)-f{bar}(x)||)/||f(x)|| = O(e_{mach}),我们就可以说算法 f{bar} 对问题 f 是准确的。进一步地,由于 f{bar} 的定义域是离散的,如果对于每个x,(||f(x)-f{bar}(x{bar})||)/||f(x)|| = O(e_{mach}),对某些满足||x-x{bar}||/||x{bar}||的x成立,则说算法 f{bar}是稳定的。另外,如果f{bar}(x{bar})=f(x)对于满足||x-x{bar}||/||x{bar}||=O(eps_{mach})的x成立,则说算法是向后稳定的。值得注意的是,有些算法是稳定的但不是向后稳定的,如计算sin(x)或cos(x)。给出这么多铺垫,涉及到的符号和术语也很多,连我自己都觉得有些绕,如果只是了解大概内容,上面的内容可以忽略,而直观的解释参见下面叙述的数值例子。

假设一个算法向后稳定,且关于问题的条件数较小的话,那么可以得到准确的结果。这个结论由定理保证:假设一个向后稳定的算法在具有条件数k的问题f:X->Y,则相对误差满足:||f{bar}(x)-f(x)||/||f(x)|| = O(k*eps_{mach})。

实践已经证明,数值代数的大多数算法而言,向前误差分析比起向后误差分析更难于实施(注1)。除此之外,很多时候,向后误差分析能更合理地反映出算法的误差。给出了一个数值例子[1],关于一个随机矩阵Q和R(注2),然后计算它们的乘积,不妨记作A,使用Householder三角化方法[2]对它进行QR分解,得到数值解Q1和R1,接着分析数值解和理想解之间的误差,结果表明数值的结果仅有2位或者3位有效数字(考虑相对误差),而实际计算过程中采用double型浮点数(即有16位有效数字)。而数值解的两个矩阵的乘积Q1*R1和矩阵A之间的误差能够达到15位的有效数字。另外,如果对Q和R进行微小扰动得到Q2和R2,两者的乘积Q2*R2和A之间的相对误差却仅仅能够达到了3位有效数字。从结果上来看,Q2(或R2)比Q1(或R1)更接近于Q(或R),但是乘积Q2*R2却比乘积Q1*R1更接近于A(Q1和R1中的误差被Wilkinson称为“魔鬼相关”的)。这个例子表明,使用向后误差分析比向前误差分析更合理。

关于向后稳定性的两点结论:

一,Householder三角形化以及相应的使用它来进行QR因子分解求解线性方程组Ax=b向后误差稳定的,前者用数学语言表达出来的形式为:令矩阵A的QR因子分解是由Householder三角形化进行数值计算得到因子Q1和R1,则有Q1*R1=A+dA, ||dA||/||A||=O(eps_{mach})对某个dA成立。

二,关于矩阵特征值有如下的Weyl定理:设 A 和 E 是n*n阶对称阵,设 alpha_1>=alpha_2>=...>=alpha_n 是 A 的特征值,而 alpha_{bar}_1>=alpha_{bar}_2>=...alpha_{bar}_n 是 A_{bar}=A+E 的特征值,则 |alpha_i - alpha_{bar}_i|<=||E||_2。虽然该定理是向前误差分析的结果,但是常常利用该定理可以确定QR迭代法(向后误差稳定)算法计算得到的数值特征值的误差界[3]。

注1:一般而言,大的向前误差可能是一个病态问题或者是一个不稳定算法的结果。

注2:作为一个法则,随机三角形矩阵的列空间序列作为矩阵元素的函数是极端病态的。

参考文献:

[1] 数值线性代数 Chap14-17,L N. Trefethen,David Bau, lll 著,陆金甫,关治译,人民邮电出版社,2006年

[2] 矩阵计算(第三版),Gene H.Golub,Charles F.Van Loan 著,袁亚湘等译,人民邮电出版社,2011年

[3] 应用数值线性代数 Chap5,J W. Demmel 著,王国荣译,人民邮电出版社,2007年

作者:caicailiu 出处:http://www.cnblogs.com/liuyc/  欢迎转载或分享,但请务必声明文章出处。

转载于:https://www.cnblogs.com/liuyc/p/6240767.html

数值分析之数值稳定性篇相关推荐

  1. 自编程实现决策树(使用ID3算法)

    自编程实现决策树(使用ID3算法) 不使用sklearn中的决策树方法,根据以下数据集自己编写决策树构建程序(建议用python语言). Tid Refund Marital Status Taxab ...

  2. 矩阵论及其应用_数值分析篇——向量和矩阵的范数

    向量.矩阵范数 是数学中矩阵论.线性代数.泛函分析等领域中常见的基本概念,是将一定的矩阵空间建立为赋范向量空间时为矩阵装备的范数.应用中常将有限维赋范向量空间之间的映射以矩阵的形式表现,这时映射空间上 ...

  3. MATLAB基础篇——数值分析篇

    MATLAB基础篇--数值分析篇 1.solve求解方程/方程组(不涉及微积分运算) 格式: syms 符号变量(要求解的变量) solve(方程左边==方程右边,符号变量) 例子: (1)求解方程x ...

  4. 数学专业英语 -- 数值分析篇

    numerical analysis 数值分析 numerical stability 数值稳定性 numerical scheme 数值格式 numerical algorithm 数值算法 num ...

  5. 【数值分析】—— 对数函数、指数函数(数值稳定性)

    0. 数值分析 数值分析(计算数学)观点,如下两种最常见的浮点数运算过程中损失有效数字的情况. 两个相近的数相减 两个数量级相差很大的数字相加减 1. limx→0log(1+x)limx→0log⁡ ...

  6. 数值分析之QR因子分解篇

    在数值线性代数中,QR因子分解的思想比其他所有算法的思想更为重要[1].                                       --Lloyd N. Trefethen & ...

  7. 阿当姆斯校正程序代码MATLAB,数值分析实验教程.doc

    数值分析实验教程.doc 第二篇数值分析3第1章绪论4112的平方根计算412计算效率探讨5实验题7第2章插值法821拉格朗日插值多项式的存在性822利用拉格朗日插值多项式计算函数值823差商表构造1 ...

  8. UA MATH575B 数值分析下IV 带约束的优化

    UA MATH575B 数值分析下IV 带约束的优化问题 带等式约束的优化问题 带不等式约束的优化问题 同时带等式约束与不等式约束的优化问题 今天不想敲公式,就不写理论了,反正方法也就是前面的Newt ...

  9. 【数理知识】《数值分析》李庆扬老师-第1章-数值分析与科学计算引论

    无 回到目录 第2章 第1章-数值分析与科学计算引论 1.1 数值分析的对象.作用和特点 1.1.1 数学科学与数值分析 1.1.2 计算数学与科学计算 1.1.3 计算方法与计算机 1.1.4 数值 ...

最新文章

  1. boost::json模块实现远程过程调用的测试程序
  2. echars 在vue v-if 切换会 显示不出来或者显示出来但是不是百分百显示
  3. sql azure 语法_Azure SQL –使用Azure自动化的索引表
  4. SpringBoot 轻量级英文版个人博客 flame
  5. java 定时器 数据库_java实现定时器,定时修改数据库代码
  6. pdf怎么移除权限口令,忘记pdf密码如何找回?
  7. 自己来控制EntityFramework4.1 Code-First,逐步消除EF之怪异现象
  8. LabVIEW32位和64位的兼容性
  9. 7月18百度测试实习生二面经历
  10. 找出bilibili隐藏在后方的视频并突破访问限制实现爬取
  11. Qt5.2编译时出现/usr/bin/ld: cannot find -lxxx 错误
  12. 【矩阵论】1.准备知识——Hermite阵,二次型,矩阵合同,正定阵,幂0阵,幂等阵,矩阵的秩
  13. HaaS轻应用(JavaScript)低功耗蓝牙案例
  14. python绘制派大星_简笔画:如何使用Flash绘制派大星 看完你就知道了
  15. 腾讯、阿里开始正面交锋新零售,双寡头就代表未来吗?
  16. 文字转语音离线html,web端文字转语音的几种方案
  17. 深圳大数据培训:大数据技术可以解决哪些问题?
  18. 程序员在写作这条路上到底能走多远?
  19. 药物设计的深度学习(Deep Learning for Drug Design)
  20. 基于AMESim的高功率密度LFP-C锂离子电池热失控仿真

热门文章

  1. 如何在TFS中用命令行提交更新
  2. php控件不显示,解决控件遮挡问题:关于有窗口元素和无窗口元素
  3. python能和c语音交互吗_Python与C交互概述
  4. python基础入门视频-Python基础入门视频课程——笔记
  5. 最常用git命令汇总(参考列表)
  6. 词频统计 求最大k个数
  7. Array.slice 8 种不同用法
  8. (11)zabbix item types监控类型
  9. YTU 2610: A改错题--体检情况分析
  10. 静态Web开发 JQuery