我是靠谱客的博主 想人陪冰淇淋,最近开发中收集的这篇文章主要介绍论述:数值计算中的精度问题论述:数值计算中的精度问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

论述:数值计算中的精度问题

更新历史
20190323:

  1. 首次发布

( 1 − 10 ÷ 9 ) (1-10div9) (110÷9)等于多少?

这个问题看上去很简单,我们可以很容易地得到:

1 − 10 ÷ 9 = 1 − 1.1 1 ˙ = − 0.1 1 ˙ 1-10div9 = 1-1.1dot1 = -0.1dot1 110÷9=11.11˙=0.11˙

可以看到,理论上的结果是一个无限循环的小数。
如果我们通过Python (博主采用的Python版本为:3.7.2)去计算上述的表达式,得到的结果是:

>>> 1-10/9
-0.11111111111111116

如果我们通过Matlab (博主采用的Matlab版本为:2017b)去计算上述的表达式,得到的结果则是:

-0.111111111111111

到此为止,机智的你一定发现了:

  • 用Python和Matlab计算出来的结果,小数部分的位数都是有限的
  • 用Python和Matlab计算出来的结果,小数部分的位数不一样
  • 用Python和Matlab计算出来的结果,对于常规数值计算的需求来说,精度都是远远足够的

将上述的发现概括、总结、升华一下,那就是:

  • 高精度的计算工具计算表达式 ( 1 − 10 ÷ 9 ) (1-10div9) (110÷9),得到的结果在精度上是有限但又满足需求的。

借此,我们可以很容易地想到:

  • 低精度的计算工具计算表达式 ( 1 − 10 ÷ 9 ) (1-10div9) (110÷9),得到的结果在精度上是有限的,结果的精度不一定满足需求。

是的,如果使用的计算工具的精度不够高,你可能会得到:

		1-10÷9 = 0
或者: 	1-10÷9 = -0.1
或者: 	1-10÷9 = -0.11
或者: 	...

以上的结果你能接受到什么程度,取决于你的计算需求。在硬件计算的领域,例如利用FPGA做卷积计算,使用的乘法器、加法器、乘加器等存在位宽的限制,往往就需要很小心地考虑数据的计算精度。

用一句话将本论述归纳总结一下,那就是:

  • 做数值计算时,需要关注精度问题

最后

以上就是想人陪冰淇淋为你收集整理的论述:数值计算中的精度问题论述:数值计算中的精度问题的全部内容,希望文章能够帮你解决论述:数值计算中的精度问题论述:数值计算中的精度问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部