趙建平ZHAO Jian-ping
(新疆大學,烏魯木齊830046)
計算數學也叫做數值計算方法或數值分析,主要內容包括代數方程、線性代數方程組、微分方程的數值解法,函數的數值逼近問題,矩陣特征值的求法,最優化計算問題,概率統計計算問題等等,還包括解的存在性、唯一性、收斂性和誤差分析等理論問題。計算數學的重要性日益顯現。現代的科學技術發展都離不開大量的數值計算問題。比如,發射一顆探測宇宙奧秘的衛星,從衛星世紀開始到發射、回收為止,科學家和工程技術人員、工人就要對衛星的總體、部件進行全面的設計和生產,要對選用的火箭進行設計和生產,都有許許多多的數據要進行計算。
除了掌握數學專業必修的基礎課程:高等代數、數學分析、空間解析幾何和概率論語數理統計、常微分方程之外,計算數學還應該掌握泛函分析,數學物理方程,矩陣分析,C語言程序設計等,更需要有數值分析、差分法、有限元法統稱的偏微分方程數值解法。
數值模擬也叫計算機模擬。依靠電子計算機,結合有限元或有限容積技術,通過數值計算和圖像顯示的方法,達到對工程問題和物理問題乃至自然界各類問題探究。
數值模擬技術誕生于1953年Bruce和Peaceman等對一維氣相不穩定徑向和線形流的模擬。受當時計算機能力及解法限制,數值模擬技術只是初步應用于解一維單相流問題。1954年,West和Garvin等模擬了油藏不穩定兩相流。
數值模擬包含以下幾個步驟:
①首先要建立反映問題(工程問題、物理問題等)本質的數學模型,即建立反映問題各量之間的微分方程及相應的定解條件,這是數值模擬的出發點。
②數學模型建立之后,需要解決的問題是尋求高效率、高準確度的計算方法。由于人們的努力,目前已發展了許多數值計算方法。計算方法不僅包括微分方程的離散化方法及求解方法,還包括貼體坐標的建立,邊界條件的處理等。這些過去被人們忽略或回避的問題,現在受到越來越多的重視和研究。
③在確定了計算方法和坐標系后,開始編制程序和進行計算。由于求解的問題比較復雜,比如方程就是一個非線性的十分復雜的方程,它的數值求解方法在理論上不夠完善,所以需要通過實驗來加以驗證。正是在這個意義上講,數值模擬又叫數值試驗。這部分工作是數值模擬的重點。實踐表明這一部分工作是整個數值模擬的主體,占絕大部分時間。
④在計算工作完成后,大量數據只能通過圖像形象地顯示出來。因此,數值的圖像顯示也是一項十分重要的工作。
下面通過2個數值例子說明數學軟件Matlab[1]在學習數值分析和差分方法上方便快捷和有效性
算例1[2]比較分別采用二次插值和三次樣條插值以及分段線性插值在求解下面問題,并考慮各插值方法的誤差及算法效率問題。

表1 已知節點及函數值
求x=0.45,0.55,0.61,0.78,0.82,0.94的近似解。
一種是利用插值公式,建立M文件,構造出插值多項式,然后對所求的點帶入求解。
這種方式針對Matlab初學者比較適用,一方面熟悉Matlab編程計算環境,聯系編寫M文件,為以后編寫復雜的算法做準備。
第二種是直接調用Matlab軟件自帶的函數命令,yi=interp1(X,Y,xi,method)。
其中X是已知自變量,Y是已知函數值,xi待求節點自變量,method 可為一次插值’linear’,二次插值’square’,三次插值’cubic’,樣條插值’spline’。
在Matlab命令框輸入以下命令
X=[0.4 0.5 0.6 0.7 0.8 0.9];%注意這兩行命令是輸入已知數據條件
Y=[-0.9163-0.6931-0.5108-0.3567-0.2233-0.1054];
Xs=[0.45 0.55 0.61 0.78 0.82 0.94];%需求節點值
Y1=interp1(X,Y,xs,'linear');%線性插值所得的函數值
Y2=interp1(X,Y,xs,'square');%二次插值所得函數值
Y3=interp1(X,Y,xs,'cubic');%三次插值所得函數值
Ys=interp1(X,Y,xs,'spline');%三次樣條插值所得函數值
通過運行得到表2所示結果。

