计算方法的稳定性

在实际数值计算过程中,由于不可避免地存在和不断产生各种误差,因此计算结果不是绝对精确的。如果误差使得计算结果和实际情况有较大差别或者出现错误的结果,则数值 计算便失去了价值和意义。因此,分析数值计算过程中误差的来源和传递规律,设法控制和减小误差。

1.误差的来源

来源:固有误差(模型误差、观测误差)和计算误差(截断误差、舍入误差)

舍入误差

设s是r进制数,p是r进制正负整数或零,则形如
x=s×rpx=s\times r^p x=s×rp
并满足
−1<s<1-1<s<1 −1<s<1
的数x,称为r进制浮点数,且s和p分别称为浮点数的尾数和阶数。

任何一种计算机只能用有限的位数来表示浮点数的尾数和阶数。设
−m≤p≤M-m\leq p\leq M −m≤p≤M
其中m,Mm,Mm,M为正整数,它们主要由计算机用多少位数来表示阶数而决定。如果尾数的小数尾数为t(t一般比m,M的位数大若干倍),则计算机的数系由一切阶数满足−1<s<1-1<s<1−1<s<1的t位r进制浮点数的集合F组成。可见,在计算机数系中,数的个数有限,数系中的每一个数都是有理数,且阶数相等的数以相等的距离分布在数轴的某一段上。

由于计算机数系是有限集,不仅无理数e,πe,\pie,π等不属于计算机数系,而且一些有理数(如1/31/31/3)也属于计算机数系,因此常常用计算机数系中和它们接近的数来表示它们。同时,在利用计算机进行计算时,由于字长限制,参与计算的数的长度也是有限的,而由此产生的误差,称为舍入误差

例1

浮点数F的集合可以用以下4个参数来描述:
{F}≡{β,t,L,U}\{F\}\equiv \{\beta,t,L,U\} {F}≡{β,t,L,U}
其中,β\betaβ为基数,t是精度参数,整数L与U是阶码E(范围)的下限和上限[L,U][L,U][L,U]。

这样,F中的每一个浮点数x的值可表示为:
x=±(d1β+d2β2+⋯+dtβt)⋅βEx=\pm(\frac{d_1}{\beta}+\frac{d_2}{\beta^2}+\cdots+\frac{d_t}{\beta^t})·\beta^E x=±(βd1​​+β2d2​​+⋯+βtdt​​)⋅βE
式中的整数d1,⋯,dtd_1,\cdots,d_td1​,⋯,dt​满足0≤dt≤β−1,(i=1,⋯,t)0\leq d_t\leq \beta-1,(i=1,\cdots,t)0≤dt​≤β−1,(i=1,⋯,t),同时又L≤E≤UL\leq E\leq UL≤E≤U(E是整数)。

如果对F中每个非零的x,有d1≠0d_1\neq 0d1​​=0,则称浮点数系F为规格化浮点数系。括号中的部分f=(d1/β+d2/β2+⋯+dt/βt)f=(d_1/\beta+d_2/\beta^2+\cdots +d_t/\beta^t)f=(d1​/β+d2​/β2+⋯+dt​/βt)称为尾数。我们知道,一个实数常用【整数+小数点+尾数】的形式表示,它们在计算机中对应的浮点数[βt⋅f][\beta^t·f][βt⋅f]则常用某种整数表示方式(例如以原码、反码或补码的形式)存储。

例2:求十进制数系与计算机采用的二进制数系之间的差别

:以在许多算法中常被选作步长的十进制0.1为例。在β=2\beta=2β=2或者为2的幂的浮点数系中,10个0.1的步长并不刚好等于一个1.0的步长。事实上,当把110\frac{1}{10}101​转换成为以12\frac{1}{2}21​为底的幂的有限项展开式时,有:
110=021+022+023+124+125+026+027+⋯\frac{1}{10}=\frac{0}{2^1}+\frac{0}{2^2}+\frac{0}{2^3}+\frac{1}{2^4}+\frac{1}{2^5}+\frac{0}{2^6}+\frac{0}{2^7}+\cdots 101​=210​+220​+230​+241​+251​+260​+270​+⋯
用下标表示数基,如果β=2\beta=2β=2,则有:
(0.1)=(0.000110011001100⋯)z(0.1)=(0.000110011001100\cdots)_z (0.1)=(0.000110011001100⋯)z​
如果β=8\beta=8β=8,则
(0.1)=(0.063146314⋯)s(0.1)=(0.063146314\cdots)_s (0.1)=(0.063146314⋯)s​
由于字长限制,等号右边的值只能取7位。很明显,当把10个这样的数相加时,其结果并不正好是1.0。这就是舍入误差造成的。所以,在计算机上进行的浮点运算(四则运算)只能是近似计算。

观测误差和数据的舍入误差虽然来源不同,但对计算结果的影响完全一样。在数值计算中涉及的误差一般指舍入误差(包含初始数据误差)和截断误差。

2 计算方法的稳定性

计算方法的稳定性是指数值计算中是否稳定的问题。在数值计算过程中,数值解是逐步计算出来的。由于计算机的字长有限,每一步计算都有误差存在,且前一步的舍入误差必然要影响下一步的近似解。如果运算序列的舍入误差不增长。误差的积累或传递对计算结果的影响是可控的,则该算法是数值稳定的,否则是数值不稳定的。

3. 数值计算的基本原则

评价一个数值计算方法优劣的标准:

  • 计算时间复杂度(运算次数或计算时间),包括收敛性问题
  • 计算空间复杂度(占用计算机存储空间)
  • 计算结果精确度(包括稳定性问题)

