DESol - 微分方程式の解を表現するデータ構造
使い方
DESol(expr)
DESol(expr, y)
パラメータ
expr - y に関する微分方程式
y - 変数
|
説明
|
|
•
|
DESol は微分方程式の解を表現するデータ構造です。これは、 solve に対する RootOf のように、 dsolve に対応しています。
|
•
|
DESol データ構造は微分方程式を操作するのを容易にしてくれます。これによって、もっとも顕著なものを挙げただけでも diff, int, evalf, series, simplify などの Maple の他の操作の鍵となり得ます。
|
•
|
DESol は( D を使う)演算子あるいは( diff(...,x) を使う)式として使えます。以下は DESol によって実行されるいくつかの演算の実例です。
|
|
|
例
|
|
演算子型を持つ単純な DESol:
>
|
de1 := DESol( D(y)-y, y );
|
| (2.1) |
それ自身の式で(D を使って)検証できる:
| (2.2) |
同じ方程式だが、関数とする:
>
|
de2 := DESol( diff(y(x),x)-y(x), y(x) );
|
| (2.3) |
de1 を x に適用したものと同等:
| (2.4) |
(diff を使って) それ自身の方程式で検証できる
| (2.5) |
unapply を使えば、関数から演算子へ変換できる
| (2.6) |
もう少しややこしい場合
>
|
alias( de3 = DESol( D(D(y))-a*x*D(y)+y, y )): D(x) := 1: D(a) := 0:
D(D(D(de3)));
|
| (2.7) |
>
|
collect( D(D(D(D(de3)))), D(de3), factor);
|
| (2.8) |
| (2.9) |
積分は (ほとんど) 常に可能であることが判明する
| (2.10) |
表現できるのは線形の DEs だけでない:
>
|
alias( de5 = DESol( D(D(y))/D(y)=y ) ):
D(D(de5))/D(de5)-de5;
|
| (2.11) |
| (2.12) |
初期条件を伴った、大きな振動振り子方程式:
>
|
D(x) := 'D(x)':
de6 := DESol( diff(x(t),t,t) = g/l*sin(x(t)), x(t), {x(0)=0, D(x)(0)=v0} );
|
| (2.13) |
それを積分する
| (2.14) |
その導関数を検証
>
|
diff(de7,t,t,t)-g/l*sin(diff(de7,t));
|
| (2.15) |
他の自明でない積分
>
|
de8 := int(1/(de2+1),x);
|
| (2.16) |
それが実際に積分であることを検証
>
|
normal( diff(de8,x)-1/(de2+1));
|
| (2.17) |
DESols が微分を含んでない場合は、それらは RootOfs になる
>
|
DESol( y(x)^2-y(x)+1, y(x) );
|
| (2.18) |
| (2.19) |
ある場合を除いては微分は難しい
>
|
de9 := DESol( diff(y(x),x,x)*diff(y(x),x)-1, y(x) );
|
| (2.20) |
| (2.21) |
>
|
de10 := unapply(de9,x);
|
| (2.22) |
| (2.23) |
|
|