matlab计算精度问题

标签:
matlab计算精度误差 |
分类: matlab |
count=0
n=1000
for i=1:n
end
count/n
算出来的count/n总是小于1的。这就是典型的运算精度造成的问题,只要将判断语句改成(cos(a))^2+(sin(a))^2<=1.0001即可。
还有个例子是有同学在matlab气象家园里问的,他写了一个很长的程序,但是总是算不出他想要的结果,然后他花了很长时间才找到原因,他误以为ceil(0.1*12*10)的结果是12,其实不然,算出来是13,ceil(0.1*10*12)算出来才是12,为什么会这样?原因在下图,a其实是一个比12大一点点的数,向无穷取整自然是13啦。
http://s1/bmiddle/003cvAxDgy6WBlbmvVm00&690
http://s7/bmiddle/003cvAxDgy6WBlbpxkO16&690
我在之前的博客http://blog.sina.com.cn/s/blog_aed5bd1d0102vngk.html也讨论过,这和浮点数在计算机中的存储有关。不仅仅是matlab,其他任何计算机语言都是如此,都算不出正确的结果来。