构造和选择一个好的计算方法:

  1. 避免两个相近的数相减

在数值计算过程中,两个相近的数相减,会严重损失有效数字,从而使相对误差变大。

如果两个相近的数相减,常采用变换的公式进行计算。如果计算公式不能改变,则采用增加有效数字位数的方法。

  1. 避免使用绝对值很小的数作分母

  2. 两个相差很大的数进行运算时,防止大数“吃掉”小数

  3. 简化计算步骤,减少运算次数

计算方法的稳定性 | 误差来源之舍入误差 | 数值计算基本原则相关推荐

  1. 倾斜补偿的电子罗盘(2):磁传感器的误差来源、硬磁干扰的校准(3个参数)、实验验证

    电子罗盘(2):磁传感器的误差来源.硬磁干扰的校准(3个参数).实验验证 文章目录 理想情况 误差来源 内部 外部 误差模型 硬磁干扰的校准(3个参数) 使用的模型 最小二乘法 实测结果 总结 代码和 ...

  2. 机器人离线编程画圆误差解决方案_机器人离线编程的误差来源分析与消除办法...

    随着机器人应用领域越来越广,传统的示教编程这种编程手段有些场合变得效率非常低下,于是离线编程应运而生,并且应用越来越普及.但初用离线编程的朋友,总会被最后生成轨迹的误差所困惑,而导致这些误差的原因,包 ...

  3. 浅谈餐饮行业油烟监测误差来源及整改建议-安科瑞王婧

    [产品应用]浅谈餐饮行业油烟监测误差来源及整改建议 安科瑞王婧 彭峰 陈玉茹 摘要 近年来,随着人们生活水平的提高,饮食业发展迅猛,环境监测者对饮食业油烟监测的力度及频次也呈逐年上升趋势,但是在日常监 ...

  4. 组合导航原理剖析(四):惯性和GNSS器件选型与误差来源

    一.惯性传感器 1. 惯性传感器指标 加速度计和陀螺仪的实际输出不可避免地存在误差,主要包括零偏误差.比例因子误差.交轴耦合误差和随机噪声等[140].每一种系统误差又包含常值项.随温度变化项.随机逐 ...

  5. 数值计算方法绪论笔记(误差,有效数字)

    数值计算方法绪论笔记 基础:代数.几何.分析(纯粹数学) 数学特征: 概念的抽象性 逻辑的严密性 结论的确定性 应用的广泛性 数值计算方法 -> 数学计算的应用 科学计算 计算数学(基础):数值 ...

  6. 【转】GPS误差来源

    一.与GPS卫星有关的误差 1.卫星时钟误差 即使卫星是非常的精密复杂,它可以计算出一些极微小的讯息信息,如原子钟(Cesium) 即是如此一个精准的装置,但是精准并不代表完美,因此仍会有一些微小的误 ...

  7. 电流检测的方式与误差来源

    高端与低端电流检测电路如下图所示. 其实根本的原因就是运放的Vos的影响,当低端检测时随着采样电阻Rs的增大,在运放上的输入电压就会增大,那么Vos固定,输出电压增大,那么Vos对输出误差的影响就会更 ...

  8. 电桥 应变片 误差来源及改进 思考题

    金属箔式应变片实验思考题: Q.1 三种桥式电路的测量灵敏度之间的关系 1.全桥的灵敏度是四分之一桥的4倍,半桥的灵敏度是四分之一桥的两倍 四分之一桥的输出电压为UO≈14VsGeU_O \appro ...

  9. 数值计算 - 误差的来源

    误差的来源是多方面的,但主要来源为:过失误差,描述误差,观测误差,截断误差和舍入误差. 过失误差 过失误差是由设备故障和人为的错误所产生的误差,在由于每个人都有"权利"利用机器进行 ...

最新文章

  1. LeetCode简单题之Fizz Buzz
  2. ASP.Net中的TreeView控件中对节点的上移和下移操作
  3. 解决Docker容器内访问宿主机MySQL数据库服务器的问题
  4. java基础(十) 深入理解数组类型
  5. Error Code: 1052. Column '列名' in where clause is ambiguous
  6. Android开发之通过Android Studio自带插件git创建分支,合并分支等
  7. python读书笔记2000_流畅的Python读书笔记
  8. Win32ASm学习[1]:RadASm下测试Debug
  9. 2020年快手母婴生态报告
  10. win2003下如何自动备份MySQL数据库
  11. 上交AI研究院副院长马利庄:基于大数据的人脸识别技术进展与展望
  12. TensorFlow新功能「AutoGraph」:将Python转换为计算图
  13. sql2008性能计数器注册表配置单元一致性失败
  14. html获取手机型号,前端通过js获取手机型号
  15. 继承几近失传的经典吟诵-余觉中
  16. 数字图像处理 离散余弦变换(DCT)和峰值信噪比(PSNR)
  17. 蛋花花分享人工智能概念的诞生与发展
  18. Reflect的理解
  19. Linux系统安全加固指南(万字长文)
  20. Google Authenticator 原理及Java实现

热门文章

  1. java小鸡大冒险_小鸡大冒险怎么玩 新手攻略
  2. RAM和ROM和Flash ROM的区别
  3. Learning TypeScript 0x3 面向对象编程
  4. 六级(2020/12-3) Text 1
  5. Marlin架构解析
  6. 面试题:如何判断一个对象是否属于某个类
  7. 卿斯汉:重视云安全 发展云计算
  8. sqlmap之sqlmapapi
  9. windows如何切割大文件
  10. 记 · leo · code 2019