Maple 9 の微分方程式ソルバのアップデート
Maple 9 では、DE の厳密解と数値解について、微分方程式ソルバが大幅に機能強化されました。さらに、常微分方程式 (ODE) の問題を解くための、新しい対話形式のグラフィカルインタフェースが追加されました。
|
概要
|
|
|
厳密解と数値解に対するグラフィカルインタフェース
|
|
•
|
新しい対話形式のインタフェースが、ODE と ODE 系の数値解と数式解 (symbolic solutions) について作られました。インタフェースは、多くの一般のオプションを提供し、使い易いものになっています。解や解の値の計算に加えて、プロットを作成することもできます。インタフェースは、解やプロットを計算するのに必要な対応するMaple のコマンドを提供し、教育ツールとして適しています。インタフェースと(コマンドラインオプション) の起動については、dsolve/interactive を参照してください。インタフェースの図による説明は、worksheet/interactive/dsolve を参照してください。
|
|
|
Exact Solutions
|
|
1 階非線形方程式
•
|
解を求めることができる Abel タイプや Riccati タイプの ODE に変換することが可能な、ODE についての新しい解法
|
2 階線形方程式
•
|
非有理係数、あるいは、超幾何解をもつ ODE に対する新しい解法
|
•
|
二重周期非リウビル解をもつ有理係数の ODE に対する新しい解法
|
•
|
2階の線形ODEに対してリー対称性の非標準形式を求める新しい積分法
|
その他
•
|
可能な場合、積分ではなく超幾何関数で ODE の解を返すように、多くの dsolve のルーチンをアップデートしました。
|
•
|
dsolve ルーチンが大幅に最適化され、非線形 ODE を解くために微分不変量を計算します。
|
•
|
解くことができないアルゴリズムで ODE を解く計算を早い段階で中止できるように、ルーチン dsolve が大幅に最適化されました。平均的に今までの 3 倍から 10 倍高速に実行から抜けます。
|
•
|
PDE系に対する新しい解法と 1 つの PDE を解くための既存の pdsolve ルーチンの最適化。
|
|
|
Numerical Solutions
|
|
常微分方程式の数値解法
•
|
より効率的で、高精度をもつ Taylor 級数 ODE 解。
|
•
|
関数 dsolve の出力に追加された対話的な機能。初期データ、使用される方法、他のパラメータについて質問し、変更することができます。
|
•
|
ユーザが定義する関数を含む ODE 系を解く機能
|
偏微分方程式の数値解法
•
|
線形PDEに対して、2 次元線形楕円型問題を解く数値的方法の拡張
|
•
|
時間についての最高階の導関数が線形である非線形 PDE を解く PDE 数値解法すべてを拡張
|
•
|
時間修正解の計算の追加。たとえば、単位時間ステップにつき、指定した誤差内で解を計算することができます。
|
•
|
時間と空間の関数として、解に対して誤差評価の計算とプロット。
|
|
|
|
常微分方程式および偏微分方程式の厳密解
|
|
|
線形ODE
|
|
>
|
PDEtools[declare](y(x), prime=x);
|
| (2.1.1) |
任意関数に依存する 3 階より高階の線形 ODE ファミリーに対する解。
>
|
diff(y(x),x,x,x) = g(x)*diff(g(x),x)*y(x) + 2*diff(g(x),x)*diff(y(x),x) + diff(g(x),x,x)*y(x) + g(x)^2*diff(y(x),x);
|
| (2.1.2) |
| (2.1.3) |
>
|
(1-I)*diff(y(x),`$`(x,4))-(3+5*I)*diff(y(x),`$`(x,3))+(-I*x+x-9+3*I)*diff(y(x),`$`(x,2))+(8*I-3*I*x-x)*diff(y(x),x)+(2+2*I-I*x-x)*y(x);
|
| (2.1.4) |

| (2.1.5) |
計算できない積分形で与えるのではなく、初等関数、超幾何関数、あるいは、特殊関数での 2 階線形 ODE の解。
>
|
-4*x*y(x) + diff(y(x),x) - 2*diff(y(x),`$`(x,2))*x + 2*diff(y(x),x,x)*x^3;
|
| (2.1.6) |
| (2.1.7) |
>
|
diff(y(x),`$`(x,2)) = cos(2*x)/sin(2*x)*diff(y(x),x)-2*y(x);
|
| (2.1.8) |
| (2.1.9) |
Kamke の例 43, 133, 263, 319, 353, 354, 355 に対する解は、Maple の前のリリースでは、計算できない積分を持ちました。Maple 9 では、これらは、超幾何関数で解かれます。
非有理係数をもつ線形 ODE ファミリーに対して、初等関数解、超幾何関数解を求めるように新しくなりました。
>
|
diff(y(x),x,x) = 1/2*(2*x^3*y(x)*(x^2-1)^(1/2)-x^3*y(x)+diff(y(x),x)*x^4-3*diff(y(x),x)*x^2+2*diff(y(x),x))/x/(x^2-1)^2;
|
| (2.1.10) |
| (2.1.11) |
>
|
diff(y(x),x,x) = (-x^5*y(x)-3*x^3*y(x)+3*diff(y(x),x)*(x^2+3)^(1/2))/(x^2+3)^(3/2)/x;
|
| (2.1.12) |
![y = _C1*hypergeom([], [2/3], -(1/9)*(x^2+3)^(3/2))+_C2*hypergeom([], [4/3], -(1/9)*(x^2+3)^(3/2))*(x^2+3)^(1/2)](/support/helpjp/helpview.aspx?si=2572/file01572/math225.png)
| (2.1.13) |
2 階線形 ODE に対する二重周期解を求めるように新しくなりました。この場合、解は、ODE の対称性から直接計算されます。
>
|
diff(y(x),x,x)-12*WeierstrassP(x,a,b)*y(x);
|
| (2.1.14) |

