PDEtools[Solve] - 不等式、初期値、または境界条件を含む場合も含め、代数系または微分方程式系の解を、場合によっては示された変数から独立して計算するための統合コマンド
|
使い方
|
|
Solve(sys, solving_variables, 'option'='value')
|
|
パラメータ
|
|
sys
|
-
|
代数方程式および(または)微分方程式、もしくは、代数方程式や微分方程式のリスト。不等式および初期条件または 境界条件を含む可能性があります。
|
solving_variables
|
-
|
名前または 関数、あるいは、名前および関数の両方を含みうる名前や関数の集合またはリスト。サブリスト内にランク付けられる可能性があり、全体で式を解くための変数(solving variable)となります。
|
idependentof = ...
|
-
|
(オプション)名前または名前のリストであり、計算された解がこれらの名前から独立していなければならないことを示します。
|
overridefunctiondependency = ...
|
-
|
(オプション) true (デフォルト値)または false に指定することが可能であり、 independentof = ... で記述された変数に対する、式を解くための関数の依存関係に優先します。
|
solver = ..
|
-
|
(オプション) solve, dsolve, pdsolve、または PDEtools コマンド InvariantSolutions, SimilaritySolutions, PolynomialSolutions のいずれかに指定することができます。
|
..other..
|
-
|
(オプション) numeric または series、あるいは、solve, dsolve, pdsolve、または solver = ... オプションで指定されたソルバーにより受け取られるオプションの引数のいずれかとなります。
|
|
|
|
|
モデルの説明
|
|
•
|
Solve コマンドは、連立方程式 sys の解を求める solving_variables の値を計算します。解を求める連立方程式は、代数方程式または微分方程式、あるいは、その両方を含むことができます。厳密解(デフォルト)、数値解、または、級数解(それぞれ numeric オプションまたは series オプションを使用)を求めることができます。この意味で、Solve は、入力された内容に従ってsolve, fsolve, dsolve または pdsolve をいつ呼び出すかを把握し、さらに、series または numeric というキーワードを追加するだけで異なる型の解の分析を促進する、統合コマンドと言えます。
|
•
|
Solve は、各種の Maple ソルバー用の統合構文との単一のインターフェイスであるだけでなく、右辺に名前または名前のリストか集合を取りうる independentof = ... オプションで示された、特定の変数から独立した厳密解、数値解、および、級数解の計算を可能にします。Solve は、 いくつかの名前に関する(通常は多項式でない)代数式の解を求める際に、目的とする解が方程式の他の名前に依存しないものとする場合に特に役立ちます 。したがって、返される解はこれらの他の名前の不定の値に対して有効です。また、このオプションは、偏微分方程式の解を計算する際に、目的とする解が問題の独立変数に依存しないものとする場合に役立ちます。
|
•
|
すべての種類の方程式系、代数、微分、または、その混合において、系の解を求めることが可能なとき、出力は、式を解くための変数が 1 つだけの場合には、左辺に式を解くための変数を伴う方程式の列で構成され、集合として渡される式を解くための変数が 2 つ以上ある場合は、同様な方程式の集合の列として返されます。すべてのケースにおいて、解がみつからない場合、または、解を陽に示すことができない場合、Solve は NULL を返します。dsolve または pdsolve により陰に示された解を得るには、implicit オプションを使用します。
|
•
|
independentof = ... オプションを使用して解の依存関係を制限するとき、問題の式を解くための関数の依存関係の文より優先させたい場合と、優先させたくない場合があります。この目的のために、オプションの引数 overridefunctiondependency = false を追加で使用します。使用しない場合(デフォルトの動作)、返される解のすべての右辺が示された変数から独立します。
|
|
|
アプリケーションと例題
|
|
| (4.1) |
|
厳密解、級数解、および数値解を計算するための統合ソルバー
|
|
|
Solve は、入力に対して適切ソルバーを自動的に呼び出して、式を解くための変数に関する連立方程式の解を求めます。
|
>
|
eq[1] := a*x^2 + b*x + c = 0;
|
| (4.1.1) |
| (4.1.2) |
|
から独立した の数値解
|
>
|
Solve(eq[1], {a, b, c}, independentof = x, numeric);
|
| (4.1.3) |
>
|
eq[2] := diff(y(x), x) = y(x);
|
| (4.1.4) |
| (4.1.5) |
| (4.1.6) |
>
|
eq[4] := diff(u(x, t), t)+c*(diff(u(x, t), x)) = -lambda*u(x, t);
|
| (4.1.7) |
| (4.1.8) |
>
|
bc[4] := u(x, 0) = phi(x);
|
| (4.1.9) |
>
|
sol[5] := Solve([eq[4], bc[4]]);
|
| (4.1.10) |
>
|
eq[5] := [diff(u(x,t),t) = -diff(u(x,t),x), u(x,0) = sin(2*Pi*x), u(0,t) = -sin(2*Pi*t)];
|
| (4.1.11) |
>
|
sol[5] := PDEtools:-Solve(eq[5], numeric, time=t, range=0..1);
|
| (4.1.12) |
>
|
sol[5]:-plot(t=0, numpoints=50);
|
|
4 つの未知の値{a, b, f(x, y), g(x, y)}における代数と PDE が混在する系
|
>
|
eq[6] := [diff(f(x,y), y,y), diff(g(x,y), y,y)-2*diff(f(x,y),x,y)-6*diff(f(x,y),y)*y, -9*diff(f(x,y),y)*a*y^2-12*diff(f(x,y),y)*a^2*y+2*diff(g(x,y),x,y)-diff(f(x,y), x,x)-3*g(x,y)-3*diff(f(x,y),y)*b-3*diff(f(x,y),x)*y, -4*g(x,y)*a^2-2*diff(f(x,y),x)*b+diff(g(x,y),y)*b-3*y*diff(g(x,y),x)+diff(g(x,y), x,x)-6*g(x,y)*a*y-6*diff(f(x,y),x)*a*y^2-8*diff(f(x,y),x)*a^2*y+3*diff(g(x,y),y)*a*y^2+4*diff(g(x,y),y)*a^2*y];
|
| (4.1.13) |
>
|
Solve(eq[6], {a, b, f, g});
|
| (4.1.14) |
上記の 1 番目の解では、 と が関連していることがわかります。したがって、この系は 3 つの変数に関して解を求めることができます。また、2 番目の解の次元が低いため、特異解となります。3 つの変数に関してこの問題を解きますが、特異解を無視して、中間の微分消去(differential elimination)計算(pdsolve のオプションの引数 diffalg )のための新しい DifferentialAlgebra を使用します。
>
|
Solve(eq[6], {b, f, g}, singsol = false, diffalg);
|
| (4.1.15) |
|
|
厳密解、級数解、および数値解の 'independentof'
|
|
|
前のセクションの例では、solve, fsolve, dsolve および pdsolve の呼び出す利点は、単一のコマンドでの使用、および、入出力形式が統合された状態で、厳密解、級数解、または数値解の計算が可能となることにあります。しかし、Solve は、示された変数から独立して解を計算することができるという、さらなる機能を提供します。
|
>
|
eq[7] := sin(x) = cos(a*x+b);
|
| (4.2.1) |
>
|
Solve(eq[7], {a,b}, independentof = x);
|
| (4.2.2) |
|
independentof を使用して解を求る系には、不等式も含むことができます。
|
>
|
eq[8] := [k*a*c*(a+b)*exp(k*d*t)-2*a*exp(k*t)*k+Q*(-c+a)*x, a <> 0];
|
| (4.2.3) |
>
|
Solve(eq[8], {a, b, c, d}, independentof = {t, x});
|
| (4.2.4) |
|
微分方程式または連立微分方程式だけでなく、指定した変数から独立した解を計算することができます。つまり、PDE の例です。
|
>
|
eq[9] := diff(f(x,y),x)*diff(g(x,y),x) + diff(f(x,y),y)*diff(g(x,y),y) + g(x,y)*(diff(f(x,y), x,x) + diff(f(x,y), y,y)) = -1;
|
| (4.2.5) |
|
の一般解は次のようになります。
|
>
|
sol[9] := Solve(eq[9]);
|
| (4.2.6) |
>
|
pdetest(sol[9], eq[9]);
|
| (4.2.7) |
>
|
Solve(eq[9], independentof = x);
|
| (4.2.8) |
>
|
sol[9, x] := Solve(eq[9], independentof = y);
|
| (4.2.9) |
>
|
pdetest(sol[9, x], eq[9]);
|
| (4.2.10) |
|
|
|