張穎穎
(中國傳媒大學(xué)信息科學(xué)與技術(shù)學(xué)部,北京 100024)
假設(shè):上述邊值問題有唯一解,且連續(xù)依賴于邊界條件和右端項(xiàng),亦即邊值問題是適定的。[1]
在用數(shù)值方法解possion方程時(shí),根據(jù)方程的特點(diǎn),選擇了三種適合求解大型方程組的求解器來解方程。
這三種方法為Peaceman-Rachford迭代法,共軛梯度法和預(yù)處理共軛梯度法,并對(duì)這三種方法的求解效率進(jìn)行比較。
例2.設(shè)對(duì)Possion方程邊值問題
采用正方形網(wǎng)格剖分正方形區(qū)域Ω(步長為h),對(duì)x和y方向采用中心差分并記
則對(duì)Possion方程離散后差分格式可寫成:L1uh+L2uh=f。
改寫為uh=uh-τ(L1uh+L2uh-f),
其分量形式為
設(shè)A表示N階對(duì)稱正定陣,考慮線性方程組
Au=f,
(1)
其中u為未知向量,f為已知向量.以p(k)表示第k步的搜索方向,u(k)表示第k步近似解向量,殘向量r(k)=f-Au(k),則用共軛梯度法求解(1)的步驟如下:
(1)取初始近似值u(0),計(jì)算p(0)=r(0)=f-Au(0)
設(shè)A表示N階對(duì)稱正定陣,考慮線性方程組
Au=f,
(1)
其中u為未知向量,f為已知向量.以p(k)表示第k步的搜索方向,u(k)表示第k步近似解向量,殘向量r(k)=f-Au(k),則用預(yù)處理共軛梯度法求解的步驟如下:
利用Matlab運(yùn)行二種數(shù)值解法的語言程序,[5]求解本文中的實(shí)例,求解區(qū)間[0,1],取不同步長h,得到不同數(shù)據(jù)結(jié)果和圖形。為進(jìn)一步分析結(jié)果繪制如圖表格。
例1 取步長h=0.1時(shí) 所得的圖形如下
圖1.1 圖1.2
圖1.3 圖1.4 真解圖形
表1 數(shù)值結(jié)果
從表1可以看出CG方法迭代次數(shù)最少,此法較為優(yōu)越。
例2 取步長h=0.05時(shí) 所得的圖形如下
圖2.1 圖2.2
圖2.3 圖2.4 真解圖形
表2 數(shù)值結(jié)果
從表2數(shù)據(jù)可以得出PCG方法迭代次數(shù)最少,此法較為優(yōu)越。
針對(duì)同一問題,步長h越大,迭代次數(shù)越多,但是誤差越小,結(jié)果越精確。
這三種方法中,共軛梯度法不穩(wěn)定,如果條件符合共軛梯度法使用的條件,那么收斂很快,但是如果條件不符合,收斂會(huì)很慢,迭代次數(shù)會(huì)很多。
Peaceman-Rachford迭代法和預(yù)處理共軛梯度法都比較穩(wěn)定,而且在兩個(gè)例子中預(yù)處理共軛梯度法的迭代次數(shù)都比Peaceman-Rachford迭代法的迭代次數(shù)少。綜上,三種方法中最好的解決Possion方程問題的方法是預(yù)處理共軛梯度法。