声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 811|回复: 5

[综合讨论] 问一个比较傻但是我实在搞不清的问题

[复制链接]
发表于 2009-7-4 18:23 | 显示全部楼层 |阅读模式

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

您需要 登录 才可以下载或查看,没有账号?我要加入

x
x=0:0.1:1;
y=-0.44.*(x==0)+1.97.*(x==0.1)+3.28.*(x==0.2)+6.16.*(x==0.3)+7.08.*(x==0.4)+7.34.*(x==0.5)+7.66.*(x==0.6)+9.56.*(x==0.7)+9.48.*(x==0.8)+9.30.*(x==0.9)+11.2.*(x==1);
Plot(x,y,‘bo’)

我就是想知道,为什么我每次画出来的图形在x=0.3的地方总是零但是其他地方都正常呢???

高人指教,万分感谢!!!
回复
分享到:

使用道具 举报

发表于 2009-7-4 19:01 | 显示全部楼层
LZ看看a=(x==0), b=(x==0.3)的结果!
好奇, 为何不直接使用
y=[-0.44,1.97,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.30,11.2];

[ 本帖最后由 ChaChing 于 2009-7-4 19:04 编辑 ]

评分

1

查看全部评分

发表于 2009-7-6 12:10 | 显示全部楼层

回复 沙发 ChaChing 的帖子

为什么b是全零啊?x明明有一个0.3啊???
发表于 2009-7-6 17:22 | 显示全部楼层

回复 板凳 波波球 的帖子

详细原因, 个人亦很有兴趣知道!?
但最近较忙些, 实在没空试或搜资料!
基本上个人猜测是精确度的问题! 待高人路过
发表于 2009-7-6 18:15 | 显示全部楼层
感到奇怪,==0.3全零
>> x=0:0.1:1;
>> x==.1

ans =

     0     1     0     0     0     0     0     0     0     0     0

>> x==.3

ans =

     0     0     0     0     0     0     0     0     0     0     0

>> x==.4

ans =

     0     0     0     0     1     0     0     0     0     0     0

[ 本帖最后由 friendchj 于 2009-7-6 18:23 编辑 ]
发表于 2009-7-6 20:42 | 显示全部楼层

回复 5楼 friendchj 的帖子

x=0:0.1:1;
>> x==.1

ans =

     0     1     0     0     0     0     0     0     0     0     0

>>  x==.3

ans =

     0     0     0     0     0     0     0     0     0     0     0

>>  x==.4

ans =

     0     0     0     0     1     0     0     0     0     0     0

>> x==.2

ans =

     0     0     1     0     0     0     0     0     0     0     0

>> x==.5

ans =

     0     0     0     0     0     1     0     0     0     0     0

>> x==.6

ans =

     0     0     0     0     0     0     1     0     0     0     0

>> x==.7

ans =

     0     0     0     0     0     0     0     1     0     0     0

>> x==.8

ans =

     0     0     0     0     0     0     0     0     1     0     0

>> x==.9

ans =

     0     0     0     0     0     0     0     0     0     1     0

>> x==.3

ans =

     0     0     0     0     0     0     0     0     0     0     0

>> abcd=x(4)-.3

abcd =

  5.5511e-017

>>eps

ans =

  2.2204e-016

>> abcd=x(5)-.4

abcd =

     0

>> abcd=x(6)-.5

abcd =

     0

我在你的基础上又多尝试了一下,得到上面的结果,发现abcd=x(4)-.3 对应的结果不是0,而是小于计算精度的一个很小的小数,而其它的都没问题,的确是有些奇怪,不过我想从数值计算的角度来说,拿两个小数点后非0的实数采用==进行对比,本身就是不科学的,因为在处理过程中汇引入截断误差,所以两个非整的实数尽管我们认为是一致的,但是在计算机内的存储可能会存在些微差别。比较理想的方法就是abs(x-0.3)<eps这样的形式,不会出错。

>>abs(x-0.3)<eps

ans =

     0     0     0     1     0     0     0     0     0     0     0

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-7-1 11:50 , Processed in 0.087193 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表