DifferentialAlgebra[PowerSeriesSolution] - 微分方程式イデアルの形式べき級数解の計算
|
使い方
|
|
PowerSeriesSolution(regchain, initialvalues, opts)
PowerSeriesSolution(conditions, regchain, initialvalues, opts)
|
|
パラメータ
|
|
regchain
|
-
|
イデアルを表す regular differential chain または regular differential chain のリスト
|
initialvalues
|
-
|
(オプション) 独立変数および従属変数と、これらの変数の導関数のための初期値を指定する等式のリストまたは集合
|
disregard = ...
|
-
|
(オプション) 初期値が regchain の等式および(または)不等式を取り消すか否かを無視すします。右辺は nothing (デフォルト), inequations, equations, all とすることができます。
|
order = n
|
-
|
(オプション) 級数展開のorder(順序)を指定する非負整数 。デフォルトの値は Order です。
|
notation
|
-
|
(オプション) jet, tjet, diff または Diff の表記のいずれかとなる出力を要求します。
|
|
|
|
|
モデルの説明
|
|
•
|
関数の呼び出し PowerSeriesSolution(regchain, initialvalues, order = n) は、order = n で打ち切られる regchain によって定義される微分イデアルの積分(指数は非負整数です)、形式(収束問題には対処しません)、べき級数解を返します。引数 initialvalues は、級数の展開点および(一般化された)初期値の両方を提供します。その結果は、diff または Diff の表記内(デフォルトは diff)の の等式(各従属変数に 1 つ)のリストとなります。
|
|
条件
|
|
•
|
関数の呼び出し PowerSeriesSolution(conditions, regchain) は、積分の形式べき級数が計算されるようにするために初期値が満たさなければならない、等式 のリストと不等式のリストの 2 つのリストを含むリストを返します。関数の呼び出し PowerSeriesSolution(conditions, regchain, initialvalues)は、同じ系(等式および不等式)を返しますが、与えられた初期値で指定された展開点において評価されます。
|
•
|
返される等式のリストは、最高次の次数が 以上である regular differential chain の多項式の集合です。Equations を参照してください。不等式のリストは、 regular differential chain の多項式のイニシャルおよび separant の集合です。Inequations を参照してください。
|
|
•
|
が導関数となるような の右辺は、級数が依存する任意定数および(または)関数を提供します。右辺はまた、他に対して代数的である定数の値を提供します。このアルゴリズムは次のように続行します。
|
–
|
まず、一般的な合計を計算しますが、このとき各導関数はそれぞれの標準形に置き換えられます。
|
–
|
次に、以下の規則に従って、いくつかの代入が実行されます。一般的な合計の項でみられる導関数 を検討します。
|
–
|
最後に、結果として得られる式が展開点で評価されます。
|
•
|
展開点における導関数に起因する値は自由に選択することはできません。この値は、conditions オプションを使用する際に PowerSeriesSolution によって返される の式系を満たす必要があります。これらの条件は、デフォルトで確認されますが、disregard = ... オプションを使用して無視することもできます。例の項目を参照してください。
|
–
|
この導関数に起因する値が の式系の解である場合、返されるべき級数は微分イデアルの打ち切られた解です。
|
–
|
これらの値が を満たさない場合、返されるべき級数は微分イデアルの打ち切られた解ではありません。
|
–
|
これらの値が を満たすが、 を満たさない場合、 返されるべき級数は、微分イデアルの打ち切られた解であることも、そうでないこともあります。打ち切られた解である場合、一意である必要はありません。
|
•
|
このコマンドは DifferentialAlgebra パッケージの一部です。with(DifferentialAlgebra) コマンドの実行後に PowerSeriesSolution(...) の形式を使用して呼び出すことができます。また、DifferentialAlgebra[PowerSeriesSolution](...) の形式を使用して直接呼び出すことも可能です。
|
|
|
オプション
|
|
•
|
引数 opts は以下のオプションを 1 個以上含む可能性があります。
|
•
|
disregard = <nothing (デフォルト), inequations, equations, all>:このオプションを使用すると initialvalues のテストを制限できます(上記参照)。
|
–
|
equations :等式 は無視されます。PowerSeriesSolution は不等式が initialvalues によって regular differential chain しているかの確認のみを行ないます。
|
–
|
inequations:不等式は無視されます。PowerSeriesSolution は等式 が initialvalues によって regular differential chain しているかの確認のみを行ないます。
|
•
|
order = n:このオプションは級数展開の打ち切り次数を指定します。与えられない場合、Order の n の値が使用されます。
|
•
|
notation = <jet, tjet, diff または Diff>:関数の呼び出し結果に使用される表記を指定します。指定されない場合、regchain の表記が使用されます。
|
•
|
memout = N:計算に使用されるメモリの制限 N を MB 単位で指定します。デフォルトはゼロです(メモリアウトは発生しません)。
|
|
|
アプリケーションと例題
|
|
>
|
with(DifferentialAlgebra):
|
|
線形常微分方程式 (ODE)
|
|
>
|
R := DifferentialRing(derivations = [t], blocks = [u]);
|
| (5.1.1) |
の ODE のイデアルは単一の要素で構成されていますので、その点に注意します。
>
|
exponential := RosenfeldGroebner([u[t]-u], R)[1];
|
| (5.1.2) |
線形系の初期値に制約はありません。ここに一般的な級数を示します。次数が指定されない場合、Order の値に設定されます。
>
|
PowerSeriesSolution(exponential);
|
| (5.1.3) |
において次数 が 3 までの一般的な級数では、初期値は リスト[...]または集合{...}として入力することができます。
>
|
PowerSeriesSolution(exponential, [u(t[0]) = c], order = 3);
|
| (5.1.4) |
初期値は、 に示されるように、jet の表記で直接表すこともできます。このとき、展開点は原点ではないため、展開点を指定する必要があります。次数 が指定されない場合、Order の値が使用されます。わかりやすく説明するため、初期値を jet の表記で入力します。
>
|
PowerSeriesSolution(exponential, {t = t[0], u = c});
|
| (5.1.5) |
|
|
非線形常微分方程式 (ODE)
|
|
である場合の のイデアルには、1 つのケースしか含まれませんので、この点に注意します。
>
|
ideal := RosenfeldGroebner([u[t]^2 - 4*u, u <> 0], R)[1];
|
| (5.2.1) |
この問題の形式べき級数の初期値が満たす必要のある条件があります。
>
|
PowerSeriesSolution(conditions, ideal);
|
| (5.2.2) |
初期値 はこの条件を満たします。それを確認するには、この初期値を として入力することができます。あるいは、展開点が指定されない場合は 0 に等しいとみなされることを思い出して、を指定せずに初期値を jet の表記に入力することもできます。このとき、次のように表されます。
>
|
PowerSeriesSolution(conditions, ideal, [u = c^2, u[t] = 2*c]);
|
| (5.2.3) |
したがって、多項式になる級数は計算することができます。わかりやすく説明するため、ここでは初期値に jet の表記を使用するのではなく、これと同等なMaple の標準表記を使用します。
>
|
PowerSeriesSolution(ideal, [u(0) = c^2, D(u)(0) = 2*c]);
|
| (5.2.4) |
計算された条件は不等式 に暗示されます。ここで 一例として、初期値 が矛盾につながることを検証します。
>
|
PowerSeriesSolution(conditions, ideal, [u = 0, u[t] = 0]);
|
| (5.2.5) |
引き続き、disregard = inequations オプションを使用して要求された不等式が満たされていないことを無視しながら、 である について形式級数解を計算することはでできます。しかし、イデアルの計算時に RosenfeldGroebner に渡される条件 は、返される解によって( について)満たされはていません。
>
|
PowerSeriesSolution(ideal, [u = 0, u[t] = 0], disregard = inequations);
|
| (5.2.6) |
検討中の例では、初期値を指定しない場合、デフォルトの値が使用されます。つまり、各関数およびその導関数はすべて原点で採用され、すべてがゼロ以外の値であると仮定されます。このデフォルト値は、イデアルの各要素(正則鎖)の等式のすべてを無効にすることはなく、従って、級数を計算することはできません。
>
|
PowerSeriesSolution(ideal, disregard = inequations);
|
エラー:(DifferentialAlgebra:-PowerSeriesSolution では)初期条件がイデアルの等式をすべて無効にすることはありません。
| |
さらに、初期値はイデアルの等式を無効にしなければならないとことを念頭において、ここではこれらの初期値が何であるかを無視して(たとえば、後から調整するとして)、解の一般式の計算をしたい場合があるかもしれません。そのためには、disregard = equations (等式の条件を無視)オプションを使用します。
>
|
PowerSeriesSolution(ideal, disregard = equations);
|
| (5.2.7) |
|
|
熱伝導方程式
|
|
orderly(次数による)ランクですので、この等式の形式べき級数解は、 が何らかの非負整数を表す および 形式のすべての導関数を含みます。古典的には、熱伝導方程式の解は と という 2 つの不定の関数に依存するといわれています。このような形式べき級数は FormalPowerSeries. によって生成することができます。
>
|
R := DifferentialRing(derivations = [t, x], blocks = [u]);
|
| (5.3.1) |
>
|
heat := RosenfeldGroebner([u[t, t] - u[x]], R)[1];
|
| (5.3.2) |
>
|
PowerSeriesSolution(heat, [u=f(x), u[t]=g(x)], order = 2);
|
| (5.3.3) |
|
|
一般的な偏微分方程式(PDE)
|
|
RosenfeldGroebner 関数で計算された regular differential chain は、入力された系の積分の形式べき級数解の積分の計算を可能にします。ここで、多項式の PDE 系を検討します。
>
|
R := DifferentialRing(derivations = [x, y], blocks = [u, v]);
|
| (5.4.1) |
>
|
syst := [u[x, x]^2*v+u[x, x]*v+u[x], u[x, y], u[y, y]^2-1, u[x] <> 0];
|
| (5.4.2) |
syst で生成された微分イデアルの累乗は、 regular differential chain によって示される 2 つの微分イデアルの交わりです。 よって、syst の解の集合はこの 2 つの微分鎖の解の集合を結合させたものです。
>
|
ideal := RosenfeldGroebner(syst, R);
|
| (5.4.3) |
1 番目のコンポーネントの等式の左辺を検査すると、その解は、1 つの不定の関数 、3 つの任意定数 , , 、および 、他の および に対して代数的である 2 つの定数に依存することがわかります。
>
|
Equations(ideal[1], solved);
|
| (5.4.4) |
ここで、いくつかの値を選択します。一部は記号値であり一部は数値です。1 つ目は、値が上記の系を満たすことを検証しています。次に級数を計算します。
>
|
iv := [v = 1+x*f(x), u[y, y] = 1, u = c[0], u[x] = 0, u[y] = c[2], u[x, x] = -1];
|
| (5.4.5) |
>
|
PowerSeriesSolution(conditions, ideal[1], iv);
|
| (5.4.6) |
>
|
PowerSeriesSolution(ideal[1], iv, order = 3);
|
| (5.4.7) |
>
|
Equations(ideal[2], solved);
|
| (5.4.8) |
>
|
sols := PowerSeriesSolution(ideal[2], [u = c[0], u[y] = c[1], v = c[2], u[y, y] = 1], order = 10);
|
| (5.4.9) |
これらの解は多項式です。これらを入力された等式に入れ込み、結果を検証することができます。
>
|
sys := Tools:-FromJet(syst, [(u, v)(x,y)]);
|
| (5.4.10) |
| (5.4.11) |
|
|
|