| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
| 21.1 Introduction to Differential Equations | ||
| 21.2 Functions and Variables for Differential Equations |
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
この節は
Maximaで利用可能な、
一次と二次方程式のいくつかの特定のタイプの解析解を得るための関数を記述します。
微分方程式系の数値解を得るには
付加パッケージdynamicsを参照してください。
位相空間でのグラフィカルな表現に関しては
付加パッケージplotdfを参照してください。
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
二階微分方程式の境界値問題を解きます。
ここで: solutionは ode2が見つけるような方程式の一般解です;
xval1は独立変数の最初の点の値を形式 x = x1で指定し、
yval1はその点の従属変数の値を形式 y = y1で与えます。
式 xval2と yval2は
対応する変数の二番目の点での値を同じ形式を使って与えます。
用法の例については ode2を参照してください。
Categories: Differential equations
関数 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を返します。
Categories: Differential equations ·Laplace transform
一階微分方程式の初期値問題を解きます。
ここで solutionは ode2が見つけるような方程式の一般解であり、
xvalは独立変数の初期値を形式 x = x0で与え、
yvalは従属変数の初期値を形式 y = y0で与えます。
用法の例については ode2を参照してください。
Categories: Differential equations
二階微分方程式の初期値を解きます。
ここで solutionは ode2が見つけるような方程式の一般解のであり、
xvalは独立変数の初期値を形式 x = x0で与え、
yvalは従属変数の初期値を形式 y = y0で与え、
dvalは従属変数の独立変数に関する一階導関数の初期値を形式
diff(y,x) = dy0で与えます。
(diffはクォートの必要はありません。)
用法の例については ode2を参照してください。
Categories: Differential equations
関数 ode2は一階または二階常微分方程式 (ODE)を解きます。
3つの引数を取ります:
eqnで与えられるODE、従属変数 dvar、独立変数 ivar。
成功した時、従属変数に関する陽解または陰解を返します。
一階方程式の場合 %cが積分定数を表し、
二階方程式の場合 %k1と%k2が定数を表します。
従属変数の独立変数への依存性は、
desolveの場合のように明示の必要はありませんが、
独立変数はいつも三番目の引数として与えられなければいけません。
たとえどんな理由でも もし ode2が解を得られなかったら、
おそらく、エラーメッセージを表示した後 falseを返します。
一階方程式用に実装された方法は、試される順番に、線形、分離、厳密―おそらく因子の積分を要求します―、斉次、ベルヌーイの等式、一般化斉次法、です。
解ける二階方程式のタイプは、定係数、厳密、定数係数に変換可能な非定数係数線形斉次、
オイラーまたは等次元方程式、パラメータ変動法で解ける方程式、
独立変数または従属変数を含まなくて、順に解かれる2つの一階線形方程式に換算できる方程式、
です。
ODEを解く間、いくつかの変数が純粋に参考目的で設定されます:
methodは使われた解法(例えば、 linear)を示し、
intfactorは任意の使われた積分因子を示し、
odeindexはベルヌーイ法または一般化斉次法のインデックスを示し、
ypはパラメータ変動手法の特殊解を示します。
初期値問題(IVP)を解くためには、
一階と二階方程式のためには関数 ic1と ic2が利用可能であり、
二階境界値問題(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
| [ << ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
この文書は市川 雄二によって2014年4月月20日にtexi2html 1.82を用いて生成されました。