表2 線性、二次、三次、三次樣條插值方法的數值結果比較
其真解為:-0.7985-0.5978-0.4943-0.2485-0.1985-0.0619

根據得到的計算結果我們分析其結果,會發現一次插值和三次插值的誤差較大,并不是插值多項式的階數越高,精度越高。
同時我們可以分析其偏差,利用下述代碼計算
Error_21=sum(sqrt((Y1-Yz).^2));%一次插值的誤差
Error_22=sum(sqrt((Y2-Yz).^2));%二次插值的誤差
Error_23=sum(sqrt((Y3-Yz).^2));%三次插值的誤差
Error_2s=sum(sqrt((Ys-Yz).^2));%三次樣條次插值的誤差

表3 各種插值方法數值結果的偏差
橢圓型方程有著重要的現實意義。比如,帶有擴散的兩物質自催化反應模型,帶有非單調反應函數的兩種群食餌-捕食模型,帶有擴散的三種群周期互惠模型,帶有擴散的三種群周期競爭模型本算例選取最簡單的計算方法五點差分法求解橢圓方程問題。采用Matlab編程實現此計算方法的數值模擬。由于篇幅限制,本文僅例舉出一維的帶界面的橢圓方程的算例。這里求解的問題是橢圓方程在定義域內有不連續點的情形。若問題采用五點差分格式計算橢圓偏微分方程邊值問題,就可以轉化為解含間斷節點的橢圓邊值問題,即構造改進五點差分格式算法去求解帶界面的橢圓問題。由于篇幅限制僅列出一維問題的算例。
算例 2[3]-(βux)x+κu=f+Cδ(x-α)+C^δ′(x-α)
x∈Ωa,Ω=[0,1],α點處函數的左右極限及導數都不相等。并且滿足跳躍值為
下面利用Matlab給出了改進的中心差分格式的算法實現,解決單個跳躍或者多個跳躍的問題。改進程序主要分為以下幾個板塊(a)初始化變量;(b)特殊單元差分格式的求解;(c)系數矩陣的求解;(d)線性方程組求解及誤差求解(e)數據輸出及可視化。若將[0,1]分為10等分求解分片二次多項式的問題,則得到的誤差是機器誤差。數值模擬及誤差分布結果參看圖2。其中圖1(1)是一個間斷點的數值解和真解的比較,圖1(2)一個間斷點數值解的絕對誤差,圖1(3)是兩個間斷點的數值解和真解的比較,圖1(4)兩個間斷點數值解的絕對誤差。我們發現模擬結果相當好,也驗證了一維的浸入界面方法的精度為2階精度。

圖1 一個間斷點的(1)真解與數值解,(2)絕對誤差;兩個間斷點的(3)真解與數值解,(4)絕對誤差
通過Matlab軟件實現了不連續問題的一維橢圓問題的求解。也可以實現很多基于經典數值方法的改進,求解更多復雜問題。用Matlab軟件的編程容易實現可視化效果。基本實現了對計算數學的數值模擬的實現。當然這里只是舉出2個簡單的算例。
本文主要探討了數學軟件Matlab在計算數學的數值模擬中的重要性。并用兩個數值例子說明了數學軟件在數值模擬的有效性和可靠性。這將對有志從事科學計算的研究人員有一定的引導和幫助作用。
[1]Bruce G H,Peaceman D W,Rachford H H,Rice J D.Calculations of unsteady-state gas flow trough porous media[J].Transactions,American Institute ofMining and Metallurgical Engineers,198(1953):79-91.
[2]West W J,Garvin W W,Sheldon J W.Solution of the equations of unsteady-state two-phase flow in oil reservoirs[J].Transactions,Ame,rican Institute of Mining and Metallurgical Engineers,201(1954):217-229.
[3]王沫然.Matlab與科學計算[M].北京:電子工業出版社,2004.
[4]李慶揚,王能超,易大義.數值分析[M].北京:清華大學出版社,2010.
[5]LeVeque R J,Li Z L.The immersed interface method for ellipticequationswith discontinuouscoefficientsand singular sources[J].SIAM Journal on Numerical Analysis,1994,31(4):1019-1044.