admin管理员组文章数量:1130349
MATLAB除法运算的精度问题及其解决方案
- 1. 问题描述:
- 2. 解决方案1(roundn)
- 3. 解决方案2(除变乘)
- 4. 有更多想法或者问题,欢迎多多交流
1. 问题描述:
今天做课题的时候,发现MATALB在执行除法运算时,如果需要的精度太高,会出现高精度部分运算出错的情况。
比如在这里我执行一个简单的除法运算:x=4.8/0.2,看一下结果:
命令行的结果看起来还不错,24.0000,就是24嘛!
打开变量查看器查看,就会发现,嗯?结果差了0.000000000000004。
有时候这一点点精度缺失确实不值得注意,但是偶尔它也会产生很多麻烦,因此还是解决一下比较好。
2. 解决方案1(roundn)
roundn(X,N) 函数的作用是将X圆整,参数N定义圆整的精度,N为正代表圆整到小数点前N位,N为负代表圆整到小数点后N位。
这并不是一个很合理的解决方案,因为圆整操作会导致数值精度的丢失,但是至少可用。
我们使用: x=roundn(4.8/0.2,-10) ,执行一下,看效果:
命令行的结果其实已经表明我们的计算结果没问题了,确实是24。
再打开变量查看器,发现结果确实是正确的。
MATLAB除法运算的精度问题及其解决方案
- 1. 问题描述:
- 2. 解决方案1(roundn)
- 3. 解决方案2(除变乘)
- 4. 有更多想法或者问题,欢迎多多交流
1. 问题描述:
今天做课题的时候,发现MATALB在执行除法运算时,如果需要的精度太高,会出现高精度部分运算出错的情况。
比如在这里我执行一个简单的除法运算:x=4.8/0.2,看一下结果:
命令行的结果看起来还不错,24.0000,就是24嘛!
打开变量查看器查看,就会发现,嗯?结果差了0.000000000000004。
有时候这一点点精度缺失确实不值得注意,但是偶尔它也会产生很多麻烦,因此还是解决一下比较好。
2. 解决方案1(roundn)
roundn(X,N) 函数的作用是将X圆整,参数N定义圆整的精度,N为正代表圆整到小数点前N位,N为负代表圆整到小数点后N位。
这并不是一个很合理的解决方案,因为圆整操作会导致数值精度的丢失,但是至少可用。
我们使用: x=roundn(4.8/0.2,-10) ,执行一下,看效果:
命令行的结果其实已经表明我们的计算结果没问题了,确实是24。
再打开变量查看器,发现结果确实是正确的。
版权声明:本文标题:MATLAB除法运算的精度问题及其解决方案 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1754942005a2744450.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论