matlab涉及小数运算精度问题
delta_w=0.05*pi
N3=11*pi/delta_w
k3=0:N3-1
请大家在MATLAB中运行这个,结果我在命令窗口中查看,很显然size运算错了,从0到219是220个数呀,因为我有程序需要用到这三句,结果由于这个错误,导致我矩阵长度不匹配,求大家看看这是怎么回事
matlab涉及小数运算精度问题
答案:1 悬赏:50 手机版
解决时间 2021-07-27 10:11
- 提问者网友:流星是天使的眼泪
- 2021-07-26 09:49
最佳答案
- 五星知识达人网友:爱难随人意
- 2021-07-26 10:03
matlab计算时默认的采用double类型的数据,所以绝大多数的数值都是存在误差的.
在比较两个数是否相等时,就判断这两个数的差是否在误差内,在内部就认为想等,在外部就认为不等.
你出现的这个问题正好是由于这个原因,
d1=220-N3
d1= 2.842170943040401e-014
而d2=eps(220)=2.842170943040401e-014
现在是一个更特殊的情况d1=d2,所以正好认为N3与220不是一个数,而是一个比220要小且大于219的数,所以会出现这种情况.
对你的程序,你可以根据程序逻辑用N3=ceil(11*pi/delta_w)或者N3=round(11*pi/delta_w)来代替你的语句
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