dsolve/inttrans - 常微分方程式の積分変換法による解法
使い方
dsolve(deqns, vars, method=transform)
dsolve(deqns, vars, method=transform, options)
パラメータ
deqns - vars からなる常微分方程式、またはそれらの集合と初期条件
vars - 解きたい変数、またはそれらの集合
method=transform - 方程式の変換、 laplace 変換、 fourier 変換、 fouriercos 変換、 fouriersin 変換
options - 方程式のオプション
|
説明
|
|
•
|
一つの積分変換法を用いて解く場合、 method=transform オプションを付けた dsolve コマンドを実行して下さい。dsolve のオプションに pointwise=true を加えた場合、要求される解は各点で初期条件を満足すべきです。これは、解が初期値の指定された初期条件を評価することを保証します。デフォルトでは、入力された条件が超関数の方法で満たされているという意味で false と設定されています ( すなわち、変換自身の指定によって適用されます。 ) 。これは、超関数 ( Dirac の関数、または Heaviside 関数 ) が存在するような微分方程式を入力したときに最も関連してきます。これらのアプローチの相違を説明する例として、以下にある例をご参照ください。
|
•
|
使用上の注意としましては、いくつかの変換 ( 最も著しくは fourier-type の変換 ) は確かな漸近的性質を持つ解によって良く定義 ( well defined ) されています。
|
|
例えば、定数係数 2 階常微分方程式を fouriersin 変換を用いて解く場合、解 y(t) は t -> infinity のとき消えなければなりません。事実上、この制限は問題の境界条件の一つとなっていて、他の境界条件のうちの一つだけが適用できることになります。
|
•
|
変換を用いて定数係数 2 階常微分方程式の解を求める場合のいくつかのガイドラインは、以下の通りです。
|
|
fourier 変換 : ( 任意の t で定義された ) 常微分方程式の解 y(t) は、境界 t で +/- 無限大に発散しなければなりません。他の境界条件は適用することができません。
|
|
fouriersin 変換 : ( t>=0 で定義された ) 常微分方程式の解 y(t) は、境界 t で + 無限大に発散しなければならず、さらに y(0) を指定することができます。
|
|
fouriercos 変換 : ( t>=0 で定義された ) 常微分方程式の解 y(t) は、境界 t で + 無限大に発散しなければならず、さらに D(y)(0) を指定することができます。
|
|
laplace 変換 : ( t>=0 で定義された ) 常微分方程式の解 y(t) は、準指数的でなければならず、さらに y(0) と D(y)(0) のどちらも指定することができます。
|
•
|
さらに、常微分方程式、または連立常微分方程式の解を得るために積分変換を選ぶときは中止しなければなりません。例えば、多項式係数の問題に fourier-type の変換を用いる場合、他のより高階な常微分方程式の解を必要とするかもしれません。 ( 以下の例をご参照ください。 )
|
|
|
例
|
|
>
|
de1 := diff(y(t),t$2) + 5*diff(y(t),t) + 6*y(t) = 0;
|
| (2.1) |
>
|
dsolve({de1, y(0)=0, D(y)(0)=1}, y(t),method=laplace);
|
| (2.2) |
>
|
de2 := diff(y(t),t)-y(t)=exp(-t^2);
|
| (2.3) |
>
|
dsolve(de2,y(t),method = fourier);
|
| (2.4) |
>
|
F := t -> Heaviside(3-t)*A;
|
| (2.5) |
>
|
assume(h>0);
de3 := diff(y(t),t,t) - h*y(t)=F(t);
|
| (2.6) |
>
|
dsolve({de3, D(y)(0)=1}, y(t),method = fouriercos);
|
| (2.7) |
>
|
de4 := diff(y(t),t,t) - h*y(t)=F(t);
|
| (2.8) |
>
|
dsolve({de4, y(0)=1}, y(t),method = fouriersin);
|
| (2.9) |
これは解を与えていません。( 指定が多すぎます。 )
>
|
dsolve({de4, y(0)=0, D(y)(0)=1}, y(t),method = fouriersin);
|
この変換は逆効果となります。
>
|
de5 := diff(y(t),t,t) + t^8*y(t) = exp(-t^2);
|
| (2.10) |
>
|
inttrans[fourier](de5, t, z);
|
| (2.11) |
8 階常微分方程式を得ることになるでしょう。
初期条件を持つ fourier 変換を実行しても、解が得られません。
>
|
de6 := diff(y(x),x,x)+y(x) = x^2*sin(x);
|
| (2.12) |
>
|
dsolve({de6, y(0)=1}, y(x), method=fourier);
|
以下の常微分方程式は、'pointwise'=true なる指定に依存している異なった解を持ちます。
>
|
de7 := diff(x(t),t,t)+4*x(t)=Dirac(t);
|
| (2.13) |
>
|
sol7a := dsolve({de7,x(0)=0,D(x)(0)=0},x(t),method=laplace);
|
| (2.14) |
以下に見られるように、得られた解は各点で初期条件を十分に満たしていません。
>
|
eval(diff(sol7a,t),t=0);
|
| (2.15) |
条件を満足するように実行するには、以下のように使用することができます。
>
|
sol7b := dsolve({de7,x(0)=0,D(x)(0)=0},x(t),method=laplace,
pointwise=true);
|
| (2.16) |
>
|
eval(diff(sol7b,t),t=0);
|
| (2.17) |
|
|