| (2.1.15) |
>
|
(WeierstrassPPrime(x,a,b) + WeierstrassP(x,a,b)^2)*diff(diff(y(x),x),x) + (WeierstrassP(x,a,b)^3 - WeierstrassP(x,a,b)*WeierstrassPPrime(x,a,b) - 6*WeierstrassP(x,a,b)^2 + 1/2*a)*diff(y(x),x) + (WeierstrassPPrime(x,a,b)^2 - WeierstrassP(x,a,b)^2*WeierstrassPPrime(x,a,b) - WeierstrassP(x,a,b)*(6*WeierstrassP(x,a,b)^2 - 1/2*a))*y(x) = 0;
|

| (2.1.16) |
| (2.1.17) |
これまでの分類にも当てはまらない線形 ODE 問題に対し、解を新しく求めることができるようになりました。ただし、対象となるのは、非標準形式の対称性を計算することにより解を決定できる問題です。
>
|
diff(diff(y(x),x),x) = 1/4*(-2*Psi(x)*Psi(2,x)+3*Psi(1,x)^2+Psi(x)^4)/Psi(x)^2*y(x);
|
| (2.1.18) |
| (2.1.19) |
超幾何関数ではなく、初等関数、特殊関数でのより簡単な解。
>
|
diff(diff(y(x),x),x) = 1/4*(4*(x^n)^2*n^2-1+4*(x^n)^4*n^2+n^2)/x^2*y(x);
|
| (2.1.20) |
| (2.1.21) |
sin, cos, ln, 根号の合成ではなく、平方根でのより簡単な解。
>
|
-1/4*1/x/(x-1)*y(x)+1/2*(2*x-1)/x/(x-1)*diff(y(x),x)+diff(y(x),`$`(x,2)) = 0;
|
| (2.1.22) |
| (2.1.23) |
解を計算することができない ODE を解こうとする試みを早い段階で中止します。
>
|
x^n*diff(y(x),x$2)+c*(a*x+b)^(n-4)*y(x)=0;
|
| (2.1.24) |
| (2.1.25) |
|
|
非線形ODE
|
|
楕円関数解に対する改良
>
|
diff(y(x),x)^2 = 1/(1+x^4*k^2+(-k^2-1)*x^2);
|
| (2.2.1) |
| (2.2.2) |
任意関数 f(x)でのKamkeの例 80
>
|
diff(y(x),x)+f(x)*sin(y(x))+(1-diff(f(x),x))*cos(y(x))-diff(f(x),x)-1, y(x);
|
| (2.2.3) |
| (2.2.4) |
Kamkeの例 81、より一般の ODE クラスに対するインプリシットに表わされた超幾何解。Kamkeの例 81は、特殊な場合です。
>
|
diff(y(x),x) = -2*tan(x)*tan(y(x))+1;
|
| (2.2.5) |
![_C1+tan(x)/((1+tan(y)^2)*(1+tan(x)^2)/(tan(x)*tan(y)-1)^2)^(1/4)+(1/2)*(tan(y)+tan(x))*hypergeom([1/2, 5/4], [3/2], -(tan(y)+tan(x))^2/(tan(x)*tan(y)-1)^2)/(tan(x)*tan(y)-1) = 0](/support/helpjp/helpview.aspx?si=2572/file01572/math381.png)
| (2.2.6) |
>
|
diff(y(x),x) = -(P(y(x))^2+1)*(2*F(x)*P(y(x))-1)*diff(F(x),x)/(1+F(x)^2)/D(P)(y(x));
|
| (2.2.7) |
![_C1+F(x)/((P(y)^2+1)*(1+F(x)^2)/(F(x)*P(y)-1)^2)^(1/4)+(1/2)*(P(y)+F(x))*hypergeom([1/2, 5/4], [3/2], -(P(y)+F(x))^2/(F(x)*P(y)-1)^2)/(F(x)*P(y)-1) = 0](/support/helpjp/helpview.aspx?si=2572/file01572/math395.png)
| (2.2.8) |
AIA 2p Abel タイプの方程式
>
|
diff(y(x),x) = 2*y(x)*(2*x-3+b^2+y(x))/(y(x)*x+(x-1)*(-4+b^2+3*x));
|
| (2.2.9) |
| (2.2.10) |
リカッチタイプの方程式に対する積分表示のない直接的な解。前のリリースでは、解は、積分表示で直接的な表現ではありませんでした。
>
|
diff(y(x),x) = (x-exp(x))*y(x)^2+(exp(2*x)-x^2)/(-x+exp(x))*y(x)-exp(x)*(-x^2+x-1+x*exp(x))/(-x+exp(x))^2;
|
| (2.2.11) |
>
|
dsolve(%,[sym_pat]); # the optional use of [sym_pat] methods speeds up this process
|

