eps(a)是|a|與大於|a|的最小的浮點數之間的距離,距離越小表示精度越高。預設a=1。我們知道浮點數其實是離散的,有限的,而且間隔是不均勻的。我們可以說一個數旁邊的數是什麼,而它們之間的距離就反應了其精度。越靠近0,數和數之間就越密集,精度就越高。 _______________________樓上的說法是錯誤的,eps不是matlab所能表示的最小的正數。樓主可以試試eps和eps/2,如果eps真的是最小的正數,那麼eps/2就應該四捨五入到0或eps,但實際上卻能精確表示出來。正確的說法是eps=eps(1),是1的精度。也就是說matlab無法表示介於1和1+eps之間的數,這些數將被四捨五入到1或1+eps。比如1+0.3*eps被舍入到1,而1+0.7*eps被舍入到1+eps。樓主可以用下面的語句進行驗證:1+0.3*eps==1%true1+0.7*eps==1%false1+0.7*eps==1+eps%true 正如前面所說,對浮點數而言,越靠近0,精度就越高。因此2的精度就比1的精度要低。事實上,matlab無法區分介於2和2+2*eps之間的數。也就是說eps(2)=2*eps,下面是驗證:2+eps==2%true,說明matlab無法區分2和2+eps1+eps==1%false,說明matlab可以區分1和1+eps,因此1的精度比2高 0的精度是最高的,也就是說eps(0)才是matlab所能表示的最小的正數。它和eps相比相差了300多個數量級,eps和它相比大的簡直是個天文數字。
eps(a)是|a|與大於|a|的最小的浮點數之間的距離,距離越小表示精度越高。預設a=1。我們知道浮點數其實是離散的,有限的,而且間隔是不均勻的。我們可以說一個數旁邊的數是什麼,而它們之間的距離就反應了其精度。越靠近0,數和數之間就越密集,精度就越高。 _______________________樓上的說法是錯誤的,eps不是matlab所能表示的最小的正數。樓主可以試試eps和eps/2,如果eps真的是最小的正數,那麼eps/2就應該四捨五入到0或eps,但實際上卻能精確表示出來。正確的說法是eps=eps(1),是1的精度。也就是說matlab無法表示介於1和1+eps之間的數,這些數將被四捨五入到1或1+eps。比如1+0.3*eps被舍入到1,而1+0.7*eps被舍入到1+eps。樓主可以用下面的語句進行驗證:1+0.3*eps==1%true1+0.7*eps==1%false1+0.7*eps==1+eps%true 正如前面所說,對浮點數而言,越靠近0,精度就越高。因此2的精度就比1的精度要低。事實上,matlab無法區分介於2和2+2*eps之間的數。也就是說eps(2)=2*eps,下面是驗證:2+eps==2%true,說明matlab無法區分2和2+eps1+eps==1%false,說明matlab可以區分1和1+eps,因此1的精度比2高 0的精度是最高的,也就是說eps(0)才是matlab所能表示的最小的正數。它和eps相比相差了300多個數量級,eps和它相比大的簡直是個天文數字。