數值分析(一) 演算法和誤差
數值分析屬於計算數學範疇。數值分析的研究內容就是求解各種數學問題數值解的數值計算方法,以及建立數值計算方法、編寫程式,並用計算機計算得出的問題的數值解。
我們將從以下方面進行展開:
(1)線性方程的求根---- 包括《數值分析》中的Gauss消元法、Chlesky分解、Jacobi迭代法等還包括運用遺傳演算法求解限定條件下的線性方程。
(2)多項式插值和函式的數值逼近/曲線擬合
(3)數值積分和導數---- 牛頓-柯特斯公式、Romberg公式、Gauss型求積公式等
(4)常微分方程的數值解法---- 泰勒級數方法、改進尤拉等---------------------正式開始:---------------------------------------------------------------------------------------概念:
推導和演算得出的結果為其解析解(精確解)。
數值方法求出的解為其數值解(近似解/計算解)。
對同一數學問題可能有多種方法計算,方法的選擇上我們要求:
(1)計算效率高----時間/空間複雜度
(2)數值穩定性好----持續的計算中,微小的計算誤差對最終結果的準確性影響不大。否則稱演算法是不穩定的。Ps.這是很要命的,特別是在遞推中,誤差如滾雪球一般....
-------------------誤差:----------------------------------------------------------------------------------------------誤差一般有建立數學模型時產生的誤差、確定初始資料時產生的誤差、截斷誤差和舍入誤差。後兩種是數值分析中討論研究的誤差。
截斷誤差是指某數學問題的精確解與用數值方法求出的近似解之差。例如極限運算就存在截斷誤差:求級數的和。這個和等於π。當用數值演算法計算S時,顯然不能在程式中使n無窮大,通常辦法是讓n足夠大即可。例如n取1000,則求得Sn=3.1420924,截斷誤差為π-Sn=-0.0004998。
舍入誤差不用講了就是數值在計算過程中四捨五入產生的誤差。
假設x’是x的近似值,則:
ε=|x-x’| 稱為絕對誤差。比值(x-x’)/x為近似值的相對誤差。若準確值x未知,為了便於計算,可以取(x-x’)/x’。前提條件是(x-x’)/x’較小。
同樣,稱(x-x’)/x<r中的r為相對誤差限。
函式誤差估計:
若數有小的變化,引起函式值大的變化,則稱這個計算是病態的,反之稱為良態的。例如常見的:病態矩陣。
--------------------防止誤差傳播:--------------------------------------------------------------------------------------------
(1)避免相近的數相減
(2)避免絕對值很小的數作除數
(3)避免大數加(減)小數---浮點數的儲存精度導致
(4)簡化計算步驟,減少運算次數