matlab涉及小数运算精度问题

问题描述:

matlab涉及小数运算精度问题
delta_w=0.05*pi

N3=11*pi/delta_w

k3=0:N3-1
请大家在MATLAB中运行这个,结果我在命令窗口中查看,很显然size运算错了,从0到219是220个数呀,因为我有程序需要用到这三句,结果由于这个错误,导致我矩阵长度不匹配,求大家看看这是怎么回事
1个回答 分类:综合 2014-12-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)来代替你的语句
 
 
展开全文阅读
剩余:2000
上一页:不是奥数题