什麼是數值計算?

在高中我們學過解二次方程直接用求根公式就可以求出方程式的解(求出的解我們叫做精確解),一次方程的解更是一目了然。三次方程,四次方程通過有限多部的計算也可以求出根。而一般五次以上的方程的根沒有求根公式,也就是說有限步初等運算不可以計算出精確解,那就用其他數學方法不斷地逼近精確解,在滿足誤差允許的情況下求出的逼近解就叫做數值解。大家在高中的時候應該就對二分法有所了解,二分法就是最簡單的數值結算的數學方法。

數值計算的研究在一百多年前數學家就有研究,但是由於數值計算,往往需要一步一步的迭代,不斷地算下去,就拿二分法來說,分的越細,算出的誤差越小,但是這項工作對於手算口算心算的人類來說太龐大了,而計算機的出現改變了這一狀況,一秒鐘上上億次的計算速度,讓這些問題不在話下。隨著計算機的發展,數值計算的重要性也越來越凸顯出來。

誤差的概念很好理解,這裡不多說明。但是有一點要提及的,計算機的存儲都是二進位的,1,2,3整數存在電腦就是整數,但是像1/7,e,π這樣的無限小數,計算機就只能在一定的精度下記錄有限位數字了。這也就是為什麼你用一些計算機算1÷(10!^10!)的時候顯示為0(或顯示錯誤溢出)的原因。

在計算機中,常常為了提高精度,常常用機器數,也就是浮點數(如下圖)表示一個數字。其實就是類似於 0.327842×10^20.1010101101×2^8 這樣的數。存儲的長度精度就決定於t的位數,在計算機理解是計算機的位數。

在計算如下

時,因為在計算時 10^4×0.1234 的精度只到了個位,所以後面的數,就全部四捨五入為0了不起作用了。

而如果將小數放在前面計算

先計算了 0.4987+0.4896+0.4697+04012=1.8592 ,再將他與後面的大數相加,而此時1.8592已經四捨五入為2了。所以結果中看到了這四個數的作用。

在作連加時,為防止大數吃小數,應從小到大進行相加,如此,精度將得到適當改善。這就是計算機中的誤差。

(剛學數值計算,還沒學完,相當於課程回顧,不過表達很易懂。可能包含描述不當或錯誤。歡迎指出學習給改進。)

推薦閱讀:

查看原文 >>
相关文章