在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1658|回复: 4

求助,为何结果有误?

[复制链接]
发表于 2016-8-19 11:02:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
如附图所示,不知为何会出现这样的结果?求高手解答,感激不尽。 捕获.PNG
发表于 2016-8-19 13:25:44 | 显示全部楼层
浮点运算误差
 楼主| 发表于 2016-8-19 13:54:35 | 显示全部楼层
回复 2# platum66


   多谢了,正在学习相关问题
 楼主| 发表于 2016-8-19 15:50:52 | 显示全部楼层
回复 2# platum66

你好,我有一个疑问,由于数值精度的原因,一个运算表达式以不同的方式(比如运算顺序)进行运算得到的结果会不一样。那这样的话我该如何编写我的算法,难道需要考虑算法在数据处理的过程中会主要涉及哪一种恶化计算结果的情况(如大数吃小数之类的),并针对性的编写合适的运算表达式吗?这样的方法对于一个较为复杂的算法而言岂非非常不便。特别是一旦某个运算式涉及的数随机性较大,每一种导致结果恶化的情况都等概率出现(比如大数吃小数,相近数相减等情况以等概率出现,或说运算式中的某个数一会是个极大数,一会是个极小数,总是导致涉及该数的运算结果误差恶化),我该如何处理。那么,考虑算法的误差容限是否可行,就是在运算过程中先设置好运算数据的精度。
发表于 2016-9-19 10:40:34 | 显示全部楼层
MATLAB有一定的精度误差,采用相同算法,顺序不同,出来结果可能会有一定差异。如上例中,如果你采用判断语句 if(rintp1==cintp1)  A=1;else A=0;end  你会发现A=0;但是在我们看来,应该A=1;为了避免这种情况出现,你可以采用if(rintp1-cintp1< 0.000001) 来进行容差判断。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-19 18:18 , Processed in 0.022432 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表