pdsolve - 連立偏微分方程式 (PDEs) の完全解を求める
使い方
pdsolve(PDE_sys, optional_1, optional_2,...)
パラメータ
PDE_sys - 連立 PDEs ; 不等式を含むことができます
optional_i - ( オプション ) 以下で記載されている任意のオーダーで与えられる引数
funcs - 不定関数または名前を含む集合かリスト - 順位付け可能
HINT = `+` - sum 表記で分離されている変数を用いて連立 PDE を解くことを示します
HINT = `*` - product 表記で分離されている変数を用いて連立 PDE を解くことを示します
HINT = TWS - xi を従変数の線形結合として、tanh(x) のべき級数としての進行波解の計算によって連立 PDE を解くことを示します
HINT = TWS(foo) - foo を数学関数の名前として、foo のべき級数としての進行波解の計算によって連立 PDE を解くことを示します
singsol=false - 方程式系が非線形である場合に特異解の計算を避けます
mindim=N - 解空間の次元が N 以下である場合に解の計算を避けます
parameters=P - P は順位が他の変数よりも低い状態で変数を解決している名前か関数のリストまたは集合
diffalg - 全ての連立 PDE に対して微分消去ステップが diffalg パッケージを使用して計算されるように要求します
|
説明
|
|
•
|
与えられた連立 PDE に ODEs 、代数法則、および不等式が含まれている場合を考えると、pdsolve は以下の場合で完全解を返します。1) 分離された方程式系が計算機内でそれらが利用できるものよりも情報を必要としなかった場合。2) 関連する連立 ODE を解くための dsolve ルーチンと同様の、単独の未知変数における PDE の副方程式系を解くための pdsolve ルーチンが、分離の過程で生じる PDE と ODE の副方程式系を解くことに成功した場合。複素数を扱う方程式系に依存する場合、ステップ 2) は完全にはうまくいかないかもしれません。しかしながら、ステップ 1) は系統的に、一般的にいうなれば、方程式系が一貫している場合は常に分離を行うことができます。
|
解法の過程
|
微分代数消去の過程に自然に備わっている原因で、この最初のステップは、常に以下のような PDE の副方程式系を生産します。:
|
|
- 各副方程式系の内部の方程式は全ての積分可能性条件を満足します ;
|
|
- 各副方程式系の非特異解の結合は元々の方程式系の一般解と特異解と等しいものとなります ;
|
|
- 与えられた元々の方程式は副定義されず、PDE の副方程式系の一つは一つの未知変数に依存しています。
|
|
2. 一つの未知変数に関する PDE の副方程式系は解かれ、未知変数が全ての他の副方程式系から移動します。微分消去の過程に自然に備わっている原因で、一つの未知変数が移動した後、これらは一つの未知変数に依存した PDE の方程式系が存在します。
|
|
ステップ 2 はステップ 1 が解かれる中で得られた全ての PDE の副方程式系で繰り返され、入力した元々の連立 PDE の解に辿り着きます。
|
•
|
一つの未知変数を含む PDE の方程式系のそれぞれを解く場合、二つの事態が生じるかもしれません。: 一つの PDE のみからなる副方程式系、あるいは多くの PDEs からなる副方程式系が生じることになります。前者の場合、pdsolve は古いルーチンを使用して問題を解きます。後者の場合、pdsolve は各ステップでの新しい変数としての微分不変量を導入した変数の交換のルーチンの集合を使用します。このアプローチは、PDe の副方程式系が本質的に非線形であった場合に問題を解くことを許します。
|
出力
•
|
うまくいく場合、pdsolve は与えられた連立 PDE の特異解を含んだ解の集合の列を返します。これらの特異解は、方程式系が非線形かつ解空間の次元 ( 基本的には現れる積分定数の数 ) が一般解の次元よりも低い場合の観察で同一視できる場合にのみ存在します。
|
•
|
pdsolve が部分的にうまくいく場合、出力は集合およびリストの列となります。集合には、リストが未解決の微分方程式を含む間は解が含まれています。より簡単に解くことが可能になるかもしれないので、これらの部分的な解を持つことは貴重です。例えば、未解決の方程式は数および微分オーダーがより低い PDEs の代わりとなる ODEs であるかもしれません。
|
•
|
pdsolve は上記の " 解法の過程 " のステップ 1 で得られた PDE の副方程式系のいずれも解くことができません。この場合、出力は PDE の副方程式系を含む各リストの列からなります。この出力の値は、これらの PDE の副方程式系が元々の方程式系を分離 ( 三角化として知られています。 ) したものとなります。連立 PDE に依存したこれらの三角化は問題を解く方向性として適切なステップを表記している可能性があります。
|
未知変数と順位付け
•
|
デフォルトでは、連立 PDE のみが与えられた場合、pdsolve は問題の未知変数としての方程式系で表記された全ての未知関数を考えます - これを考慮して解の変数と呼ばれています。このデフォルトは、関数または関数の名前を含む集合かリストとして表された解の変数を特別な引数として含んだ pdsolve を呼び出すことで変更することができます。
|
•
|
解の変数が集合として表された場合、順位付けは分離した方程式系が三角化を実行するための PDEtools[casesplit] コマンドによって選択されるための pdsolve によって行われます。解の変数が、例えば [f, g, h] のようにリストとして表された場合、分離の順位付けは、PDE の h のみに依存した副方程式系、他の PDE の {g, h} のみに依存した副方程式系、そしてその他の {f, g, h} のみに依存した副方程式系。もし三角化が成功すれば、pdsolve は最初に h のみからなる副方程式系を解き、次に求めた h と g を含む方程式系 {g,h} について解き、最後は求めた {h,g} と f を含む方程式系 {f,g,h} を解きます。
|
•
|
問題の未知変数のための " 解法の順位付け " の概念は、微分代数の " 順位付け " の概念 ( 詳細は rifsimp[ranking] をご参照ください。 ) と変わりません。実際、より詳細な pdsolve によって " 解法の順位付け " が認められます。diffalg または DEtools[Rif] パッケージを用いた " 順位付け " について考えます。例えば、問題の [{f, g}, h, {j, k}] として記述された未知変数について、そのうちの一つは、f が g よりも優先 ( またはその反対に ) されるか、h は三番目に順位付けされるか、j は k より前にくるかを pdsolve が決定しなければならないことを示しています。この柔軟性は、完全な微分形式、あるいは非可解な問題 ( pdsolve の使用で ) を可解にする解のオーダーの小変化を含む非線形連立 PDE を解く場合に極めて役に立ちます。
|
•
|
上記の解の変数および解のオーダーの表記に加え、一つはオプション引数 parameters=P を使用することができ、この P はより低い優先順位を含む解の変数を含む集合またはリストとなります。これの意味するところは、これらは以前の段落で説明されているように常に解の変数のリストの最後に表れることとなります。P がリストとして与えられた場合、内部の詳細な順位付けの選択のための規則は、解法の主変数についての以前の段落に記載されているものとなります。
|
その他のオプション
•
|
連立 PDE が非線形である場合、デフォルトでは、pdsolve の出力は分離された解の集合について、方程式系の特異解を含んでいます。これは特異な場合の計算 ( 分離された方程式系の内部 PDEtools[casesplit] の場合 ) とそれらを解いた計算の両方を含んでいます。しかしながら、多くのアプリケーションにおいて、特異な場合の計算は適切であるとはいえません。これらの計算は、しばしば、一般解の計算よりも時間を消費します。この理由は、オプション引数がこの振るまいを優先することにあり、これは与えられた singsol=false によって特異解が計算できないことがあるためです。
|
•
|
連立 PDE が解けた場合、解空間の次元 ( 通常は積分定数の数によって表記されています。 ) は、方程式系の " 明白な微分オーダー " だけでなく様々な因子に依存しています。しかしながら、いくつかのアプリケーションでは、これは興味の解法が最小の次元を持つ場合となります。この場合、N 以下 ( 正の整数 ) の次元の解を捨て、オプション mindim=N を使用します。非線形連立 PDE に対しては、このオプションは時間をかけない計算と低次元の場合の解で計算の過程にかかる時間の向上につながるかもしれません。一つの解しかもたない線形連立 PDE に対しては、pdsolve は N が解の次元よりも大きかった場合に NULL を返します。
|
•
|
sum か product によって変数分離を試みる連立 PDE の解法を pdsolve に要求することが可能です。この意図は、それぞれについてオプション引数 HINT = `+` あるいは HINT = `*`を使用することにあります。
|
•
|
デフォルトでは、pdsolve は連立 PDE に対する全ての微分消去の過程を DEtools[Rifsimp] パッケージを使用して実行します。このデフォルトはオプション引数 diffalg を使用することで変更することができ、列を呼び出すところではどこでも diffalg パッケージを使用して計算します。
|
|
|
例
|
|
以下の計算は Pentium II-400 laptop PC の Windows で実行しました。Maple は五個全ての例を 36 秒で解きました。
例 1.
常微分方程式 ( ODE ) の点対称性の計算で、対称生成作用素の無限小について決定された連立 PDE を解きました。Kamke's book の例 11 について考えたものとなります。:
>
|
with(PDEtools, casesplit, declare);
|
| (2.1) |
| (2.2) |
>
|
declare( y(x), prime=x );
|
| (2.3) |
>
|
ode[11] := diff(y(x),x,x)+a*x^r*y(x)^n = 0;
|
| (2.4) |
連立 PDE は対称性によって満足し、これは以下によって与えられた上記の ODE の対称生成作用素の無限小 [xi, eta] です。
>
|
declare( (xi,eta)(x,y) );
|
| (2.5) |
>
|
sys := [ gensys( ode[11], [xi,eta](x,y) ) ]:
for _eq in sys do _eq=0 end do;
|
これは二階の線形連立 PDE であり、二つの未知変数 {xi(x,y), eta(x,y)} と四つの方程式を含んでいます。この一般解は以下で与えられます。
| (2.7) |
対称性が定数倍によって与えられていることから、_C1 を落とすことができます。故に、不定の {a, n, r} について、ODE は一点の対称性をもちます。
連立 PDE の解は pdetest ( このコマンドは方程式系の各 PDE で指定された解が、そうあるか否かを確認することができます。 ) を使用することで確認することができます。
| (2.8) |
今、面白い問題は、: これらはパラメータが n と r の値の特別な問題に関連した他の解はどうなるのか?
問題の一つはより難しくなければならず、 n と r をパラメータとした pdsolve を用いた連立 PDE が非線形であることが答えとなります。
この特別な問題で、ODE の形式 y''+a*x^r*y^n = 0 から、n = 1 の場合は ODE が線形になり、対称性の計算が解の計算として同じものとなります。n と r および n <> 1 の微分値のための解で関心をもちます。最初のステップは連立 PDE にこの不等式を追加することになります。
>
|
sys1 := [op(sys), n<>1]:
|
次に n と r をパラメータとした pdsolve を表します。これは望む解となります。
>
|
sol1 := pdsolve(sys1, parameters={n,r});
|
| (2.9) |
>
|
map(pdetest, [sol1], sys1);
|
| (2.10) |
したがって、追加した解を持つ方程式系のための n と r の値の詳細が存在しています。n と r の整数と x で線形な xi を含む解の集合は、実際に前に計算された一般解の特別な場合となっていますが、他の解の集合はありません。
例 2.
二つの PDEs と 2 変数のものを一つと 1 変数のものを二つ含む三つの未知関数で重複決定された ( 線形 ) 方程式系の一般解の計算。
>
|
declare( F(r,s), H(r), G(s) );
|
>
|
sys2 := [-diff(F(r,s),r,r) + diff(F(r,s),s,s) + diff(H(r),r) + diff(G(s),s) + s = 0,
diff(F(r,s),r,r) + 2*diff(F(r,s),r,s) + diff(F(r,s),s,s) - diff(H(r),r) + diff(G(s),
s)-r = 0];
|
| (2.12) |
未知変数 G, H に関する解は以下で与えられます。
| (2.13) |
さらに、3 つの不定関数 _F1(s), _F2(r), _F3(s-r) に依存しています。
| (2.14) |
例 3.
一つの未知変数 f(x,y,z,t) について 3 つの PDEs で重複定義された一階の線形方程式系の解の計算。
>
|
sys3 := [-y*diff(f(x,y,z,t),x) + z^2*diff(f(x,y,z,t),z) + 3*t*z*diff(f(x,y,z,t),t) - 3*t^2-4*f(x,y,z,t)*z = 0,
-y*diff(f(x,y,z,t),y) - z*diff(f(x,y,z,t),z) - t*diff(f(x,y,z,t),t) + f(x,y,z,t) = 0,
-x*diff(f(x,y,z,t),y) - diff(f(x,y,z,t),z) = 0]:
for _eq in sys3 do _eq; end do;
|
解法のテクニックは微分不変量の使用であり、解は以下で与えられます。
| (2.16) |
| (2.17) |
例 4.
Burger 方程式とポテンシャルが可能な非線形方程式系の解の計算。
>
|
declare(u(x,t), v(x,t));
|
| (2.18) |
>
|
sys4 := [diff(u(x,t),t)+2*u(x,t)*diff(u(x,t),x)-diff(u(x,t),x,x) = 0,
diff(v(x,t),t) = -v(x,t)*diff(u(x,t),x)+v(x,t)*u(x,t)^2,
diff(v(x,t),x) = -u(x,t)*v(x,t)];
|
| (2.19) |
一般解、または主な場合は別として、非線形方程式系は微分消去の過程の分離の間に副方程式系を解くことで現れる特異解をもちます。場合によって、特異な場合の計算にはかなりの時間がかかっているかもしれません。一般の場合、解のみの計算には、オプション引数 singsol = false を与えることができます。
>
|
sol := pdsolve(sys4, [u,v], singsol=false);
|
| (2.20) |
| (2.21) |
singsol = false を与えない場合、pdsolve は一般と特異な場合の解の計算を試み、この例のようになります。
| (2.22) |
上記の特異な場合 v = 0 では、Burger 方程式は方程式系と解が Traveling Wave Solution で計算され中で残ります。方程式系におけるポテンシャル v の導入は、v が 0 でない場合でのみ一般解につながります。
詳細は pdsolve と同様に PDEtools[casesplit] をご参照ください。
| (2.23) |
例 5.
波動方程式のために対称の点を計算した場合に生じる 38 個の PDEs で重複定義された線形方程式系の解の計算。この方程式系は以下で与えられます。
>
|
declare( (xi,eta)(x,y,z,t,u) );
|
| (2.24) |
>
|
sys5 := [diff(xi[1](x,y,z,t,u),u) = 0,
diff(xi[1](x,y,z,t,u),x)-diff(xi[2](x,y,z,t,u),y) = 0,
diff(xi[2](x,y,z,t,u),u) = 0,
-diff(xi[1](x,y,z,t,u),y)-diff(xi[2](x,y,z,t,u),x) = 0,
diff(xi[3](x,y,z,t,u),u) = 0,
diff(xi[1](x,y,z,t,u),x)-diff(xi[3](x,y,z,t,u),z) = 0,
-diff(xi[3](x,y,z,t,u),y)-diff(xi[2](x,y,z,t,u),z) = 0,
-diff(xi[1](x,y,z,t,u),z)-diff(xi[3](x,y,z,t,u),x) = 0,
diff(xi[4](x,y,z,t,u),u) = 0,
diff(xi[3](x,y,z,t,u),t)-diff(xi[4](x,y,z,t,u),z) = 0,
diff(xi[2](x,y,z,t,u),t)-diff(xi[4](x,y,z,t,u),y) = 0,
diff(xi[1](x,y,z,t,u),t)-diff(xi[4](x,y,z,t,u),x) = 0,
-diff(xi[1](x,y,z,t,u),x)+diff(xi[4](x,y,z,t,u),t) = 0,
diff(eta[1](x,y,z,t,u),y,y)+diff(eta[1](x,y,z,t,u),z,z)-diff(eta[1](x,y,z,t,
u),t,t)+diff(eta[1](x,y,z,t,u),x,x) = 0, diff(eta[1](x,y,z,t,u),u,u) = 0,
diff(eta[1](x,y,z,t,u),u,x)+diff(xi[1](x,y,z,t,u),x,x) = 0,
diff(xi[1](x,y,z,t,u),x,y)+diff(eta[1](x,y,z,t,u),u,y) = 0,
-diff(xi[1](x,y,z,t,u),y,y)+diff(eta[1](x,y,z,t,u),u,x) = 0,
diff(xi[1](x,y,z,t,u),x,z)+diff(eta[1](x,y,z,t,u),u,z) = 0,
diff(xi[1](x,y,z,t,u),y,z) = 0,
-diff(xi[1](x,y,z,t,u),z,z)+diff(eta[1](x,y,z,t,u),u,x) = 0,
-diff(eta[1](x,y,z,t,u),t,u)-diff(xi[1](x,y,z,t,u),t,x) = 0,
diff(xi[1](x,y,z,t,u),t,y) = 0, diff(xi[1](x,y,z,t,u),t,z) = 0,
diff(xi[1](x,y,z,t,u),t,t)+diff(eta[1](x,y,z,t,u),u,x) = 0,
-diff(xi[2](x,y,z,t,u),z,z)+diff(eta[1](x,y,z,t,u),u,y) = 0,
diff(xi[2](x,y,z,t,u),t,z) = 0,
diff(xi[2](x,y,z,t,u),t,t)+diff(eta[1](x,y,z,t,u),u,y) = 0,
diff(xi[3](x,y,z,t,u),t,t)+diff(eta[1](x,y,z,t,u),u,z) = 0,
diff(eta[1](x,y,z,t,u),u,x,x) = 0, diff(eta[1](x,y,z,t,u),u,x,y) = 0,
diff(eta[1](x,y,z,t,u),u,y,y) = 0, diff(eta[1](x,y,z,t,u),u,x,z) = 0,
diff(eta[1](x,y,z,t,u),u,y,z) = 0, diff(eta[1](x,y,z,t,u),u,z,z) = 0,
diff(eta[1](x,y,z,t,u),t,u,x) = 0, diff(eta[1](x,y,z,t,u),t,u,y) = 0,
diff(eta[1](x,y,z,t,u),t,u,z) = 0];
|
| (2.25) |
| (2.26) |
解は以下で与えられます。
| (2.27) |
| (2.28) |
例 6.
五つの未知変数、四つの PDEs からなる以下の非線形連立 PDE は、Landau と Lifshitz の " 流体力学 " に関する参考書で考察されています。より一層の表示と単純化の入力を得ます。
>
|
PDEtools[declare]((u,w,Tau)(x,z,t),p(x,z),Ts(z));
|
>
|
with(DEtools,diff_table);
|
| (2.30) |
>
|
U := diff_table(u(x,z,t)): W := diff_table(w(x,z,t)):
P := diff_table(p(x,z)): T := diff_table(Tau(x,z,t)):
|
連立 PDE は :
| (2.31) |
>
|
e2 := U[t] + U[]*U[x] + W[]*U[z] = -P[x] + sigma*(U[x,x]+U[z,z]);
|
| (2.32) |
>
|
e3 := W[t]+U[]*W[x]+W[]*W[z] = -P[z]+sigma*(W[x,x]+W[z,z])+sigma*rho*(T[]-Ts(z));
|
| (2.33) |
>
|
e4 := T[t]+U[]*T[x]+W[]*T[z] = T[x,x]+T[z,z];
|
| (2.34) |
この方程式系は 2-D ( x, z 座標 ) 流体層を説明し、重力場に垂直な温度勾配 ( T(x,z,t) の Nabla ) の大気を受けます。定数 sigma と rho は粘着性、熱拡散率、重力定数、そして熱膨張の係数に関係しています。進行波の解の集合は、この方程式系に対して 2 秒 ( 典型的な PC 2 GigaHertz, 2004 ) で計算されます。余分な定数解を除いた非特異な場合 :
>
|
pdsolve( sys, [u,w,Tau,p,Ts], HINT = TWS, singsol = false );
|
| (2.35) |
p = constant に対し、この方程式系は WeierstrassP 楕円関数の項での解を認めます。; これは非特異解の列の最後にきます (operand [-1]) 。
>
|
pdsolve( sys, [u,w,Tau,p,Ts], HINT = TWS(WeierstrassP), singsol = false, remove_redundant = false)[-1];
|
| (2.36) |
|
|
参照
|
|
casesplit, dchange, declare, DEtools, diff, diffalg, dpolyform, dsolve, dsolve,system, gensys, int, odetest, pdetest, PDEtools, pdsolve, Rif, TWSolutions, solve
|
|
参考文献
|
|
|
E.S. Cheb-Terrab "A Computational Approach for the Exact Solving of Systems of Partial Differential Equations", submitted to Computer Physics Communications (2001).
|
|
|