Maple 教材:任意精度的浮點數計算

所謂浮點數計算的精度 (precision) 就是,當一個數字寫成科學記數符號的時候, 它的底數部份總共有幾位數字。 例如 32 寫成十位數字的科學記數符號就是

3.200000000 * 101
而 0.00037805 寫成十位數字的科學記數符號就是
3.780500000 * 10- 4
Maple 的初始設定是以 10 位數字的科學記數符號來作計算。

不論整數還是浮點數計算,Maple 都是以軟體來做。 所以,既然 Maple 可以做任意大整數的計算,其實它也可以做任意精度的浮點數計算。 您可以在 evalf( ) 的第二個參數,設定其精度。例如

evalf(1/7, 50);
evalf(sqrt(2), 50);
就以五十位數字來計算。 另一個方法是修改記錄此參數的變數值,語法是
Digits := 50;
則此後的所有浮點數計算都會以五十位數字來作。例如
1.0/7;
evalf(sqrt(2));
如果要恢復原來的設定,必須明確地說
Digits := 10;

提高精度以後的浮點數計算,比較不容易出錯。例如

x := 0.00001;
evalf( (1+x^2)^2 - 1 , 50 );
得到正確答案:2x2 + x4,也就是
2.0000000001 * 10 - 10

習題

  1. 寫出 1/17 的一段循環節。例如 1/7 的一段循環節是 142857。
  2. Digits := 20;
    的情況下,使得
    (1+x^2)^2 - 1;
    答案為 0 的最大正數 x 是什麼?
單維彰 (2001/10/24) --- [Prev] [Next] [Up]