[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

21. Differential Equations


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

21.1 Introduction to Differential Equations

この節は Maximaで利用可能な、 一次と二次方程式のいくつかの特定のタイプの解析解を得るための関数を記述します。 微分方程式系の数値解を得るには 付加パッケージdynamicsを参照してください。 位相空間でのグラフィカルな表現に関しては 付加パッケージplotdfを参照してください。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

21.2 Functions and Variables for Differential Equations

関数: bc2 (solution, xval1, yval1, xval2, yval2)

二階微分方程式の境界値問題を解きます。 ここで: solutionode2が見つけるような方程式の一般解です; xval1は独立変数の最初の点の値を形式 x = x1で指定し、 yval1はその点の従属変数の値を形式 y = y1で与えます。 式 xval2yval2は 対応する変数の二番目の点での値を同じ形式を使って与えます。

用法の例については ode2を参照してください。

Categories:  Differential equations

関数: desolve  
    desolve (eqn, x)  
    desolve ([eqn_1, ..., eqn_n], [x_1, ..., x_n])

関数 desolveはラプラス変換を使って線形常微分方程式系を解きます。 ここで eqn群は従属変数 x_1, ..., x_nに関する微分方程式です。 x_1, ..., x_nの独立変数―例えばx―への関数依存性は 変数や導関数の中で明示されなければいけません。 例えば、以下は2つの方程式を定義する正しい方法ではありません:

 
eqn_1: 'diff(f,x,2) = sin(x) + 'diff(g,x);
eqn_2: 'diff(f,x) + x^2 - f = 2*'diff(g,x,2);

正しい方法は以下の通りです:

 
eqn_1: 'diff(f(x),x,2) = sin(x) + 'diff(g(x),x);
eqn_2: 'diff(f(x),x) + x^2 - f(x) = 2*'diff(g(x),x,2);

関数 desolveのコールは、

 
desolve([eqn_1, eqn_2], [f(x),g(x)]);

です。

もし x=0の初期条件が既知なら、 それらは atvalueを使って desolveコールの前に供給することができます。

 
(%i1) 'diff(f(x),x)='diff(g(x),x)+sin(x);
                 d           d
(%o1)            -- (f(x)) = -- (g(x)) + sin(x)
                 dx          dx
(%i2) 'diff(g(x),x,2)='diff(f(x),x)-cos(x);
                  2
                 d            d
(%o2)            --- (g(x)) = -- (f(x)) - cos(x)
                   2          dx
                 dx
(%i3) atvalue('diff(g(x),x),x=0,a);
(%o3)                           a
(%i4) atvalue(f(x),x=0,1);
(%o4)                           1
(%i5) desolve([%o1,%o2],[f(x),g(x)]);
                  x
(%o5) [f(x) = a %e  - a + 1, g(x) =

                                                x
                                   cos(x) + a %e  - a + g(0) - 1]
(%i6) [%o1,%o2],%o5,diff;
             x       x      x                x
(%o6)   [a %e  = a %e , a %e  - cos(x) = a %e  - cos(x)]

もし desolveが解を得られないなら falseを返します。

関数: ic1 (solution, xval, yval)

一階微分方程式の初期値問題を解きます。 ここで solutionode2が見つけるような方程式の一般解であり、 xvalは独立変数の初期値を形式 x = x0で与え、 yvalは従属変数の初期値を形式 y = y0で与えます。

用法の例については ode2を参照してください。

Categories:  Differential equations

関数: ic2 (solution, xval, yval, dval)

二階微分方程式の初期値を解きます。 ここで solutionode2が見つけるような方程式の一般解のであり、 xvalは独立変数の初期値を形式 x = x0で与え、 yvalは従属変数の初期値を形式 y = y0で与え、 dvalは従属変数の独立変数に関する一階導関数の初期値を形式 diff(y,x) = dy0で与えます。 (diffはクォートの必要はありません。)

用法の例については ode2を参照してください。

Categories:  Differential equations

関数: ode2 (eqn, dvar, ivar)

関数 ode2は一階または二階常微分方程式 (ODE)を解きます。 3つの引数を取ります: eqnで与えられるODE、従属変数 dvar、独立変数 ivar。 成功した時、従属変数に関する陽解または陰解を返します。 一階方程式の場合 %cが積分定数を表し、 二階方程式の場合 %k1%k2が定数を表します。 従属変数の独立変数への依存性は、 desolveの場合のように明示の必要はありませんが、 独立変数はいつも三番目の引数として与えられなければいけません。

たとえどんな理由でも もし ode2が解を得られなかったら、 おそらく、エラーメッセージを表示した後 falseを返します。 一階方程式用に実装された方法は、試される順番に、線形、分離、厳密―おそらく因子の積分を要求します―、斉次、ベルヌーイの等式、一般化斉次法、です。 解ける二階方程式のタイプは、定係数、厳密、定数係数に変換可能な非定数係数線形斉次、 オイラーまたは等次元方程式、パラメータ変動法で解ける方程式、 独立変数または従属変数を含まなくて、順に解かれる2つの一階線形方程式に換算できる方程式、 です。

ODEを解く間、いくつかの変数が純粋に参考目的で設定されます: methodは使われた解法(例えば、 linear)を示し、 intfactorは任意の使われた積分因子を示し、 odeindexはベルヌーイ法または一般化斉次法のインデックスを示し、 ypはパラメータ変動手法の特殊解を示します。

初期値問題(IVP)を解くためには、 一階と二階方程式のためには関数 ic1ic2が利用可能であり、 二階境界値問題(BVP)を解くためには bc2を使うことができます。

例:

 
(%i1) x^2*'diff(y,x) + 3*y*x = sin(x)/x;
                      2 dy           sin(x)
(%o1)                x  -- + 3 x y = ------
                        dx             x
(%i2) ode2(%,y,x);
                             %c - cos(x)
(%o2)                    y = -----------
                                  3
                                 x
(%i3) ic1(%o2,x=%pi,y=0);
                              cos(x) + 1
(%o3)                   y = - ----------
                                   3
                                  x
(%i4) 'diff(y,x,2) + y*'diff(y,x)^3 = 0;
                         2
                        d y      dy 3
(%o4)                   --- + y (--)  = 0
                          2      dx
                        dx
(%i5) ode2(%,y,x);
                      3
                     y  + 6 %k1 y
(%o5)                ------------ = x + %k2
                          6
(%i6) ratsimp(ic2(%o5,x=0,y=0,'diff(y,x)=2));
                             3
                          2 y  - 3 y
(%o6)                   - ---------- = x
                              6
(%i7) bc2(%o5,x=0,y=1,x=1,y=3);
                         3
                        y  - 10 y       3
(%o7)                   --------- = x - -
                            6           2

Categories:  Differential equations


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by 市川雄二 on February, 2 2019 using texi2html 1.76.