MATLAB Function Reference |
在一空間變量和時間中,解拋物線與橢圓部份微分等式(parabolic and elliptic partial differential equations,PDEs)系統的初始-臨界值問題(initial-boundary value problems)
Syntax
sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan) sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan,options) sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan,options,p1,p2...)
Arguments
m |
與系統對稱性有關的參數。 |
pdefun |
|
icfun |
|
bcfun |
|
xmesh |
定義點在哪一個數值解時被 tspan 的值所要求的向量 [x0 , x1 , ..., xn ]。xmesh 的元素必須滿足 x0 < x1 < ... < xn 。xmesh 的長度必須 3 . |
tspan |
定義點在哪一個數值解時被 |
|
一些下面 ODE 解題器的選項,可在 |
p1,p2,... |
Description
sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan)
在一空間變量 和時間 中,解拋物線與橢圓 PDEs 系統的初始-臨界值問題。常微分等式(ODEs)經過積分,在 tspan
時間得到近似解。pdepe
函數在 xmesh
格線上傳回解答的值。
|
(1-1) |
PDEs 須保持 和 。在 間必須是有限的。 可以是 0、1 或 2,分別對應到 slab、cylindrical 或 spherical symmetry。如果 ,則 必須 0。
在 等式 1-1 中, 是變量而 是i來源項。對時間部份微分的連結被限制要乘上對角線矩陣 。矩陣的對角線元素不是零就是正數。是零的元素對應到橢圓等式,其餘的對應到拋物線等式至少必須有一個拋物線等式。如果 值是格線點, 對應到拋物線的的元素可能在孤立值的 消失。不連續的 和/或 會導致容許的物質界面提供在每個界面的格線點。
(1-2) |
|
(1-3) |
的元素不是零就是永不為零。注意,臨界狀態是由變量 表示,而不是 。除此之外,兩個係數裡只有 可以與 相依。
在呼叫 sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan)
時:
m
對應到 。xmesh(1)
和 xmesh(end)
分別對應到 和 。tspan(1)
和 tspan(end)
分別對應到 和 。pdefun
計算 、 和 (等式 1-1)。它有下列的形式[c,f,s] = pdefun(x,t,u,dudx)
輸入參數有純量 x
和 t
及向量 u
和 dudx
,它們分別求取解答 和解答對 部份積分的近似值。c
、f
和 s
都是直行向量。c
儲存矩陣 的對角線元素(等式 1-1)。
u = icfun(x)
bcfun
求取臨界狀態的 和 (等式 1-3)。它有下面的形式[pl,ql,pr,qr] = bcfun(xl,ul,xr,ur,t)
ul
是在左臨界 xl
= 的近似值而 ur
是在右臨界 xr
= 的近似值。pl
和 ql
是直行向量,它們對應到在 xl
求得的 和 ,同樣的,pr
和 qr
對應到 xr
。當 和 時,靠近 的解答界線要求變量 在 消失。pdepe
自動地利用這個臨界狀態且它忽略 pl
和 ql
傳回的值。
pdepe
以多維陣列 sol
的形式傳回解答。 = ui
= sol
(:
,:
,i
) 是解答向量 第 i
個元素的近似值元素 ui
(j
,k
) = sol
(j
,k
,i
) 在 = (tspan
(j
),xmesh
(k
)) 近似 。
ui
= sol
(j
,:
,i
) 在時間 tspan
(j
)、格線點 xmesh(:)
近似於解答的 i
元素 用 pdeval
來計算近似值和它不在 xmesh
點的部份微分。詳細情形請看 pdeval
。
sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan,options)
像之前一樣解答,不過用 odeset
函數產生的參數 options
值取代預設值。只有基本 ODE 解題器的部份選項可用於 pdepe
:RelTol
、AbsTol
、NormControl
、InitialStep
和 MaxStep
。移走輸入參數 options
的預設情形通常可以得到令人滿意的結果。詳細情形請看 odeset
。
sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan,options,p1,p2...)
傳另外的參數 p1
、p2
、... 到函數 pdefun
、icfun
和 bcfun
。如果沒有選項被設定,用 options
= []
。
Remarks
tspan
-
pdepe
函數用動態選擇時間步距和公式的 ODE 解題器做時間的積分。tspan
的元素只定義在你想要有解答的地方,且計算花費和 tspan
只有微弱的相關。
xmesh
-
在 xmesh
格線解答的二次近似值。一般來說,最好在解答變化快速的地方用近的空間格線。pdepe
沒有 自動選擇 中的格線。你必須在 xmesh
提供近似的固定格線。計算花費和 xmesh
有很大的關係。當 時,不需要用靠近 的格線評估協調單一性。
ode15s
完成。
pdepe
利用ode15s
的能力來解當 等式 1-1 含有橢圓等式時出現的微分-代數等式,還有解含有稀疏模式的 Jacobians。pdepe
會試著在時間積分之前調整它們。因為這個理由,傳回的初始時間解和其他時間相比可能會有判斷錯誤。如果格線很好,pdepe
可以找到接近給定值的前後一致初始狀態。如果 pdepe
顯示一個訊息表示找到前後一致初始狀態有困難,試著改進格線。Examples
Example 1. 這個例子示範明確的公式化、計算和圖示單一 ODE 的解。
我們可以很方便的使用副函數來安置所有需要被 pdepe
用到的函數在一個 M-檔。
function pdex1 m = 0; x = linspace(0,1,20); t = linspace(0,2,5); sol = pdepe(m,@pdex1pde,@pdex1ic,@pdex1bc,x,t); % Extract the first solution component as u. u = sol(:,:,1); % A surface plot is often a good way to study a solution. surf(x,t,u) title('Numerical solution computed with 20 mesh points.') xlabel('Distance x') ylabel('Time t') % A solution profile can also be illuminating. figure plot(x,u(end,:)) title('Solution at t = 2') xlabel('Distance x') ylabel('u(x,2)') % -------------------------------------------------------------- function [c,f,s] = pdex1pde(x,t,u,DuDx) c = pi^2; f = DuDx; s = 0; % -------------------------------------------------------------- function u0 = pdex1ic(x) u0 = sin(pi*x); % -------------------------------------------------------------- function [pl,ql,pr,qr] = pdex1bc(xl,ul,xr,ur,t) pl = ul; ql = 0; pr = pi * exp(-t); qr = 1;
在這個例子中,PDE、初始狀態和臨界狀態都以副函數 pdex1pde
、pdex1ic
和 pdex1bc
描述。
以下的圖顯示解答在 t
最終值的側面(i.e., t = 2)
。
Example 2. 這個例子示範 PDEs 系統的解法。問題在端點和之間都有臨界層。對小的 ,解答變化迅速。
的部份微分臨界狀態必須以變量的形式描述。在 pdepe
期待的形式下,左臨界狀態變成
對小的 ,解答變化迅速。程式選擇時間步距來解決迅速的改變,但是如果要看這個行為的圖,範例必須選擇輸出時間。因為有在 [0,1] 兩端點的解答的臨界層,所以範例在靠近 0
和 1
的地方設置格線點,來解決迅速變化的問題。通常,需要一些實驗來選擇一個可以顯露出解答行為的格線。
function pdex4 m = 0; x = [0 0.005 0.01 0.05 0.1 0.2 0.5 0.7 0.9 0.95 0.99 0.995 1]; t = [0 0.005 0.01 0.05 0.1 0.5 1 1.5 2]; sol = pdepe(m,@pdex4pde,@pdex4ic,@pdex4bc,x,t); u1 = sol(:,:,1); u2 = sol(:,:,2); figure surf(x,t,u1) title('u1(x,t)') xlabel('Distance x') ylabel('Time t') figure surf(x,t,u2) title('u2(x,t)') xlabel('Distance x') ylabel('Time t') % -------------------------------------------------------------- function [c,f,s] = pdex4pde(x,t,u,DuDx) c = [1; 1]; f = [0.024; 0.17] .* DuDx; y = u(1) - u(2); F = exp(5.73*y)-exp(-11.47*y); s = [-F; F]; % -------------------------------------------------------------- function u0 = pdex4ic(x); u0 = [1; 0]; % -------------------------------------------------------------- function [pl,ql,pr,qr] = pdex4bc(xl,ul,xr,ur,t) pl = [0; ul(2)]; ql = [1; 0]; pr = [ur(1)-1; 0]; qr = [0; 1];
在這個例子中,PDEs、初始狀態和臨界狀態被副函數 pdex4pde
、 pdex4ic
和 pdex4bc
描述。
See Also
function_handle
, pdeval
, ode15s
, odeset
, odeget
References
[1] Skeel, R. D. and M. Berzins, "A Method for the Spatial Discretization of Parabolic Equations in One Space Variable," SIAM Journal on Scientific and Statistical Computing, Vol. 11, 1990, pp.1-32.
pcolor | pdeval |