首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用norm时的Matlab精度

使用norm时的Matlab精度
EN

Stack Overflow用户
提问于 2014-11-03 19:43:36
回答 1查看 175关注 0票数 0

以下是Matlab命令(MATLAB版本: 8.2.0.701 (R2013b))

代码语言:javascript
运行
复制
format long;
norm([9, 2])

给出

代码语言:javascript
运行
复制
9.219544457292889

其中,

代码语言:javascript
运行
复制
sqrt(9^2+2^2)

给出

代码语言:javascript
运行
复制
9.219544457292887

请注意最后一位小数。这台机器是依赖的吗?这一切为什么要发生?我怎么才能避免呢?

EN

回答 1

Stack Overflow用户

发布于 2014-11-03 19:54:59

这是一个关于如何compare floating point numbers的很好的指南。由于几个原因(误差累积、不同的算法、机器精度等),当应用两种不同的算法时,您可能会得到略有不同的结果,理论上(手动完成)必须返回相同的数字(欢迎使用科学计算!)。

如果在两个结果之间使用相对比较(假设标准结果是正确的),你会得到:

代码语言:javascript
运行
复制
abs(9.219544457292889 - 9.219544457292887) / 9.219544457292889 =  1.9267e-016

这是微不足道的。对于任何实际目的,您都会得到完全相同的结果。

如果你想得到确切的答案,你必须使用Arbitrary-precision库(正如@Divakar在评论部分提到的那样),但是你将付出更高的CPU使用率的代价。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26713572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档