Mathematics    

MATLAB 偏微分方程式ソルバ

この章では、つぎのことを記述します。

PDE ソルバ

MATLAB PDE ソルバ、pdepeは、一つの空間変数と時間を使って、放物線型、楕円型 PDEsシステムに対する初期値-境界値問題を解きます。システムの中で、少なくとも放物線方程式が一つ必要になります。

ユーザが設定するノードをベースに2次の空間的な離散化を使って、pdepe ソルバは、PDEsをODEsに変換します。離散化手法は、[7]に記述されています。時間積分は、ode15sを使って行ないます。 pdepeソルバは、式 17-3 が、楕円方程式を含む場合に生じる微分代数方程式を解くためと指定したスパースパターンをもつヤコビアンの取り扱いに、ode15sの機能を使っています。 ode15s は、時間ステップと定式化をドラマテックに変化させます。

離散化の後、楕円方程式は、代数方程式になります。楕円方程式に対応した初期条件の要素が、離散化と整合性を保っていない場合、pdepe は、時間積分が始まる前にそれらを調整しようとします。このため、最初の時刻に対して出力される解は、他の時間のものと比べて離散化誤差をもっています。メッシュが十分細かい場合、pdepeは、与えられた初期条件に似た整合性のある初期条件を見つけることができます。pdepeが、整合性のある初期条件を見つけることが困難であるメッセージを表示する場合、メッシュをより細かく分割してください。放物線方程式に対応する初期条件ベクトルの要素に対して、調整は必要ありません。

PDE ソルバの基本的なシンタックス

ソルバの基本的なシンタックスは、つぎの型をしています。

入力引数は、つぎのものです。

m

問題の対称性を指定します。m が、0 の場合 = slab, 1の場合 = cylindrical、2の場合 = sphericalです。 式 17-3の中の m に対応します。

pdefun
PDE の要素を定義します。式 17-3の中の項, , を計算し、つぎの型をしています。
    [c,f,s] = pdefun(x,t,u,dudx)
    
ここで、xt はスカラ、ududx はベクトルで、解に関するその偏微分係数を近似します。c, f, s は列ベクトルです。c は、行列の対角要素を保存します。
icfun
初期条件を計算します。つぎの型をしています。
    u = icfun(x)
    
引数xと共にコールすると、icfun は、列ベクトルuの中のxで解要素の初期値を計算し、出力します。

bcfun
境界条件の項 を計算します。つぎの型をしています。
    [pl,ql,pr,qr] = bcfun(xl,ul,xr,ur,t)
    

ここで、ul は、左境界での近似解 で、ur は、右境界での近似解です。 plql は、xlで計算したの対角に対応した列ベクトルです。同様に、prqr が、xrに対応します。の場合、の近傍での解の制約は、で、流量がゼロになることを必要とします。 pdepe は、この境界条件を自動的に課し、 plqlの中に戻る値を無視します。

xmesh
tspan の中のすべての値に対して必要となる数値解に位置を設定するベクトル [x0, x1, ..., xn] 。 x0xn は、それぞれ、に対応します。

解の2次近似は、xmeshの中で指定したメッシュ上で行われます。一般に、解に急激に変化する部分では、非常に密なメッシュ点を使うことがベストです。pdepe は、 で、メッシュの選択を自動的には行ないません。ユーザは、適切な固定されたメッシュをxmeshに与える必要があります。コストは、xmeshの長さに強く関連しています。の場合、座標の特異性のために、の近傍で細かいメッシュを使う必要はありません。

xmesh の要素は、x0 < x1 < ... < xnを満足している必要があります。xmesh の長さは、  3でなければなりません。
tspan

xmeshの中のすべての点に対して、必要となる解の点を設定するベクトル[t0, t1, ..., tf] 。t0tf は、それぞれ、に対応します。

pdepe は、ODEソルバを使って、時間積分を行うときに、動的に時間ステップと定式化を選択します。tspan の中で設定した点での解は、積分の定式を連続的に拡張する手法を使って得られます。tspanの要素は、ユーザが知りたい位置を指定するもので、コストは、tspanの長さにわずかに影響されます。

tspanの要素は、t0 < t1 < ... < tfを満足します。tspanの長さは、 3を満足しなければなりません。

出力引数 sol は、つぎのような3次元配列になります。

PDE ソルバの付加的な引数

よりアドバンスなアプリケーションに対して、入力引数として、ソルバオプションと付加的なパラメータをPDE関数に渡すことができます。

options
オプションパラメータの構造体は、デフォルトの積分プロパティを変更します。これは、7番目の入力引数として設定します。
    sol = pdepe(m,pdefun,icfun,bcfun,...
                xmesh,tspan,options)
    
詳細は、PDE ソルバ性能の改良 を参照してください。
p1,p2...
ソルバが、pdefun, icfun, bcfunに渡すパラメータ
    sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan,...
                options,p1,p2...)
    
ソルバは、options引数の後に設定した任意の入力引数を、pdefun, icfun, bcfun に、コールする度に渡します。オプションがない場合、options = [] を使います。pdefun引数リストの中で、パラメータは、x, t, u, dudxの後に設定されます。
    f = pdefun(x,t,u,dudx,p1,p2,...)
    
icfun 引数リストの中で、パラメータは、xの後に続きます。
    res = bcfun(x,p1,p2,...)
    
bcfun 引数リストの中で、パラメータは、xl, ul, xr, ur, tの後に続きます。
    res = bcfun(xl,ul,xr,ur,t,p1,p2,...)
    
例題のデモpdex3を参照してください。


 PDE 問題の紹介 PDE 問題の表現