DifferentialAlgebra[DifferentialRing] - 従属変数および独立変数の階数を伴う微分多項式環の作成
|
使い方
|
|
DifferentialRing (blocks = [...], derivations = [...], arbitrary = [...])
DifferentialRing (R, blocks = [...], derivations = [...], arbitrary = [...])
|
|
パラメータ
|
|
blocks = [...]
|
-
|
右辺は従属変数のリストです。変数のランクを表すサブリストが含まれる場合があります。
|
derivations = [...]
|
-
|
右辺は独立変数のリストです。変数のランクを表します。
|
arbitrary = [...]
|
-
|
右辺は dependent(従属)変数のリストです。変数は不定(arbitrary)の、すなわち、代数的に独立な関数です。
|
R
|
-
|
微分多項式環 または微分イデアル:与えられた際に、blocks、derivations または arbitrary の追加指定が R 内にあるものと置き換えられます。
|
NOTE
|
-
|
blocks、derivations または arbitrary の右辺のリストが単一の要素を含むとき、この右辺は 、リスト内に囲まれることなくその要素自体となることができます。
|
|
|
|
|
モデルの説明
|
|
•
|
関数の呼び出し DifferentialRing (derivations = ..., blocks = ..., arbitrary = [...])は、従属および独立変数のランクである微分多項式環を作成し、それを返します。このとき係数体を拡張するオブジェクトを指定する場合があります。
|
–
|
blocks = [...]の右辺は従属変数のリストです。変数のサブリストを含む場合があり、入れ子にされたサブリストの 1 つの水準のみが許容されます。微分方程式(DE)系の文中においては、これらの従属変数は通常、解くための変数を表します。
|
–
|
derivations = [...] の右辺は独立変数のリストです。従属変数がとりうる依存関係を指定します。
|
–
|
arbitrary = [...] の右辺は代数的に独立な不定のオブジェクトのリストです。従属変数(derivations で指定された 1 つまたは多数の変数の関数)、または、その他の変数(derivations で指定されるもの以外)とすることができます。DE 系の文中においては、これらの不定オブジェクトは通常、系およびその解をパラメータ化する解くための変数ではない変数を表します。
|
•
|
たとえば RosenfeldGroebner コマンドを使用して、研究対象の DE 系が関数の依存関係を明示した標準の Maple の関数表記の形で与えられると、名前のみを与えることにより従属変数を DifferentialRing に渡す作業は、自然と簡略化されます。DE 系に取り組むとき、各従属変数の依存関係はDE 系にみられる関係となります。
|
•
|
従属変数を関数表記内の DifferentialRing に渡すことは、従属変数の一部が derivations で指定された独立変数のすべてに依存しない場合にのみ該当し、研究対象の DE 系は関数の依存関係を明示しない jet notation で与えられます。この場合、RosenfeldGroebner コマンドまたは他の DifferentialAlgebra コマンドを使用して DE 系に取り組むとき、その依存関係は blocks = ... および arbitrary = ... で明確に指定されるものとなり、のように、依存関係が示されないこれらの 2 つのリストの各従属変数は、derivations で指定されたものとみなされます。
|
•
|
DifferentialRing は、blocks, derivations または arbitrary 部分のいずれかを変更することにより、与えられたものから新しい微分環を作成するためにも使用されます。この目的のために、最初の引数は、埋め込み微分環が新しい微分環を作成するための出発点として使用される、微分環または(たとえば、RosenfeldGroebner によって返される)微分イデアルとすべきです。
|
|
ランク
|
|
•
|
blocks および derivations のリストは併せて、R のランク、すなわち、独立変数に対する従属変数の導関数の順序付けを提供します。簡単に言うと、blocks (従属変数または従属変数のサブリスト) 内の要素は、elimination(消去による)ランクを使用して互いの間で順位付けられ、サブリスト内の要素は orderly(次数による)ランクを使用して順位付けられます。
|
•
|
elimination ランクでは 、最も左にある従属変数またはブロック内で最も左にあるサブリストのすべての従属変数の導関数が、右側の変数の導関数より高く順位付けされます。orderly ランクでは、高次な微分の導関数が低次な微分の導関数より高く順位付けされ、微分の次数が同じ場合には、最も左にある変数の導関数から高く順位付けされます。したがって、たとえば、blocks = [u, [v, w]] および derivations = [x, t] の場合、1 次および 2 次の導関数 は、 に従って順位付けされます(SortByRankを参照) 。
|
|
役に立つ一般的なランク
|
|
•
|
積分可能性条件に関して DE 系を簡単化する際に、可能な限り低い微分の次数で表される DE 系の標準形の一種を取得し、DE 系が矛盾している(解を持たない)かどうかを自動的に検出します。この目的のために、たとえば blocks = [[u, v, w]] を示すorderly ランクを使用します。
|
|
|
•
|
このコマンドは DifferentialAlgebra パッケージの一部です。with(DifferentialAlgebra)コマンドの実行後に DifferentialRing(...) の形式を使用して呼び出すことができます。また、DifferentialAlgebra[DifferentialRing](...)の形式を使用して直接呼び出すことも可能です。
|
|
|
アプリケーションと例題
|
|
DifferentialRing コマンドに続く内容が例と共に示され、DifferentialAlgebra パッケージを使用して最も多く実行される数学的計算に関連して、構文だけでなく最も一般的な型のランクが説明されています。使用されている例は RosenfeldGroebner コマンドのページで示されたものと同一です。
>
|
with(DifferentialAlgebra);
|
| (4.1) |
DifferentialAlgebra パッケージを使用して計算を開始する前に、以下の例に示されるように DifferentialRing コマンドを用いて、ランクを伴う適切な differential indeterminate (従属変数)および derivation variables (独立変数)を定義する必要があります。
|
微分方程式内の矛盾の検出:orderly ランク
|
|
>
|
p1 := diff(u(x, y), x) + v(x, y) - y;
|
| (4.1.1) |
>
|
p2 := diff(u(x, y), y) + v(x, y);
|
| (4.1.2) |
>
|
p3 := diff(v(x, y), x) - diff(v(x, y), y);
|
| (4.1.3) |
|
これらの方程式の操作を開始する前に、 に示されたように、従属変数と独立変数、これらの変数のランク(順位付け) 、および、リスト内のリストのすべての変数を示します。
|
>
|
R := DifferentialRing(blocks = [[u, v]], derivations = [x, y]);
|
| (4.1.4) |
>
|
RosenfeldGroebner({p1, p2, p3}, R);
|
| (4.1.5) |
|
|
常微分方程式 を解く:elimination ランク
|
|
|
常微分方程式系のchain resolutionを実行するには、elimination ランクを使用します。以下の未知の関数 の微分多項式の集合 によって定義される微分方程式系を検討します。
|
>
|
S := [diff(x(t), t) - x(t)*(x(t) + y(t)), diff(y(t), t) + y(t)*(x(t) + y(t)), diff(x(t), t)^2 + diff(y(t), t)^2 + diff(z(t), t)^2 - 1];
|
| (4.2.1) |
>
|
R := DifferentialRing(blocks = [z, y, x], derivations = [t]):
|
>
|
G := RosenfeldGroebner(S, R);
|
| (4.2.2) |
|
上記の結果から 2 つのケースが考えられます。この上述の elimination ランクを満足させる第 1 のケースの方程式は、次のようになります。
|
>
|
Equations(G[1], solved);
|
| (4.2.3) |
|
提案された elimination ランクを同様に満足させる第 2 の方程式は、次のようになります。
|
>
|
Equations(G[2], solved);
|
| (4.2.4) |
|
|
制限付き方程式:orderly ランクおよび混合型のランク
|
|
>
|
P := [m*diff(y(t), t, t) + T(t)*y(t) + g, m*diff(x(t), t, t) + T(t)*x(t), x(t)^2 + y(t)^2 - l^2];
|
| (4.3.1) |
•
|
振り子および特にすべての代数制約をモデル化する方程式系のゼロの地点で消失する最低次の方程式(すなわち、次数が である方程式)を特定するためには、 のように、リスト内のリストのすべての従属変数を伴うorderly ランクを使用します。
|
>
|
R := DifferentialRing(blocks = [[T, x, y]], derivations = [t], arbitrary = [m, l, g]):
|
>
|
G := RosenfeldGroebner(P, R);
|
| (4.3.2) |
>
|
Equations(G[1], solved);
|
| (4.3.3) |
>
|
Equations(G[2], solved);
|
| (4.3.4) |
|
RosenfeldGroebner の出力の 2 番目のコンポーネントは振り子の平衡に対応します。出力の 1 番目のコンポーネントから、実際の動きは制限付きの 2 つの 1 次微分方程式によって表されることがわかります。つまり、解は 2 つの不定係数のみに依存します。
|
>
|
RM := DifferentialRing(R, blocks = [T, [x, y]]);
|
| (4.3.5) |
>
|
GM := RosenfeldGroebner(P, RM);
|
| (4.3.6) |
>
|
Equations(GM[1], solved);
|
| (4.3.7) |
>
|
Equations(GM[2], solved);
|
| (4.3.8) |
|
ここで、振り子の動きは の 2 次微分方程式によって与えられることに注意します。次に、 および 1 番目の導関数に関して、ラグランジュ乗数が明示的に与えられます。
|
|
|
偏微分方程式を解く:辞書式順序の elimination ランク
|
|
|
偏微分方程式の優決定の方程式系を解くには、まず系の解によって満たされる常微分方程式を計算するのが興味深い方法です。この目的のためには、辞書式順序のランクを選択する必要があります。バーガーズ方程式の対称な群の無限小生成作用素を定義する微分方程式系 を検討します。
|
>
|
Burgers_pde := diff(u(t, x), t) = diff(u(t, x), x, x) - u(t, x)*diff(u(t, x), x);
|
| (4.4.1) |
>
|
BurgersSymm := PDEtools:-DeterminingPDE(Burgers_pde, u(t, x), [V1, V2, V3](t, x, u));
|
| (4.4.2) |
|
に示されるように、変数のランクを決定する際に lex を使用して、この方程式系の解によって満たされる に対する常微分方程式を探します。
|
>
|
R := DifferentialRing(blocks = [lex[V3, V2, V1]], derivations = [u, x, t]);
|
| (4.4.3) |
>
|
G := RosenfeldGroebner(map(lhs - rhs, BurgersSymm), R);
|
| (4.4.4) |
>
|
Equations(G[1], solved);
|
| (4.4.5) |
|
詳細は RosenfeldGroebner を参照してください。
|
|