查看单个帖子
旧 2008-04-10, 09:57   #2
watcher
高级会员
 
注册日期: 2008-04-02
年龄: 47
帖子: 175
声望力: 21
watcher 正向着好的方向发展
默认

这个不是round函数的问题,matlab做数值运算,a之所以不等于零是由于舍入误差引起的。简单的讲,matlab计算1/9*9得到的是个实数,而不是整数。
科学计算中恰当的误差是可以接受的,matlab有自己的误差控制方法,所以除非特殊的计算要求,否则不必过分注意舍入误差。

但是有些情况还是会带来困惑。比如,用matlab绘制一个带有奇点的函数,这时获得的结果往往和程序中使用的离散步长有关,即不同的离散距离对应不同的图形,这不是matlab计算有错,而是因为离散过程往往会遗漏奇点信息(事实上如果你强制计算奇点处的函数值,matlab会报错)。一种可选的解决方案是减小离散步长,但是不能从根本上解决问题。当我遇到这类问题时,通常是选择使用maple来得到函数图形。
watcher 当前离线   回复时引用此帖