Matlab 教材:科學記數法

當 Matlab 要顯示一個不太大或不太小 (指絕對值而言) 的數, 他顯示到小數點下第四位,而將小數點下第五位四捨五入。例如

1 / 3
計算結果是 0.3333,那是小數點下第五位捨去的結果。但是
1 / 7
計算結果是 0.1429,那是小數點下第五位進位的結果 (1/7 應該是 0.142857循環)。

但是當 Matlab 要顯示很大或很小 (指絕對值而言) 的數, 他就會改用 五位有效數字 的科學記數法:

a0 . a1a2a3a4 * 10K

其中 a0 是介於 1 和 9 之間的一個整數 (它不得為 0), 在它之前還可以有一個負號 (正號省略不寫), 其他的 ai 都是介於 0 和 9 之間的整數 (也就是一個十進制數目字)。 而 K 是一個大約在 -300 與 300 之間的整數。

例如

1 - (1/3 + 1/3 + 1/3)
也得到答案 0,而且
1 - (7 * (1/7))
也是 0。不過
1 - (1/7 + 1/7 + 1/7 + 1/7 + 1/7 + 1/7 + 1/7)
就成了 2.2204e-16,也就是
2.2204 * 10-16

寫成普通的記數符號,就是
0.00000000000000022204

因為科學記數法裡面那個 K 的關係, 使得小數點實際上應該前後移動 (若 K 是正數,向右移; 若 K 是負數,向左移), 所以我們又稱這樣的數為 浮點數 (floating point numbers)。 相對地,一般寫下小數的方法,因為小數點的位置是固定的, 又稱為 定點數 (fixed point number)。

如果科學記數法只取五位有效數字,就在第六位做四捨五入。 例如在 Matlab 輸入一個常數

0.00000123456
他就幫你變成 1.2346e-06;或者
31415927
用五位有效數字寫成科學數字,就變成 3.1416e+07

習題

  1. 如果 Matlab 顯示一個數是 1.2346e-03,請問這個數最大可能是多少? 最小可能是多少?
  2. 如果 Matlab 顯示一個數是 -1.2345e+03,請問這個數最大可能是多少? 最小可能是多少?
  3. 如果 Matlab 顯示一個數是 1.2345e+05,請用定點數符號寫出來。
單維彰 (03/03/06) --- [Prev] [Next] [Up]