李 明
(長江大學 信息與數(shù)學學院,湖北 荊州 434023)
偏微分方程定解問題有著廣泛的應用背景。人們用偏微分方程來描述、解釋或者預見各種自然現(xiàn)象,并用于科學和工程技術的各個領域[1]。然而,對于廣大應用工作者來說,從偏微分方程模型出發(fā),使用有限元法或有限差分法求解都要耗費很大的工作量,才能得到數(shù)值解?,F(xiàn)在,MATLAB PDE Toolbox已實現(xiàn)對于空間二維問題高速、準確的求解過程。
MATLAB提供了兩種方法[2]解決PDE問題,一是pdepe函數(shù)[3],它可以求解一般的PDEs,具有較大的通用性,但只支持命令行形式調用。二是PDE工具箱[4],可以求解特殊PDE問題,但有較大的局限性,比如只能求解二階PDE問題,并且不能解決偏微分方程組。它提供了GUI界面,可以從繁雜的編程中解脫出來,同時還可以通過FileSave As直接生成M代碼。
pdepe函數(shù)介紹
它的調用格式為 sol=pdepe(m,@pdefun,@pdeic,@pdebc,x,t)
輸入?yún)?shù): @pdefun:是PDE的問題描述函數(shù)
@pdebc:是PDE的邊界條件描述函數(shù)
@pdeic:是PDE的初值條件
輸出參數(shù):sol:是一個三維數(shù)組,sol(:,:,i)表示ui的解,換句話說uk對應x(i)和t(j)時的解為sol(i,j,k),通過sol,我們可以使用pdeval()直接計算某個點的函數(shù)值。
實例講解
例:試求解下面的偏微分
其中,F(xiàn)(x)=e5.73x-e-11.46x,且滿足初始條件u1(x,0)=1,u2(x,0)=0 及邊界條件
解:(1)對照給出的偏微分方程,根據(jù)標注形式,則原方程可以改寫為
%目標PDE函數(shù)
(2)邊界條件改寫為
%邊界條件函數(shù)
function[pa,qa,pb,qb]=pdebc(xa,ua,xb,ub,t)%a表示下邊界,b表示上邊界
(3)初值條件改寫為
%初值條件函數(shù)
(4)最后編寫主調函數(shù)
圖1 結果圖
2.2.1 pdetool介紹pdetool提供的用戶圖形界面(GUI)解法的使用步驟如下:
(1)在 Matlab命令窗口運行 pdetool,出現(xiàn) PDE Toolbox界面。
(2)用鼠標點一下工具欄上的“PDE”按鈕,在彈出的對話框中定義偏微分方程。
(3)用鼠標點一下工具欄上的區(qū)域按鈕,在下面的坐標系中畫出偏微分方程的大致定解區(qū)域。
(4)雙擊(3)中畫出的大致區(qū)域,在彈出的對話框中精確定位定解區(qū)域。
(5)用鼠標點一下工具欄上的邊界按鈕“墜Ω”,畫出區(qū)域的邊界。
(6)雙擊坐標系中的區(qū)域邊界,定義偏微分方程的邊界條件。
(7)用鼠標點工具欄上的剖分按鈕,對求解區(qū)域進行剖分。
(8)如果求拋物型或雙曲型方程的數(shù)值解,還需要通過“solve”菜單下的“parameters…”選項設置初值條件。
(9)用鼠標點一下工具欄上的“=”按鈕,就畫出偏微分方程數(shù)值解的圖形。通過“solve”菜單下的“Export Solution…”選項可以把數(shù)值解輸出到Matlab的工作間。
(10)如要畫出數(shù)值解的三維圖形,需要設置“plot”菜單下的“parameters…”選項。
2.2.2 實例講解
例:解Poisson方程-△u=f,邊界條件為齊次Dirichlet類型。
第一步:啟動MATLAB,鍵入pdetool,按回車鍵確定便可啟動GUI,然后在Options菜單下選擇Grid命令,打開柵格。柵格的使用,能使用戶容易確定所繪圖形的大小。
第二步:分步完成平面幾何造型:R1-C1-E1+R2+C2。用菜單或快捷工具,分別畫矩形R1、矩形R2、橢圓E1、圓C1、圓C2.畫圓時,首先選中橢圓工具,按鼠標右鍵并拖動即可,或者在按Ctrl的同時,拖動鼠標也可繪制圓。然后在Set formula欄,進行編輯并用算術運算符將圖形對象名稱連接起來,或刪除默認的表達式直接鍵入R1-C1-E1+R2+C2。若需要,還可進行儲存,形成M文件。
選擇Boundary菜單中Boundary Mode命令,進入邊界模式.單擊Boundary菜單中Remove All Subdomain Borders選項,去除子域邊界.如果想將幾何信息和邊界信息進行存儲,應選擇Boundary菜單中的Export Decomposed Geometry,Boundary Cond’s…命令,將它們分別存儲于g,b變量中,通過MATLAB形成M文件。
第三步:選取邊界,單擊Boundary菜單中Secify Boundary Conditions…選項,打開Boundary Conditions對話框,輸入邊界條件.本例取缺省條件,即將全部邊界設為齊次Dirichlet條件,邊界顏色顯示為紅色。
第四步:選擇PDE菜單中PDE Mode命令,進入PDE模式。單擊PDE菜單中PDE Specification…選項,打開PDE Specification對話框,設置方程類型。本例取缺省設置,類型為橢圓型,參數(shù) c,a,f分別為 1,0,10.
第五步:選擇Mesh菜單中Initialize Mesh命令,進行網(wǎng)格剖分。
第六步:選擇Mesh菜單中Refine Mesh命令,對網(wǎng)格加密。
第七步:選擇Solve菜單中Solve PDE命令,解偏微分方程并顯示圖形解。
第八步:單擊Plot菜單中Parameters…選項,打開Plot Selection 對話框,選中 Color,Height(3-D Plot)和 Show mesh三項.然后單擊Plot按鈕,顯示三維圖形解。
第九步:如果要畫等值線圖和矢量場圖,單擊Plot菜單中Parameters…選項,打開Plot Selection對話框,選中Contour和Arrows兩項。然后單擊Plot按鈕,可顯示解的等值線圖和矢量場圖。
偏微分方程是一門實用性很強的學科。對于理論研究和實際應用中提出的偏微分方程問題,由于其邊界和邊界條件復雜等原因,尋求解析解是非常困難甚至不可能的,利用計算機研究相應問題的數(shù)值解法是十分必要的。編程實現(xiàn)從偏微分方程數(shù)值求解全過程需要很好的理論基礎和編程技巧,而偏微分方程工具箱提供了研究和求解空間二維偏微分方程問題的一個強大而又靈活實用的環(huán)境.借助于這個工具,我們可以從繁瑣,共性的求解步驟中解脫出來而專注于問題的核心即問題的描述,定義及簡化,邊界條件的確定,求解方法和精度控制的選擇等,大大提高了求解效率。
[1]陸君安,尚濤,謝進,等.偏微分方程的 MATLAB 解法[M].武漢:武漢大學出版社,2001.
[2]王定江.應用偏微分方程[M].杭州:浙江大學出版社,2007.
[3]王家文,王皓,劉海.MATLAB7.0編程基礎[M].北京:機械工業(yè)出版社,2005.