| (2.2.12) |
任意関数 sigma(x) の積分をもつ直接的な解。前のリリースでは、解は、積分表示や RootOf を用いて表され、直接的な表現ではありませんでした。
>
|
sigma(x) = -(y(x)-x*diff(y(x),x))*diff(y(x),x)/x/y(x)/diff(diff(y(x),x),x);
|
| (2.2.13) |
| (2.2.14) |
はるかに簡単な形式の解。前のリリースでは、解は、積分表示をもつRootOf 表現でした。
>
|
diff(y(x),`$`(x,2))*(x-y(x))+2*diff(y(x),x)*(1+diff(y(x),x)) = 0;
|
| (2.2.15) |
| (2.2.16) |
|
|
ある線形 ODE 系に対する級数解の計算が改良されました
|
|
関数 dsolve は、多項式係数をもつ線形 ODE 系に対する級数解 series solutions の計算に、LinearFunctionalSystems パッケージのルーチンを使用します。
>
|
PDEtools[declare](x(t), y(t), prime=t);
|
>
|
{t*diff(x(t),t,t,t)-diff(y(t),t,t)-x(t)-t^3*y(t) = 0,
t^2*diff(y(t),t,t)+diff(diff(x(t),t),t)-2*x(t)-t*y(t) = 0};
|
| (2.3.2) |
>
|
dsolve(%, {x(t), y(t)}, 'series');
|

| (2.3.3) |
|
|
PDE
|
|
任意関数を含む偏微分方程式系に対して、つぎのように HINT オプションを使用します。
>
|
{-diff(xi(x,y),`$`(y,2))+diff(xi(x,y),y)*h(y), diff(eta(x,y),x)*g(x)+diff(eta(x,y),`$`(x,2)), diff(eta(x,y),y)*h(y)+eta(x,y)*diff(h(y),y)+2*diff(xi(x,y),y)*g(x)-2*diff(xi(x,y),x,y)+diff(eta(x,y),`$`(y,2)), 2*diff(eta(x,y),x,y)+diff(xi(x,y),x)*g(x)-diff(xi(x,y),`$`(x,2))+2*diff(eta(x,y),x)*h(y)+xi(x,y)*diff(g(x),x)};
|
![{2*eta[x, y]+xi[x]*g(x)-xi[x, x]+2*eta[x]*h(y)+xi(x, y)*g[x], eta[y]*h(y)+eta(x, y)*h[y]+2*xi[y]*g(x)-2*xi[x, y]+eta[y, y], eta[x]*g(x)+eta[x, x], -xi[y, y]+xi[y]*h(y)}](/support/helpjp/helpview.aspx?si=2572/file01572/math524.png)
| (2.4.1) |
>
|
pdsolve( %, [xi,eta], HINT=`+`);
|

| (2.4.2) |
| (2.4.3) |
|
|
|
常微分方程式 (系) および偏微分方程式 (系) の数値解
|
|
Maple 9 では、以下の事項を含む数多くの改良が、数値的な ODE と PDE ソルバになされました。
|
ODE と ODE 系の数値解
|
|
•
|
ODE の数値ソルバのプロシージャの出力に対して、対話的な特徴を追加することにより、初期値についての質問と変更、最後に計算された点 (特異点をもつ問題に対して非常に有効です)、プロシージャで使用されるメソッド、たとえば、rkf45 についてのクエリーが可能になります。詳細は、dsolve/numeric/IVP を参照してください。
|
•
|
数値的な ODE 境界値問題ソルバ、特に難しい問題に対するソルバの、効率の大幅な改良。
|
|
|
時間に依存する PDE と PDE 系の数値解
|
|
•
|
時間についての最高階の導関数が線形である非線形 PDE を解く解法 (スキーム) をすべて拡張しました。
|
•
|
時間修正解の計算の追加。たとえば、単位時間ステップにつき、指定した誤差内で解を計算することができます。注意: 時間ステップのみが修正可能です。解は、空間の誤差が許容範囲内に収まるのに十分な空間点数で計算される必要があります。この条件はモニタされ、空間メッシュが粗すぎる場合には、エラーとなります。詳細は、pdsolve/numeric/errorcontrol を参照してください。
|
|
|
|
参照
|
|
dsolve, dsolve/interactive, dsolve/numeric, dsolve/numeric/IVP, dsolve/series, dsolve/taylorseries, hypergeom, Legendre, LinearFunctionalSystems, New Maple Features, PDEtools[declare], pdsolve, pdsolve/numeric, pdsolve/numeric/errorcontrol, RootOf, Weierstrass, worksheet/interactive/dsolve
|
|