DifferentialAlgebra[RosenfeldGroebner] - RosenfeldGroebner 関数
|
使い方
|
|
RosenfeldGroebner(sys, R, opts)
|
|
パラメータ
|
|
sys
|
-
|
微分方程式または微分不等式のリストか集合であり、独立変数と従属変数およびこれらの変数の導関数はすべて有理数です。
|
R
|
-
|
独立変数と従属変数およびこれら変数のランク(順序付け)を指定する DifferentialRing によって作成される微分多項式環
|
additionally
|
-
|
(オプション) arbitrary および relations と共に使用して、微分環の arbitrary に追加します。
|
arbitrary
|
-
|
(オプション) arbitrary オブジェクトを指定する関数または名前、あるいは、関数や名前のリストであり、微分環 R で指定されたものに優先するか、または、additionally が与えられる場合には、微分環 R で指定されたものに追加されます。
|
attributes
|
-
|
(オプション)返される微分鎖(ケース)に期待される属性を指定します。
|
discardlowerdimension
|
-
|
(オプション) (微分の)次元のみに基づいて存在しないケースを無視します。
|
notation
|
-
|
(オプション) jet, tjet, diff または Diff の表記のいずれかに出力されるよう要求します。
|
relations
|
-
|
(オプション) arbitrary オブジェクトによって満たされるrelations を指定します。
|
singsol
|
-
|
(オプション) all (デフォルト)、none 、または、essential を指定して、すべての計算を要求する、どの計算も要求しない、または、真性特異なケースのみを計算することが可能です。
|
|
|
|
|
モデルの説明
|
|
•
|
方程式 sys の系が(algebraic または algebraic = algebraic の形式の)方程式および (algebraic <> 0 の形式の)不等式を含む場合、簡単な表現でいうと、RosenfeldGroebner(sys, R) は、与えられた式系 sys を複数のケースに分割し、その各々が Equations および Inequations によって指定されます。これらのケースの 唯一のケースは一般的(general)ケースです。それ以外は sys が非線形な場合にのみ存在可能な特異的(singular)ケース です。返される各ケースにおいて、他の方程式の結果生じる方程式はなく、すべての積分可能性条件が考慮されます。式系 sys とこれらの各ケースの式系の間の関係は、sys の一般的および特異的な解が、返される式系の一般的な解を合わせたものによって与えられるというものです。注意:返されるケースおよびそこに現れる方程式と不等式 の数は、基本的に従属変数および独立変数が R 内でどのようなランクになるかによって決まります。
|
•
|
さらに技術的に言うと、RosenfeldGroebner(sys, R) は、R のランクに関して regular differential chain によって示される、累乗の微分イデアルの交わりとして、sys によって生成された微分イデアルの累乗の表現を返します。
|
|
備考:デフォルトでは、微分環の定義時に従属変数として記述されなかったすべての記号変数および関数は、自動的に arbitrary とみなされます(DifferentialRing に arbitrary として指定されたものと等同とみなされます)。
|
•
|
RosenfeldGroebner の出力における regular differential chain は、属性 differential, autoreduced, primitive, squarefree, normalized および coherent を保有するものとみなされます。属性に関する詳細は、DifferentialAlgebra を参照しください。
|
•
|
返されるリストは空の場合があります。その場合、 [R50, chapter II, Theorem of zeros]により、sys によって生成される微分イデアルの累乗は unit イデアルであり、sys には解がありません。
|
•
|
sys が空の場合、返される表現は、ゼロのイデアルを記述する単一の regular differential chain を含みます。
|
•
|
関数の呼び出し RosenfeldGroebner(sys, R) は、sys 内にある不等式によって生成される乗法の集合によって飽和した sys によって生成される微分イデアルの累乗の表現を返します。詳細は DifferentialAlgebra, Glossary を参照してください。
|
•
|
式系 sys は有理微分分数(rational differential fraction)を含むことがあります。その場合、有理分数の分母は自動的に不等式とみなされます。渡される式系には、 および の形式の表現など、陽の関係演算子が含まれる可能性があります。
|
|
|
オプション
|
|
•
|
additionally は arbitrary と併せて使用し、DifferentialRing を使用して微分環を作成する際に arbitrary として宣言されるリストに変数を追加します。
|
•
|
arbitrary = ... 不定のオブジェクトを指定する関数または名前、あるいは関数や名前のリスト:このオプションを使用すると、 RosenfeldGroebner に渡される微分環 R で指定されたものとは異なる不定のオブジェクトを使用して計算を実行したり、あるいは、 additionally が併せて渡される場合には、R 内のオブジェクトに不定のオブジェクトを追加したりすることができるようになります。
|
•
|
attributes = L において、L がキーワード differential, prime, primitive, squarefree, coherent, autoreduced, normalized の一部を含むリストである場合:このオプションを使用すると、関数の動きを修正することができます (たとえば、differential が省略された場合、分解は純粋に代数的なものになり、normalized が省略された場合、返された regular differential chain は正規化する必要がありません)。これらの属性の一部の存在は必然的にそれ以外の属性の存在も示唆する可能性があります。詳細は Glossary を参照してください。
|
•
|
discardlowerdimension = nocase, safecase, odecase, pdecase.:このオプションは、次元(微分のケースにおける微分の次元)が積分可能性条件に関して簡単化された入力済み方程式の数より小さいコンポーネントがある場合、それをすべて無視することにより、 RosenfeldGroebner によって実行される分割を制御します。
|
–
|
safecase がデフォルトの値です。このオプションは、微分でないケース、および、単一入力方程式のケースでのみ有効となります。これらの 2 つのケースは理論的に証明されています。
|
–
|
odecase は一般的な連立常微分方程式 (ODE)にもオプションを適用します。このオプションは、このケース対して予想を実行します [R50, Questions for investigation, 10]。
|
–
|
pdecase は一般的な連立偏微分方程式(PDE)にもオプションを適用します。このオプションは、このケース対して予想を実行します。
|
•
|
notation = jet, tjet, diff または Diff:関数の呼び出し結果に使用される表記を指定します。指定されない場合、入力の表記が使用されます。
|
•
|
memout = nonnegative:計算に使用されるメモリの制限を MB 単位で指定します。デフォルトはゼロです(メモリアウトは発生しません)。
|
•
|
relations = ... において、右辺が微分環 R の arbitrary オブジェクトによって満たされる、または、arbitrary オプションと共に渡される方程式の集合である場合:これらの relations に含まれるすべての関数および名前(記号変数)は、自動的に不定(arbitrary)とみなされることに注意します。これは、微分環 R 内において arbitrary であると宣言されていない場合であっても同様です。また、与えられた relations 内または同じ orderly (次数に従った)ランクのサブリスト内にみられるオブジェクトより、階数の低い微分環 R のすべての 独立変数(dependent variable) についても、不定であるとみなされます。
|
•
|
singsol = all, essential, none.:このオプションは RosenfeldGroebner が実行する分割を制御します。
|
–
|
essential は、可能な場合おいて必ず、たとえば、sys が 1 つの方程式で構成されている場合には必ず、返される分解が重複していないことを確認します。
|
–
|
none を指定すると、RosenfeldGroebner は最大 1 つの regular differential chain を返します。返される微分鎖は、このオプションを設定しない場合に計算される最初の鎖となります。多くの場合、この最初の正則鎖は一般コンポーネントとみなすことができますが、この概念は概して十分に代数的なものではありません。
|
|
|
アプリケーションと例題
|
|
|
主な使用法
|
|
>
|
with(DifferentialAlgebra);
|
| (5.1.1) |
•
|
注意:DifferentialAlgebra パッケージを使用して計算を開始する前に、以下の例に示されているように、DifferentialRing コマンドを使用して、ランクを伴う適切なdifferential indeterminate (従属変数)および derivation variables (独立変数)を定義する必要があります。
|
|
積分可能性条件を考慮に入れた結果の除去と簡単化の実行
|
|
|
RosenfeldGroebner を使用して式系に取り組む際には、返される各ケースにおいて、そのケースの他の方程式の結果となる方程式は 1 つもなく、すべての積分可能性条件が考慮されます。この簡単化の過程において系が矛盾している(たとえば、 に到達する)ことがわかると、方程式に解がないことを意味する空のリストが 返されます。わかりやすく説明するため、以下の方程式を検討します。
|
>
|
p1 := diff(v(x, y), y) + u(x, y);
|
| (5.1.1.1) |
>
|
p2 := diff(u(x, y), x) - diff(u(x, y), y);
|
| (5.1.1.2) |
|
ここで、従属変数と独立変数および これらの変数の順序付け(ランク)を示します。この例の目的は、結果を除去し、積分可能性条件を考慮に入れることのみであるため、 または となりうる orderly ランクを使用します(DifferentialRing参照)。
|
>
|
R := DifferentialRing(blocks = [[u, v]], derivations = [x, y]);
|
| (5.1.1.3) |
|
次に、以下のように および で構成される方程式を検討します。
|
>
|
sys := expand([p1 = 0, p2 = 0, diff(p1*p2, x) = 0, diff(p2, y) = 0]);
|
| (5.1.1.4) |
|
構成から、3 番目と 4 番目の方程式 diff(p1*p2, x) = 0 と diff(p2, y) = 0 がもたらす追加情報が何もないことがわかります。つまり、これらの方程式は の結果であり、よって、返された系では簡単化されています。
|
>
|
simplified_sys := RosenfeldGroebner(sys, R);
|
| (5.1.1.5) |
>
|
Equations(simplified_sys);
|
| (5.1.1.6) |
>
|
p3 := diff(v(x, y), x) + u(x, y) - y;
|
| (5.1.1.7) |
|
RosenfeldGroebner は方程式 について何を教えてくれるでしょうか。
|
>
|
RosenfeldGroebner({p1, p2, p3}, R);
|
| (5.1.1.8) |
>
|
diff(p1 = 0, x) - diff(p3 = 0,y) - (p2 = 0);
|
| (5.1.1.9) |
|
従って、3 つの方程式は同時に満たされることはなく、この系は矛盾しており、解は存在しません。
|
|
|
連立常微分方程式の解を求める: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];
|
| (5.1.2.1) |
>
|
R := DifferentialRing(blocks = [z, y, x], derivations = [t]):
|
>
|
G := RosenfeldGroebner(S, R);
|
| (5.1.2.2) |
|
上記の結果において、2 つのケースがみられます。この前述の elimination ランクを満たす 1 番目のケースの方程式は、次のようになります。
|
>
|
Equations(G[1], solved);
|
| (5.1.2.3) |
|
示された elimination ランクを同様に満たす 2 番目のケースの方程式は、次のようになります。
|
>
|
Equations(G[2], solved);
|
| (5.1.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];
|
| (5.1.3.1) |
•
|
振り子および特にすべての代数制約をモデル化する系のゼロの地点で消失する最低次の方程式(すなわち、 次の方程式)を探すには、orderly ランク を使用します。
|
>
|
R := DifferentialRing(blocks = [[T, x, y]], derivations = [t], arbitrary = [m, l, g]):
|
>
|
G := RosenfeldGroebner(P, R);
|
| (5.1.3.2) |
>
|
Equations(G[1], solved);
|
| (5.1.3.3) |
>
|
Equations(G[2], solved);
|
| (5.1.3.4) |
|
RosenfeldGroebner の出力の 2 番目のコンポーネントは振り子の平衡に対応します。出力の 1 番目のコンポーネントから、実際の動きは、2 つの制約付き 1 次微分方程式によって記述されることがわかります。よって、解は 2 つの任意定数のみに依存します。
|
>
|
RM := DifferentialRing(R, blocks = [T, [x, y]]);
|
| (5.1.3.5) |
>
|
GM := RosenfeldGroebner(P, RM);
|
| (5.1.3.6) |
>
|
Equations(GM[1], solved);
|
| (5.1.3.7) |
>
|
Equations(GM[2], solved);
|
| (5.1.3.8) |
|
ここで、振り子の動きは の 2 次微分方程式 によって与えられることに注意します。次に、ラグランジュ乗数は およびその 1 番目の導関数に関して陽に与えられます。
|
|
|
連立偏微分方程式の解を求める:辞書式順序によるランク
|
|
|
偏微分方程式の優決定の系の解を求めるには、まず、系の解によって満たされる常微分方程式を計算するのが興味深い方法です。この目的のため、辞書式順序によるランクを選択する必要があります。バーガーズ方程式の対称な群の無限小生成作用素を定義する微分方程式系 を検討します。
|
>
|
Burgers_pde := diff(u(x,t),x) = diff(u(x,t),t,t)-u(x,t)*diff(u(x,t),t);
|
| (5.1.4.1) |
>
|
BurgersSymmetry := PDEtools:-DeterminingPDE(Burgers_pde, u(x,t), [xi, phi, eta](x, t, u));
|
| (5.1.4.2) |
|
lex を使用して、従属変数(この例ではすべて)を含み、この方程式系の解によって満たされる に関する常微分方程式を求めます。
|
>
|
R := DifferentialRing(blocks = [lex[eta, phi, xi]], derivations = [u, x, t]);
|
| (5.1.4.3) |
>
|
G := RosenfeldGroebner(BurgersSymmetry, R);
|
| (5.1.4.4) |
>
|
Equations(G[1], solved);
|
| (5.1.4.5) |
|
|
特異解の計算
|
|
>
|
u(x, y) = x*diff(u(x, y), x) + y*diff(u(x, y), y) + diff(u(x, y), x)*diff(u(x, y), y);
|
| (5.1.5.1) |
|
この方程式を jet 表記と呼ばれるコンパクトな構文の方程式 によって表します。
|
>
|
p := - u + x*u[x] + y*u[y] + u[x]*u[y];
|
| (5.1.5.2) |
|
この方程式の操作を行う前に、方程式が帰属する微分多項式環を次のように定義します。
|
>
|
R := DifferentialRing(blocks = [u], derivations = [x, y]);
|
| (5.1.5.3) |
|
検討中のクレローの方程式は特異解を持ちます。これは、2 つのケースの存在により、 RosenfeldGroebner の出力中に示されます。この 2 つのケースとは、(系に矛盾がない限り常に存在する)一般的なケースと、追加的となる特異なケースであり、それぞれが regular_differential_chain で表されます。
|
>
|
Clairaut := RosenfeldGroebner(p, R);
|
| (5.1.5.4) |
|
各 regular_differential_chain の等式および不等式は、Equations および Inequations コマンドを使用して評価することができます。 一般的なケースは、いくつかの追加の不等式を含む微分鎖で表され、一方、2 番目の regular differential chain は特異なケースを表します。
|
>
|
Equations(Clairaut[1]), Inequations(Clairaut[1]);
|
| (5.1.5.5) |
>
|
Equations(Clairaut[2]), Inequations(Clairaut[2]);
|
| (5.1.5.6) |
|
すべての特異なケースは RosenfeldGroebner の出力に表示され、一方、オプション singsol = essential が使用される際には、真性特異点を持つゼロのみが表示されます。1 次微分方程式では次のようになります。
|
–
|
真性特異点を持つ解は非特異(一般)解の包絡線です。つまり、一般解に特有のケースではありません。
|
>
|
Wp := diff(w(z), z)^2 - 4*w(z)^3 + g2*w(z) + g3;
|
| (5.1.5.7) |
•
|
のケースは次のようになります。
|
>
|
R := DifferentialRing(blocks = [w], derivations = [z], arbitrary = [g2, g3]);
|
| (5.1.5.8) |
>
|
Equations(RosenfeldGroebner([Wp], R));
|
| (5.1.5.9) |
>
|
Equations(RosenfeldGroebner(Wp, R, singsol = essential));
|
| (5.1.5.10) |
|
従って、これらは の非特異(一般)解の包絡線です。 の実際のゼロをプロットすることにより、以下のようにその姿を観察することができます。
|
>
|
singular_solutions := {plot({fsolve(- 4*r^3 + 4*r - 1, r)}, z = - 3..3, color = red, thickness = 2)}:
|
>
|
general_solution_sample_1 := {seq(plots[odeplot](dsolve({diff(w(z), z, z) - 6*w(z)^2 + 2, w(ic) = - 1, D(w)(ic) = - 1.0}, w(z), type = numeric), - 3..3, color = green), ic = 0..4)}:
|
>
|
general_solution_sample_2 := {seq(plots[odeplot](dsolve({diff(w(z), z, z) - 6*w(z)^2 + 2, w(ic) = 2, D(w)(ic) = - 5.0}, w(z), type = numeric), ic - 0.15..ic + 1.7, color = blue), ic = - 3..1)}:
|
>
|
plots[display](singular_solutions union general_solution_sample_1 union general_solution_sample_2, title = "g2 = 4, g3 = - 1\n red: singular solutions\n green and blue: samples of general solutions", view = [ - 3..3, - 3/2..3]);
|
•
|
のケース; を使って方程式を次のようにパラメータ表示します。
|
>
|
Wps := subs(g2 = 3*g^2, g3 = g^3, Wp);
|
| (5.1.5.11) |
>
|
Rs := DifferentialRing(R, arbitrary = g):
|
>
|
Equations(RosenfeldGroebner(Wps, Rs));
|
| (5.1.5.12) |
>
|
Equations(RosenfeldGroebner(Wps, Rs, singsol = essential));
|
| (5.1.5.13) |
>
|
singular_solutions := plot({ - 1, 1/2}, color = red, thickness = 2):
|
>
|
general_solution_sample_1 := plot({seq( - 1 + 3/2*tanh(1/2*(C - z)*sqrt(6))^2, C = - 1..1)}, z = - 3..3, color = green):
|
>
|
general_solution_sample_2 := plot({seq( - 1 + 3/2*coth(1/2*(C - z)*sqrt(6))^2, C = - 1..1)}, z = - 3..3, color = blue):
|
>
|
plots[display]({singular_solutions, general_solution_sample_1, general_solution_sample_2}, view = [ - 3..3, - 3/2..3], title = "g2 = 3, g3 = - 1\n red: singular solutions\n green and blue: samples of general solutions");
|
•
|
のケース。方程式は次のようになります。
|
>
|
Wp0 := subs(g2 = 0, g3 = 0, Wp);
|
| (5.1.5.14) |
>
|
R0 := DifferentialRing(blocks = [w], derivations = [z]):
|
>
|
Equations(RosenfeldGroebner(Wp0, R0));
|
| (5.1.5.15) |
>
|
Equations(RosenfeldGroebner(Wp0, R0, singsol = essential));
|
| (5.1.5.16) |
|
従って、特異解は , の 1 つだけであり、本質的ではありません。非特異(一般)解に関する制限のプロパティを観察します。
|
>
|
singular_solutions := plot(0, s = - 4..4, color = red, thickness = 2):
|
>
|
general_solution_sample := plot({seq(1/((z - C)^2), C = - 2..1)}, z = - 4..4, color = [blue, blue, blue]):
|
>
|
plots[display]({singular_solutions, general_solution_sample}, view = [ - 4..4, - 1/2..2], title = "g2 = 0, g3 = 0\n red: singular solutions\n blue: samples of general solutions");
|
|
|
|
オプションの引数
|
|
|
'arbitrary' と 'blocks' の変更および 'relations' の追加
|
|
|
RosenfeldGroebner の呼び出し中に、DifferentialRing を使用して微分環を構成する際に記述された arbitrary および (または) blocks を変更(置き換え、または追加)することも可能です。また、arbitrary の relations を記述することも可能であり、このようにして、式系のより詳細な研究をすることができます。例として、ワイエルシュトラースの微分方程式における特異なケースの問題を再び検討します。
|
>
|
Wp := diff(w(z), z)^2 - 4*w(z)^3 + g2*w(z) + g3;
|
| (5.2.1.1) |
>
|
R := DifferentialRing(blocks = [w, g2], derivations = [z], arbitrary = g3);
|
| (5.2.1.2) |
|
この問題はここで 2 つではなく 3 つに分割されます。
|
>
|
ideal := RosenfeldGroebner(Wp, R);
|
| (5.2.1.3) |
>
|
Equations(ideal, solved);
|
| (5.2.1.4) |
>
|
Equations(RosenfeldGroebner(Wp, R, additionally, arbitrary = g2), solved);
|
| (5.2.1.5) |
|
この作業により、 のみが arbitraryとなり、微分環 R を指定したときに入力された arbitrary = g3 と置き換えられます。
|
>
|
Equations(RosenfeldGroebner(Wp, R, arbitrary = g2), solved);
|
| (5.2.1.6) |
|
この作業により、 および はいずれも arbitrary にはならず、微分環 R 内の arbitrary = g3 に優先します。
|
>
|
Equations(RosenfeldGroebner(Wp, R, arbitrary = []), solved);
|
| (5.2.1.7) |
>
|
Equations(RosenfeldGroebner(Wp, R, relations = {27*g3^2 = g2^3}), solved);
|
| (5.2.1.8) |
>
|
Equations(RosenfeldGroebner(Wp, R, additionally, arbitrary = g2, relations = {27*g3^2 = 16}), solved);
|
| (5.2.1.9) |
|
|
属性
|
|
|
attributes = L オプションを使用すると関数の動きを修正することができるます。ここで、属性 differential を省略します。従って、PDE 系は非連立微分方程式とみなされます。分解は純粋に代数的であり、3 番目の多項式で発生する導関数 は 1 番目の多項式より簡単化されません。
|
>
|
R := DifferentialRing(derivations = [x, y], blocks = [a, v, u]):
|
>
|
syst := [u[x]^2 - 4*u = 0, u[x, y]*v[y] - u + a = 0, v[x, x] - u[x] = 0]:
|
>
|
ideal := RosenfeldGroebner(syst, R, attributes = [normalized]);
|
| (5.2.2.1) |
>
|
Equations(ideal, solved);
|
| (5.2.2.2) |
>
|
Get(attributes, ideal);
|
| (5.2.2.3) |
|
|
|
|