簡(jiǎn)介
數(shù)值分析的目的是設(shè)計(jì)及分析一些計(jì)算的方式,可針對(duì)一些問題得到近似但夠精確的結(jié)果。以下是一些會(huì)用利用數(shù)值分析處理的問題:
數(shù)值天氣預(yù)報(bào)中會(huì)用到許多先進(jìn)的數(shù)值分析方法。
計(jì)算太空船的軌跡需要求出常微分方程的數(shù)值解。
汽車公司會(huì)利用電腦模擬汽車撞擊來提升汽車受到撞擊時(shí)的安全性。電腦的模擬會(huì)需要求出偏微分方程的數(shù)值解。
對(duì)沖基金會(huì)利用各種數(shù)值分析的工具來計(jì)算股票的市值及其變異程度。
航空公司會(huì)利用復(fù)雜的最佳化算法決定票價(jià)、飛機(jī)、人員分配及用油量。此領(lǐng)域也稱為作業(yè)研究。
保險(xiǎn)公司會(huì)利用數(shù)值軟件進(jìn)行精算分析。
直接法迭代法
|| ||
直接法利用固定次數(shù)的步驟求出問題的解。這些方式包括求解線性方程組的高斯消去法及QR算法,求解線性規(guī)劃的單純形法等。若利用無限精度算術(shù)的計(jì)算方式,有些問題可以得到其精確的解。不過有些問題不存在解析解(如五次方程),也就無法用直接法求解。在電腦中會(huì)使用浮點(diǎn)數(shù)進(jìn)行運(yùn)算,在假設(shè)運(yùn)算方式穩(wěn)定的前提下,所求得的結(jié)果可以視為是精確解的近似值。2
迭代法是通過從一個(gè)初始估計(jì)出發(fā)尋找一系列近似解來解決問題的數(shù)學(xué)過程。和直接法不同,用迭代法求解問題時(shí),其步驟沒有固定的次數(shù),而且只能求得問題的近似解,所找到的一系列近似解會(huì)收斂到問題的精確解。會(huì)利用審斂法來判別所得到的近似解是否會(huì)收斂。一般而言,即使使用無限精度算術(shù)的計(jì)算方式,迭代法也無法在有限次數(shù)內(nèi)得到問題的精確解。
在數(shù)值分析中用到迭代法的情形會(huì)比直接法要多。例如像牛頓法、二分法、雅可比法、廣義最小殘量方法(GMRES)及共軛梯度法等。在計(jì)算矩陣代數(shù)中,大型的問題一般會(huì)需要用迭代法來求解。
離散化許多時(shí)候需要將連續(xù)模型的問題轉(zhuǎn)換為一個(gè)離散形式的問題,而離散形式的解可以近似原來的連續(xù)模型的解,此轉(zhuǎn)換過程稱為離散化。例如求一個(gè)函數(shù)的積分是一個(gè)連續(xù)模型的問題,也就是求一曲線以下的面積若將其離散化變成數(shù)值積分,就變成將上述面積用許多較簡(jiǎn)單的形狀(如長方形、梯形)近似,因此只要求出這些形狀的面積再相加即可。
例如在二小時(shí)的賽車比賽中,記錄了三個(gè)不同時(shí)間點(diǎn)的賽車速度,如下表
|| ||
利用離散化的方式,可以假設(shè)賽車在0:00到0:40之間的速度、0:40到1:20之間的速度及1:20到2:00之間的速度分別為三個(gè)定值,因此前40分鐘的總位移可近似為(2/3h×140km/h)=93.3公里??梢来朔绞浇贫r(shí)內(nèi)的總位移為93.3公里 + 100公里 + 120公里 = 313.3公里。位移是速度的積分,而上述的作法是用黎曼和進(jìn)行數(shù)值積分的一個(gè)例子。3
誤差誤差是數(shù)值分析的重要主題之一。誤差的形成可分為幾種不同的原因。
舍入誤差當(dāng)進(jìn)行數(shù)值分析的設(shè)備只能用有限位數(shù)來表示一個(gè)實(shí)數(shù)時(shí),就會(huì)出現(xiàn)舍入誤差(Round-off error),例如用可顯示十位數(shù)字的計(jì)算器計(jì)算1/3,所得到的結(jié)果0.333333333,和實(shí)際數(shù)值的誤差就是舍入誤差。即使進(jìn)行數(shù)值分析的設(shè)備用浮點(diǎn)數(shù)來表示實(shí)數(shù),仍無法完全避免舍入誤差的問題。4
離散化誤差若迭代法的數(shù)值分析算到某一程度就中止計(jì)算,或是使用一些近似的數(shù)學(xué)程序,程序所得結(jié)果和精準(zhǔn)解不同,就會(huì)出現(xiàn)截尾(Truncation)誤差。將問題離散化后,由于離散化問題的解不會(huì)和原問題的解完全一様,因此會(huì)出現(xiàn)離散化誤差。例如用迭代法計(jì)算 3x3+4=28的解,在計(jì)算幾次后我們認(rèn)為其解為1.99,就會(huì)有0.01的截尾誤差。
一旦有了誤差,誤差就會(huì)借著計(jì)算繼續(xù)的擴(kuò)散。例如一個(gè)計(jì)算機(jī)中的加法是不準(zhǔn)的,則a+b+c+d+e的計(jì)算也一定不準(zhǔn)。例如剛剛計(jì)算3x+4=28的解為1.99,若后續(xù)的運(yùn)算需要用到3x+4=28的解,用1.99代入所得的結(jié)果也會(huì)不準(zhǔn)。
當(dāng)用近似的方式處理數(shù)學(xué)式時(shí)就會(huì)出現(xiàn)截尾誤差。以積分為例,完全精準(zhǔn)的積分需要求出曲線下方無限個(gè)梯形的面積和,但用在數(shù)值分析中會(huì)用有限個(gè)梯形的面積和來近似無限個(gè)梯形的面積和,此時(shí)就會(huì)出現(xiàn)截尾誤差。若要對(duì)一個(gè)函數(shù)進(jìn)行微分,其微分量需要趨近于0,但實(shí)務(wù)上只能選擇很小的微分量。
領(lǐng)域研究數(shù)值分析依其待求解的問題不同,分為不同的領(lǐng)域。
|| ||
函數(shù)求值數(shù)值分析中最簡(jiǎn)單的問題就是求出函數(shù)在某一特定數(shù)值下的值。最直覺的方法是將數(shù)值代入函數(shù)中計(jì)算,不過有時(shí)此方式的效率不佳。像針對(duì)多項(xiàng)式函數(shù)的求值,較有效率的方式是秦九韶算法,可以減少乘法及加法的次數(shù)。若是使用浮點(diǎn)數(shù),很重要的是是估計(jì)及控制舍入誤差。5
求解方程另一種常見的問題是求特定方程式的解。首先會(huì)依方程式是否線性來區(qū)分,例如方程式 2x+5=3是線性方程式,而2x25=3是非線性方程式。
此領(lǐng)域許多的研究都和求解線性方程組有關(guān)。直接法是線性方程組的系數(shù)以矩陣來表示,再利用矩陣分解的方式求解,這些方法包括高斯消去法、LU分解,對(duì)于對(duì)稱矩陣(或埃爾米特矩陣)及正定矩陣可以用喬萊斯基分解,非方陣的矩陣則可以用QR分解。迭代法包括有雅可比法、高斯–塞德迭代法、逐次超松馳法(SOR)及共軛梯度法,一般會(huì)用在大型的線性方程組中。
求根算法是要解一非線性方程,其名稱是因?yàn)楹瘮?shù)的根就是使其值為零的點(diǎn)。若函數(shù)本身可微且其導(dǎo)數(shù)是已知的,可以用牛頓法求解,其他的方法包括二分法、割線法等。線性化則是另一種求解非線性方程的方法。
求解特征值許多重要的問題可以用奇異值分解或特征分解來表示。例如有些圖像壓縮算法就是以奇異值分解為基礎(chǔ)。統(tǒng)計(jì)學(xué)中對(duì)應(yīng)的工具稱為主成分分析。
最優(yōu)化最優(yōu)化問題的目的是要找到使特定目標(biāo)函數(shù)有最大值(或最小值)的點(diǎn),一般而言這個(gè)點(diǎn)需符合一些約束。
依目標(biāo)函數(shù)及約束條件的不同,最佳化又可以再細(xì)分:例如線性規(guī)劃處理目標(biāo)函數(shù)及約束條件均為線性的情形,常用單純形法來求解。若目標(biāo)函數(shù)及約束條件其中有一項(xiàng)為非線性,就是非線性規(guī)劃的范圍。
有約束條件的問題可以利用拉格朗日乘數(shù)轉(zhuǎn)換為沒有約束條件的問題。
積分計(jì)算數(shù)值積分的目的是在求一定積分的值。一般常用牛頓-寇次公式,包括辛普森積分法、高斯求積等。上述方式是利用分治法來處理積分問題,也就是將大范圍的積分切割成許多小范圍的積分,再進(jìn)行計(jì)算。不過在高維度時(shí),上述作法可能會(huì)因?yàn)橐髟S多的計(jì)算而變得不實(shí)用(也就是維數(shù)之咒所描述的情形),此時(shí)可以采用蒙地卡羅方法或半蒙地卡羅方法。(可參照蒙地卡羅積分,或是適用于高維度的稀疏網(wǎng)格法。)
微分方程數(shù)值分析也會(huì)用近似的方式計(jì)算微分方程的解,包括常微分方程及偏微分方程。
常微分方程往往會(huì)使用迭代法,已知曲線的一點(diǎn),設(shè)法算出其斜率,找到下一點(diǎn),再推出下一點(diǎn)的資料。歐拉方法是其中最簡(jiǎn)單的方式,較常使用的是龍格-庫塔法。
偏微分方程的數(shù)值分析解法一般都會(huì)先將問題離散化,轉(zhuǎn)換成有限元素的次空間。可以透過有限元素法、有限差分法及有限體積法,這些方法可將偏微分方程轉(zhuǎn)換為代數(shù)方程,但其理論論證往往和泛函分析的定理有關(guān)。另一種偏微分方程的數(shù)值分析解法則是利用離散傅立葉變換或快速傅立葉變換。