Maple 16 での微分方程式 (DE) ソルバーの更新
|
概略
|
|
•
|
Maple 16 での厳密なシンボリック常微分方程式の主題は、1 次、2 次および高次の非線形 ODE 用の新規解法の開発です。新しいメソッドでは、1 次アーベルおよびその他の方程式群、点対称を認めない、または認めるものの実際に使用しない 2 次および高次の方程式群を解くことができます。Maple 16 の ODE ソルバーは、ODE の厳密解計算における新しい領域を切り開いています。Maple はコンピュータ代数ソフトウェアによる ODE の厳密解の計算における最先端です。
|
–
|
1 次 ODE について、dsolve は 2 つの新規 1 パラメータアーベル ODE クラスを解き、積分変換によって線形化される任意関数に応じてさらに 2 つの新規 ODE クラスを解きます。
|
–
|
2 次、3 次、4 次の ODE 問題について、Maple 16 の dsolve は任意関数に応じて 2 つの新規の非線形 ODE 群を解きます。
|
|
方程式の可解のクラスには、クラスを定義する従属変数と独立変数の変換によって相互変換される無限に多くの微分方程式が含まれます。
|
•
|
常微分方程式および偏微分方程式の Maple 16 での主題は、既存の対称性アルゴリズムの完全な改定と、機能強化により非可換変数に関する問題を自動的に扱うことです。この機能強化には、dsolve および pdsolve コマンド、PDEtools[Library] のすべてのコマンドPDEtools の多くの対称性コマンドが含まれます。これにより、非可換変数を含む Physics ですべての DE の機能を扱えるようになりました。
|
|
|
常微分方程式 (ODE)
|
|
|
新規アルゴリズムを使用して、dsolve コマンドは、新規の 1 次、2 次、3 次、4 次の非線形 ODE 群を解きます。これらは独立変数の任意関数でパラメータ化されており、Maple の過去のリリースではアクセスできません。
|
|
新規の可解 1 次非線形 ODE 群
|
|
•
|
1 次 ODE について、完全な解法アルゴリズムが解くことのできない最も単純な問題は、アーベル方程式として知られています。この方程式は以下の形式です。
|
>
|
PDEtools[declare](y(x), prime=x);
|
| (1) |
|
以下の第二種のアーベル方程式は、1 パラメータ に依存し、超幾何学的な関数によって解かれます。
|
>
|
ode[1] := diff(y(x),x) = -y(x)*(-3+x)*((-9+2*alpha)*y(x)-9)/(x*(54-36*x+6*x^2-3*alpha+2*alpha*x)*y(x)+9*alpha+81-54*x+9*x^2);
|
| (2) |
![_C1+(1/128)*(128*(alpha-9/2)^5*y^4*(-y+(2/9)*y*alpha-1)^((-9+8*alpha)/(-9+2*alpha))*(x*y+3)^2*hypergeom([5, (-9+8*alpha)/(-9+2*alpha)], [(10*alpha-18)/(-9+2*alpha)], y-(2/9)*y*alpha+1)-69984*(3/2+(x-3/2)*y)*(alpha-9/8)*(-9/2+(alpha-9/2)*y)*(-y+(2/9)*y*alpha-1)^(6*alpha/(-9+2*alpha)))/((alpha-9/2)^4*y^4*(alpha-9/8)*(x*y+3)^2) = 0](/support/helpjp/helpview.aspx?si=2561/file01561/math96.png)
| (3) |
|
完全に可解であるアーベル方程式の関連クラスは、変数を変更することで方程式 (2) から得られる方程式群で構成されます。
|
•
|
任意関数 に応じたつぎの ODE 群は、アーベル方程式以上に困難な問題、つまり、右辺の の 4 乗に関する問題に取り組んでいます。
|
>
|
ode[2] := diff(y(x),x) = 1/2*(G(x)^2*y(x)^4-diff(G(x),x)*y(x)^2+x)/G(x)/y(x);
|
| (4) |
•
|
平方根によって解があいまいになるのを回避するために、陰的解法で解きます。
|
>
|
sol[2] := dsolve(ode[2], y(x), implicit);
|
| (5) |
>
|
odetest(sol[2], ode[2], y(x));
|
| (6) |
•
|
任意関数 に関する、Maple 16 で可解である上記の問題の一般化
|
>
|
ode[3] := diff(y(x),x) = 2*G(y(x))*x/(2-D(G)(y(x))*x^2+G(y(x))^2*x^4-2*y(x)*G(y(x))*x^2);
|
| (7) |
>
|
sol[3] := dsolve(ode[3]);
|
| (8) |
>
|
odetest(sol[3], ode[3]);
|
| (9) |
|
|
新規の 2 次、3 次、4 次の可解の非線形 ODE 群
|
|
|
弊社が開発した新規アルゴリズムを使用して、Maple 16 のdsolve コマンドは、独立 ( ) または従属 ( ) 変数の任意関数に関する ODE 群を使用して、2 次、3 次、4 次の問題の新規の 2 つの非線形 ODE 群を解きます。
|
>
|
ode[4] := diff(y(x), x$4) = 5*y(x)*diff(y(x), x$3) + (10*diff(y(x), x) - 10*y(x)^2-1/x)*diff(y(x), x$2) - 15*y(x)*diff(y(x), x)^2+(10*y(x)^3 + 3/x*y(x))*diff(y(x),x) - y(x)^5 - 1/x*y(x)^3;
|
| (10) |
|
この ODE は点対称ではありません。PDE の対称性の無限小 を求める場合は、両方が 0 となることのみを認めます。
|
>
|
PDEtools:-DeterminingPDE(ode[4]);
|
| (11) |
•
|
新規アルゴリズムを使用すると。この問題はベッセル関数の明示型で可解です。
|
| (12) |
•
|
3 次の点対称を認めない問題を以下に示します。
|
>
|
ode[5] := diff(y(x), x$3) = (4*y(x)-1/x)*diff(y(x), x$2) + 3*diff(y(x), x)^2 + (-6*y(x)^2+3/x*y(x)-x)*diff(y(x), x) + y(x)^4 - 1/x*y(x)^3 + y(x)^2*x - y(x);
|
| (13) |
![y = (1/240)*(-240*_C2*x*hypergeom([1/3, 1/3], [2/3, 2/3, 4/3], -(1/9)*x^3)+15*_C2*x^4*hypergeom([4/3, 4/3], [5/3, 5/3, 7/3], -(1/9)*x^3)-480*_C3*x^2*hypergeom([2/3, 2/3], [1, 4/3, 5/3], -(1/9)*x^3)+16*_C3*x^5*hypergeom([5/3, 5/3], [2, 7/3, 8/3], -(1/9)*x^3)-720*MeijerG([[1], []], [[2/3, 2/3, 1/3], []], (1/9)*x^3))/(x*(_C1+_C2*x*hypergeom([1/3, 1/3], [2/3, 2/3, 4/3], -(1/9)*x^3)+_C3*x^2*hypergeom([2/3, 2/3], [1, 4/3, 5/3], -(1/9)*x^3)+MeijerG([[1, 1], []], [[2/3, 2/3, 1/3], [0]], (1/9)*x^3)))](/support/helpjp/helpview.aspx?si=2561/file01561/math234.png)
| (14) |
•
|
点対称が存在していても積分目的で使用されない 2 次の非線形 ODE 問題 (解かれていない 4 次線形 ODE に関する)
|
>
|
ode[6] := diff(y(x), x, x) = x*(diff(y(x), x))^3*y(x)+x^2*(x-1)*(diff(y(x), x))^3+(-3*x+1)*(diff(y(x), x))^2;
|
| (15) |
>
|
sol[6] := dsolve(ode[6]);
|
| (16) |
>
|
odetest(sol[6], ode[6]);
|
| (17) |
•
|
既存のアルゴリズムの改良点を示している 3 次の ODE 問題。旧リリースでは、この方程式は解決していない RootOf 式の未計算積分についてのみ解かれました。現在は解は有理関数として明示的に計算されます。
|
>
|
ode[7] := diff(y(x), x$3) + 4*y(x)*diff(y(x), x$2) + 3*diff(y(x), x)^2 + 6*y(x)^2*diff(y(x), x) + y(x)^4 = 0;
|
| (18) |
>
|
sol[7] := dsolve(ode[7]);
|
| (19) |
>
|
odetest(sol[7], ode[7]);
|
| (20) |
| (21) |
>
|
Setup(anticommutativepre = {theta, Q});
|
| (22) |
•
|
可換変数 の非可換関数 の常微分方程式を考えます。
|
>
|
diff(Q(x), x, x) - Q(x)*diff(Q(x), x) = 0;
|
| (23) |
•
|
dsolve を使用した解は非可換定数 を含み、可換定数 と似ています。
|
| (24) |
|
|
|
偏微分方程式 (PDE)
|
|
|
非可換変数を扱うための PDEtools コマンドの一般化の過程で、対称性は多くの場面で改良されています。最新の対称性解析の偏微分方程式の正確な解の計算のための新規ベンチマークを設定しています。
|
|
例
|
|
>
|
with(PDEtools), with(Physics):
|
>
|
Setup(anticommutativepre = {theta, Q});
|
| (25) |
|
可換および非可換変数 の非可換関数 の偏微分方程式を考えます。
|
>
|
diff(Q(x, y,theta), x, theta) = 0;
|
| (26) |
| (27) |
>
|
Physics:-GrassmannParity((27));
|
| (28) |
>
|
PDEtools:-declare(Q(x, y, theta[1], theta[2]));
|
| (29) |
>
|
q := PDEtools:-diff_table(Q(x, y, theta[1], theta[2])):
|
|
微分変数によってインデックス付けられた関数名として導関数を直接入力でき、2 つの PDE を同じ方法で表示します。
|
>
|
pde[1] := q[x, y, theta[1]] + q[x, y, theta[2]] - q[y, theta[1], theta[2]] = 0;
|
| (30) |
>
|
pde[2] := q[theta[1]] = 0;
|
| (31) |
>
|
pdsolve([pde[1], pde[2]]);
|
| (32) |
| (33) |
| (34) |
|
の結果を pde[2] と置き換え、 を乗算し上記から減算すると PDE の解になります。
|
>
|
PDEtools:-ReducedForm(pde[1], pde[2]);
|
| (35) |
>
|
casesplit([pde[1], pde[2]]);
|
| (36) |
>
|
Setup(anticommutativepre = {Xi, Eta}, additionally);
|
| (37) |
>
|
S := [xi[1], xi[2], Xi[1], Xi[2], Eta](x, y, theta[1], theta[2]);
|
| (38) |
| (39) |
>
|
InfinitesimalGenerator(S, Q(x,y,theta[1], theta[2]));
|
![proc (f) options operator, arrow; xi[1](x, y, theta[1], theta[2])*(diff(f, x))+xi[2](x, y, theta[1], theta[2])*(diff(f, y))+Xi[1](x, y, theta[1], theta[2])*(diff(f, theta[1]))+Xi[2](x, y, theta[1], theta[2])*(diff(f, theta[2]))+Eta(x, y, theta[1], theta[2])*(diff(f, Q)) end proc](/support/helpjp/helpview.aspx?si=2561/file01561/math697.png)
| (40) |
| (41) |
| (42) |
| (43) |
![Eta[x, y]-xi[1, x, y]*Q[x]-xi[2, x, y]*Q[y]-Xi[1, x, y]*Q[theta[1]]-Xi[2, x, y]*Q[theta[2]]-xi[1, y]*Q[x, x]-xi[2, y]*Q[x, y]-Q[x, theta[1]]*Xi[1, y]-Q[x, theta[2]]*Xi[2, y]-xi[1, x]*Q[x, y]-xi[2, x]*Q[y, y]-Xi[1, x]*Q[y, theta[1]]-Xi[2, x]*Q[y, theta[2]]](/support/helpjp/helpview.aspx?si=2561/file01561/math749.png)
| (44) |
![Eta[x, theta[1]]+Q[x]*xi[1, x, theta[1]]+Q[y]*xi[2, x, theta[1]]-Xi[1, x, theta[1]]*Q[theta[1]]-Xi[2, x, theta[1]]*Q[theta[2]]+Q[x, x]*xi[1, theta[1]]+Q[x, y]*xi[2, theta[1]]-Q[x, theta[1]]*Xi[1, theta[1]]-Q[x, theta[2]]*Xi[2, theta[1]]-xi[1, x]*Q[x, theta[1]]-xi[2, x]*Q[y, theta[1]]-Q[theta[1], theta[2]]*Xi[2, x]](/support/helpjp/helpview.aspx?si=2561/file01561/math756.png)
| (45) |
>
|
DeterminingPDE([pde[1], pde[2]], S);
|
![](/support/helpjp/helpview.aspx?si=2561/file01561/math768.png)
| (46) |
|
対称性無限小の厳密な型を計算するためには、pdsolve を使用して可換および非可換関数について PDE を解くか、システムのすべてのステップを自動実行する Infinitesimals に直接渡すことができます。
|
![{Eta = _F8(x, y)*_lambda5+(_F32(x)+_F31(y))*theta[2], Xi[1] = _F28(y)*_lambda7+_C2*theta[1]+(_C1-_C2)*theta[2], Xi[2] = _F29(y)*_lambda9+_C1*theta[2], xi[1] = _C2*x+_C3, xi[2] = _F30(y)}](/support/helpjp/helpview.aspx?si=2561/file01561/math785.png)
| (47) |
![[_C2*x+_C3, _F30(y), _F28(y)*_lambda7+_C2*theta[1]+(_C1-_C2)*theta[2], _F29(y)*_lambda9+_C1*theta[2], _F8(x, y)*_lambda5+(_F32(x)+_F31(y))*theta[2]]](/support/helpjp/helpview.aspx?si=2561/file01561/math797.png)
| (48) |
>
|
Infinitesimals([pde[1], pde[2]], q[], S);
|
![[1, _F3(y), _F1(y)*_lambda7, _F2(y)*_lambda9, _F6(x, y)*_lambda5+(_F5(x)+_F4(y))*theta[2]], [x, _F9(y), _F7(y)*_lambda7+theta[1]-theta[2], _F8(y)*_lambda9, _F12(x, y)*_lambda5+(_F11(x)+_F10(y))*theta[2]], [0, _F15(y), _F13(y)*_lambda7+theta[2], _F14(y)*_lambda9+theta[2], _F18(x, y)*_lambda5+(_F17(x)+_F16(y))*theta[2]]](/support/helpjp/helpview.aspx?si=2561/file01561/math809.png)
| (49) |
>
|
map(SymmetryTest, [(49)], [pde[1], pde[2]]);
|
| (50) |
|
これらの 3 つの対称性無限小の一覧を左辺にラベルを付けて表示するには、map を使用します。
|
>
|
map[3](zip, `=`, S, [(49)]);
|
![[[xi[1] = 1, xi[2] = _F3(y), Xi[1] = _F1(y)*_lambda7, Xi[2] = _F2(y)*_lambda9, Eta = _F6(x, y)*_lambda5+(_F5(x)+_F4(y))*theta[2]], [xi[1] = x, xi[2] = _F9(y), Xi[1] = _F7(y)*_lambda7+theta[1]-theta[2], Xi[2] = _F8(y)*_lambda9, Eta = _F12(x, y)*_lambda5+(_F11(x)+_F10(y))*theta[2]], [xi[1] = 0, xi[2] = _F15(y), Xi[1] = _F13(y)*_lambda7+theta[2], Xi[2] = _F14(y)*_lambda9+theta[2], Eta = _F18(x, y)*_lambda5+(_F17(x)+_F16(y))*theta[2]]]](/support/helpjp/helpview.aspx?si=2561/file01561/math837.png)
| (51) |
|
|
|