DifferentialAlgebra[ChangeRanking] - ランクの変更を実行する
|
使い方
|
|
ChangeRanking(regchain, blocks = ..., derivations = ..., DRing)
|
|
パラメータ
|
|
regchain
|
-
|
regular differential chain
|
blocks
|
-
|
(オプション)従属変数のランク
|
derivations
|
-
|
(オプション)独立変数のランク
|
DRing
|
-
|
(オプション)微分環
|
assumeisprime
|
-
|
(オプション) regchain が素であると仮定し、その真偽にかかわらず続行します。
|
|
|
|
|
モデルの説明
|
|
•
|
関数の呼び出し ChangeRanking(regchain, blocks = ..., derivations = ...) は、他の DifferentialAlgebra コマンドによるランクで計算される regular differential chain を受け取り、従属および(または)独立変数の新たなランクに関して計算される別の微分鎖を返します。返される微分鎖は、regchain と同じ微分素イデアルを定義し、regchain と同じ属性を保有します。
|
•
|
従属変数および(または)独立変数の新しいランクは、オプション blocks = ... および derivations = ... の一方または両方で指定することができます。あるいは、微分環 DRing を直接指定することにより指定できます。すべての場合において、新しいランク ranking は、他の DifferentialAlgebra コマンドによって以前に regchain が計算した古いランキングと同じ従属変数および独立変数を含む必要があります。
|
•
|
ChangeRanking 法は素の微分イデアルにのみ適用されます。 regular differential chain が素であるか否かを知るためには、Is(prime, regchain) に示されるように Is コマンドを使用します。ChangeRanking に渡される regchain が素でない場合であっても、オプションの引数 assumeisprime を渡すことにより、regchain が素であると仮定して続行するよう ChangeRanking に要求することができますが、その結果として発生する微分イデアルは regchain と同じイデアルを示すとは限りません。
|
|
|
オプション
|
|
•
|
assumeisprime:このオプションは、regchainで示される微分イデアルの素数性を無視して続行するようアルゴリズムに指示します。
|
•
|
notation = jet, tjet, diff または Diff:関数の呼び出しの結果に使用される表記を指定します。指定がない場合、regchain の表記が使用されます。
|
•
|
memout = nonnegative:計算に使用されるメモリの制限を MB 単位で指定します。デフォルトはゼロです(メモリ制限なし)
|
|
|
アプリケーションと例題
|
|
|
学生および教員向けの例
|
|
>
|
with(DifferentialAlgebra):
|
•
|
この例は学生および教員向けの偏微分方程式(PDE)系の特徴を取り上げたものです。まず、RosenfeldGroebner を使用して regular differential chain を作成します。
|
>
|
R := DifferentialRing(derivations = [x, y], blocks = [[v, u]]);
|
| (5.1.1) |
>
|
ideal := RosenfeldGroebner([u[x]^2-4*u, u[x,y]*v[y]-u+1, v[x,x]-u[x]], R);
|
| (5.1.2) |
| (5.1.3) |
>
|
Equations(ideal[1], solved);
|
| (5.1.4) |
|
次に、 から [u, v] への従属変数のランクの変更が実行されます。第 1 ステップで計算された イデアル(ideal) は 素(prime) ではないため、オプション assumeisprime を入れる必要があります。
|
>
|
ideal_reranked := ChangeRanking(ideal[1], blocks = [u, v], assume);
|
| (5.1.5) |
|
元のイデアルとは異なり、このランクを変更したイデアルは素です。
|
>
|
Is(prime, ideal_reranked);
|
| (5.1.6) |
|
このランクを変更した微分を表す等式は次のようになります。
|
>
|
Equations(ideal_reranked, solved);
|
| (5.1.7) |
|
最後に、逆方向のランクの変更を実行し、返された regular differential chain が ideal のものと同一であることを確認します。
|
>
|
ideal_reranked_back := ChangeRanking(ideal_reranked, R);
|
| (5.1.8) |
>
|
Equations(ideal[1], solved) - Equations(ideal_reranked_back, solved);
|
| (5.1.9) |
|
|
二段階方法
|
|
|
この例は偏微分方程式(PDE)系の特徴を取り上げ、一部の対象ランクに関して与えられた系 によって生成された微分イデアルの累乗の表現を計算するための、優れた方法を説明しています。
|
|
この方法を使用すると、通常、計算が簡単になり、 regular differential chain は少なくなります。多くの微分多項式系では実際に素の微分イデアルを定義するため、この方法が頻繁に適用されます。この方法には 2 つのステップが含まれます。
|
–
|
第 1 のステップは、目的のものとは別に、 がほぼ正則な微分鎖(可能であれば、ランクの最高次の階数の次数が である微分鎖)であるような、簡単なランクを検索します (試行錯誤が必要な場合があります)。
|
–
|
第 2 のステップは、第 1 ステップで計算された regular differential chain のうち 目的のランクに関する regular differential chain に対して ChangeRanking を実行します。
|
|
この方法はここで二次元の非圧縮性流体のオイラー方程式に適用されます。この系で生成される微分イデアルの累乗 は素であり、微分の次元がゼロであることを証明していきます。
|
|
目的のランクは orderly ですが、直接的な計算を完了することはできません。
|
>
|
p1 := v1[t]+v1*v1[x]+v2*v1[y]+p[x]:
|
>
|
p2 := v2[t]+v1*v2[x]+v2*v2[y]+p[y]:
|
>
|
target_ranking := derivations=[x, y, t], blocks = [[v1, v2, p]];
|
| (5.2.1) |
>
|
R := DifferentialRing(target_ranking):
|
>
|
ideal := RosenfeldGroebner([p1, p2, p3], R);
|
| (5.2.2) |
|
しかし、簡単なランキングがあり、それは場合分けしないRosenfeldGroebner アルゴリズムに関連しています。この簡単なランキングは従属変数に関して orderly ではなく、elimination ランクです (lex というキーワードを使用します) 。また、 独立変数の順序付けは から に変化しますが、この二段階方法の目的に役立ちます。まず、第 1 ステップを実行します。
|
>
|
easy_ranking := derivations = [t, x, y], blocks = [lex[p, v1, v2]];
|
| (5.2.3) |
>
|
S := DifferentialRing(easy_ranking):
|
>
|
ideal := RosenfeldGroebner([p1, p2, p3], S);
|
| (5.2.4) |
>
|
ideal := ChangeRanking(ideal[1], R);
|
| (5.2.5) |
>
|
Tools:-LeadingRank(ideal);
|
| (5.2.6) |
|
|
パラメトリック力学系(parametric dynamical system)の特徴を挙げた例
|
|
|
この例は、パラメトリック力学系の学習に役立つ ChangeRanking を示しています。実際に、状態変数のいずれかの orderly ランクに関して、力学系は regular differential chain であり、微分素イデアルを記述します。
|
|
ここで、ChangeRanking を使用して力学系のいわゆる入出力関係を計算します。この関係は 制御理論において、グローバルでの同定可能性を調査し、測定値から未知のパラメータの推定を簡単化するために使用されます。
|
>
|
params := [k[e], V[e], k[1,2], k[2,1]];
|
| (5.3.1) |
>
|
R := DifferentialRing(derivations = [t], blocks = [[x[1], x[2]]], arbitrary = params);
|
| (5.3.2) |
>
|
edoA := diff(x[1](t),t) = -k[1,2]*x[1](t) + k[2,1]*x[2](t) - (V[e]*x[1](t))/(k[e]+x[1](t));
|
| (5.3.3) |
>
|
edoB := diff(x[2](t),t) = k[1,2]*x[1](t) - k[2,1]*x[2](t);
|
| (5.3.4) |
|
この RosenfeldGroebner の呼び出しは、 regular differential chain 内の 2 つの ODE をまとめるためのものです。パラメータは、微分環に入る際に不定(arbitrary)であると申告されたため、分割のケースは作成しません。
|
>
|
ideal := RosenfeldGroebner([edoA, edoB], R);
|
| (5.3.5) |
|
正則の微分鎖 の最高次の階数の次数は です。従って、微分イデアルは素となります。
|
>
|
Tools:-LeadingRank(ideal[1]);
|
| (5.3.6) |
>
|
IOideal := ChangeRanking(ideal[1], blocks = [x[2], x[1]]);
|
| (5.3.7) |
>
|
IOrel := Equations(IOideal, leader=derivative(x[1](t)), notation=jet)[1];
|
| (5.3.8) |
|
|
|