Matlab浮点数精度问题在计算中的避免方法

本文探讨了在进行矩阵运算时遇到的浮点数精度问题,特别是在稀疏矩阵点乘中如何保留非零值。通过实例展示了计算结果与预期的差异,并分析了这是由于浮点数计算的精度误差导致。解决方案是利用roundn函数进行数值四舍五入,以减少误差。文章还引用了一篇博客作为参考,提供了针对浮点运算精度问题的解决策略。
摘要由CSDN通过智能技术生成

今天需要进行矩阵计算,构造了目标矩阵c以及需要进行操作的矩阵a、b:


a =

         0         0         0
    0.5000    0.3000    0.4000
         0         0         0

b =

         0    0.1000         0
         0    0.2000         0
         0    0.3000         0

c =

         0    0.1000         0
    0.5000    0.0600    0.4000
         0    0.3000         0

进行这个实验的主要目的是在探究稀疏矩阵点乘时如何保留那些仅在一个矩阵上非零的值。经过计算后将计算结果与预期结果c进行对比发现结果不对,我们的目标是得到一个全1的逻辑数组,但实际结果得到的是如下的结果:

 3×3 logical 数组

   1   0   1
   1   1   1
   1   0   1

将两者相减后,发现是因为浮点数计算时产生的精度误差导致的。

ans =

   1.0e-16 *

         0   -0.2776         0
         0         0         0
         0    0.5551         0

解决方案是人为在较小的位置上进行四舍五入,参考博客(2条消息) Matlab常见问题之 浮点数精度问题_耳东小白的小笔记本儿-CSDN博客_matlab 浮点运算精度,使用roundn进行解决。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值