| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
| 18.1 Functions and Variables for Differentiation |
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
2要素リストを返します。 そのリストから exprの xに関する不定積分(antiderivative)が構成できます。 式 exprは未知の関数 uとその導関数を含むかもしれません。
2要素リスト Lがantidの戻り値だとします。
L[1] + 'integrate (L[2], x)は
exprの xに関する不定積分です。
antidが完全に成功した時、戻り値の二番目の要素は0です。
そうでないなら、二番目の要素は0ではなく、一番目の要素は0でないか0かです。
もし antidが全く進展できないなら、
一番目の要素が0で、二番目は0ではないです。
load ("antid")はこの関数をロードします。
antidパッケージは関数 nonzeroandfreeofと linearも定義します。
antidは以下のように antidiffと関係します。
2要素リスト Lが antidの戻り値とします。
antidiffの戻り値は
L[1] + 'integrate (L[2], x)に等しいです。
ここで xは積分変数です。
例:
(%i1) load ("antid")$
(%i2) expr: exp (z(x)) * diff (z(x), x) * y(x);
z(x) d
(%o2) y(x) %e (-- (z(x)))
dx
(%i3) a1: antid (expr, x, z(x));
z(x) z(x) d
(%o3) [y(x) %e , - %e (-- (y(x)))]
dx
(%i4) a2: antidiff (expr, x, z(x));
/
z(x) [ z(x) d
(%o4) y(x) %e - I %e (-- (y(x))) dx
] dx
/
(%i5) a2 - (first (a1) + 'integrate (second (a1), x));
(%o5) 0
(%i6) antid (expr, x, y(x));
z(x) d
(%o6) [0, y(x) %e (-- (z(x)))]
dx
(%i7) antidiff (expr, x, y(x));
/
[ z(x) d
(%o7) I y(x) %e (-- (z(x))) dx
] dx
/
Categories: Integral calculus
exprの xに関する不定積分(antiderivative)を返します。 式 exprは未知の関数 uとその導関数を含むかもしれません。
antidiffが完全に成功した時、
結果の式は積分記号を含みません(すなわち integrate名詞を含みません)。
そうでないなら、
antidiffは部分的にまたは完全に積分記号内にある式を返します。
もし antidiffが全く進展できないなら、戻り値はそっくり積分記号内にあります。
load ("antid")はこの関数をロードします。
antidパッケージは関数 nonzeroandfreeofと linearも定義します。
antidiffは以下のように antidと関係します。
2要素リスト Lが antidの戻り値とします。
antidiffの戻り値は
L[1] + 'integrate (L[2], x)に等しいです。
ここで xは積分変数です。
例:
(%i1) load ("antid")$
(%i2) expr: exp (z(x)) * diff (z(x), x) * y(x);
z(x) d
(%o2) y(x) %e (-- (z(x)))
dx
(%i3) a1: antid (expr, x, z(x));
z(x) z(x) d
(%o3) [y(x) %e , - %e (-- (y(x)))]
dx
(%i4) a2: antidiff (expr, x, z(x));
/
z(x) [ z(x) d
(%o4) y(x) %e - I %e (-- (y(x))) dx
] dx
/
(%i5) a2 - (first (a1) + 'integrate (second (a1), x));
(%o5) 0
(%i6) antid (expr, x, y(x));
z(x) d
(%o6) [0, y(x) %e (-- (z(x)))]
dx
(%i7) antidiff (expr, x, y(x));
/
[ z(x) d
(%o7) I y(x) %e (-- (z(x))) dx
] dx
/
Categories: Integral calculus
等式のリスト [eqn_1, ..., eqn_n]
もしくは1つの等式 eqnの中で指定されたように値を仮定された変数を使って
式 exprを評価します。
もし値が指定される変数のいずれかに部分式が依存するけれど
指定のatvalueがなく他の方法で評価できないなら、
atの名詞形を返し、2次元形式で表示します。
atは多重代入を並列に実行します。
atvalueも参照してください。
代入を実行する他の関数に関しては substや evも参照してください。
例:
(%i1) atvalue (f(x,y), [x = 0, y = 1], a^2);
2
(%o1) a
(%i2) atvalue ('diff (f(x,y), x), x = 0, 1 + y);
(%o2) @2 + 1
(%i3) printprops (all, atvalue);
!
d !
--- (f(@1, @2))! = @2 + 1
d@1 !
!@1 = 0
2
f(0, 1) = a
(%o3) done
(%i4) diff (4*f(x, y)^2 - u(x, y)^2, x);
d d
(%o4) 8 f(x, y) (-- (f(x, y))) - 2 u(x, y) (-- (u(x, y)))
dx dx
(%i5) at (%, [x = 0, y = 1]);
!
2 d !
(%o5) 16 a - 2 u(0, 1) (-- (u(x, y))! )
dx !
!x = 0, y = 1
Categories: Evaluation · Differential equations
atomgradは式のアトムの勾配プロパティです。
このプロパティは gradefで割り当てられます。
Categories: Differential calculus
値 cを点 x = aの exprに割り当てます。
典型的にはこのメカニズムが境界値を確立します。
exprは関数引数が明示的に現れる関数評価
f(x_1, ..., x_m)か導関数
diff (f(x_1, ..., x_m), x_1, n_1, ..., x_n, n_m)
です。
n_iは x_iに関する微分の階数です。
等式のリスト
[x_1 = a_1, ..., x_m = a_m]
はatvalueを確立する点を与えます。
もし1変数 x_1なら、
リストとしてくくることなしに等式1つを与えます。
printprops ([f_1, f_2, ...], atvalue)は
関数 f_1, f_2, ...のatvalueを
atvalueコールで指定されたように表示します。
printprops (f, atvalue)は
1関数 fのatvalueを表示します。
printprops (all, atvalue)は
atvaluesが定義された関数すべての atvalueを表示します。
atvaluesが表示される時、
シンボル @1, @2, … は
変数 x_1, x_2, …を表します。
atvalueは引数を評価します。
atvalueは c, atvalueそのものを返します。
例:
(%i1) atvalue (f(x,y), [x = 0, y = 1], a^2);
2
(%o1) a
(%i2) atvalue ('diff (f(x,y), x), x = 0, 1 + y);
(%o2) @2 + 1
(%i3) printprops (all, atvalue);
!
d !
--- (f(@1, @2))! = @2 + 1
d@1 !
!@1 = 0
2
f(0, 1) = a
(%o3) done
(%i4) diff (4*f(x,y)^2 - u(x,y)^2, x);
d d
(%o4) 8 f(x, y) (-- (f(x, y))) - 2 u(x, y) (-- (u(x, y)))
dx dx
(%i5) at (%, [x = 0, y = 1]);
!
2 d !
(%o5) 16 a - 2 u(0, 1) (-- (u(x, y))! )
dx !
!x = 0, y = 1
Categories: Differential equations · Declarations and inferences
微分形式の外積代数はエリーカルタンによって開発された微分幾何の基本ツールであり、
偏微分方程式論で有用な応用があります。
cartanパッケージは
演算子 ~ (ウェッジ積)と | (形式とベクトルの縮約)と合わせて
関数 ext_diffと lie_diffを実装します。
例と一緒にこれらのコマンドの簡潔な記述を見るには demo (tensor)を実行してください。
cartanは F.B. EstabrookとH.D. Wahlquistによって実装されました。
Categories: Differential geometry
del (x)は変数 xの微分を表します。
もし独立変数を指定しないなら、
diffは delを含む式を返します。
この場合、戻り値は「全微分」と呼ばれるものです。
例:
(%i1) diff (log (x));
del(x)
(%o1) ------
x
(%i2) diff (exp (x*y));
x y x y
(%o2) x %e del(y) + y %e del(x)
(%i3) diff (x*y*z);
(%o3) x y del(z) + x z del(y) + y z del(x)
Categories: Differential calculus
Diracのデルタ関数
今のところ、laplaceだけが deltaを知っています。
例:
(%i1) laplace (delta (t - a) * sin(b*t), t, s);
Is a positive, negative, or zero?
p;
- a s
(%o1) sin(a b) %e
Categories: Mathematical functions · Laplace transform
変数 dependenciesは、
dependsや関数 dependencies, gradefが割り当てた関数依存を持つアトムのリストです。
dependenciesリストは累積的です:
dependsや dependencies, gradefをコールする毎に上乗せの項目を追加します。
dependenciesのデフォルト値は []です。
関数 dependencies(f_1, …, f_n)は f_1, …, f_nを dependenciesリストに追加します。
ここで、 f_1, …, f_nは形式 f(x_1, …, x_m)の式であり、
x_1, …, x_mは任意の数の引数です。
dependencies(f(x_1, …, x_m))は depends(f, [x_1, …, x_m])と等価です。
dependsと gradefを参照してください。
(%i1) dependencies;
(%o1) []
(%i2) depends (foo, [bar, baz]);
(%o2) [foo(bar, baz)]
(%i3) depends ([g, h], [a, b, c]);
(%o3) [g(a, b, c), h(a, b, c)]
(%i4) dependencies;
(%o4) [foo(bar, baz), g(a, b, c), h(a, b, c)]
(%i5) dependencies (quux (x, y), mumble (u));
(%o5) [quux(x, y), mumble(u)]
(%i6) dependencies;
(%o6) [foo(bar, baz), g(a, b, c), h(a, b, c), quux(x, y),
mumble(u)]
(%i7) remove (quux, dependency);
(%o7) done
(%i8) dependencies;
(%o8) [foo(bar, baz), g(a, b, c), h(a, b, c), mumble(u)]
Categories: Declarations and inferences · Global variables
導関数を計算するために変数の間の関数依存を宣言します。
宣言された依存関係がないと diff (f, x)の結果はゼロです。
もし depends (f, x)を宣言したら、
diff (f, x)の結果はシンボリックな導関数(すなわち diff名詞)です。
それぞれの引数 f_1, x_1などは、 変数や配列の名前、または名前のリストをとり得ます。 f_i (多分ただ1つの要素)のすべての要素は、 x_i (多分ただ1つの要素)のすべての要素に依存するように宣言されます。 もしいくつかの f_iが配列名だったり配列名を含むなら、 配列の要素すべては x_iに依存します。
diffは dependsが確立した間接的依存関係を認識し、
これらの場合に連鎖規則を適用します。
remove (f, dependency)は
fに関して宣言された依存関係すべてを取り除きます。
dependsは確立した依存関係のリストを返します。
依存関係はグローバル変数 dependenciesに追加されます。
dependsは引数を評価します。
diffは
dependsが確立する依存関係を認識する唯一の Maximaコマンドです。
他の関数( integrate, laplaceなど)は
引数が明示的に示す依存関係だけを認識します。
例えば、integrateは、
integrate (f(x), x)のように陽に表現されないなら
fの xへの依存性を認識しません。
depends(f, [x_1, …, x_n])は dependencies(f(x_1, …, x_n))と等価です。
(%i1) depends ([f, g], x);
(%o1) [f(x), g(x)]
(%i2) depends ([r, s], [u, v, w]);
(%o2) [r(u, v, w), s(u, v, w)]
(%i3) depends (u, t);
(%o3) [u(t)]
(%i4) dependencies;
(%o4) [f(x), g(x), r(u, v, w), s(u, v, w), u(t)]
(%i5) diff (r.s, u);
dr ds
(%o5) -- . s + r . --
du du
(%i6) diff (r.s, t);
dr du ds du
(%o6) -- -- . s + r . -- --
du dt du dt
(%i7) remove (r, dependency);
(%o7) done
(%i8) diff (r.s, t);
ds du
(%o8) r . -- --
du dt
Categories: Differential calculus · Declarations and inferences
デフォルト値: false
derivabbrevが trueの時、
シンボリックな導関数(すなわち diff名詞)が下付き添字として表示されます。
そうでないなら導関数はライプニッツ表記 dy/dxで表示されます。
Categories: Differential calculus · Global flags
exprに現れる独立変数 xに関する従属変数 yの微分の最高階数を返します。
例:
(%i1) 'diff (y, x, 2) + 'diff (y, z, 3) + 'diff (y, x) * x^2;
3 2
d y d y 2 dy
(%o1) --- + --- + x --
3 2 dx
dz dx
(%i2) derivdegree (%, y, x);
(%o2) 2
Categories: Differential calculus · Expressions
evコマンド内にて示された変数に関する微分だけを生じさせます。
Categories: Differential calculus · Evaluation
デフォルト値: false
derivsubstが trueの時、
subst (x, 'diff (y, t), 'diff (y, t, 2))
のような非構文法的代入は 'diff (x, t)をもらします。
Categories: Differential calculus · Expressions
exprの中のすべての変数の中のいくつかに関する exprの導関数すなわち微分を返します。
diff (expr, x, n)は
xに関する exprの n階微分を返します。
diff (expr, x_1, n_1, ..., x_m, n_m)は
x_1, ..., x_mに関する exprの偏微分を返します。
これは diff (... (diff (expr, x_m, n_m) ...), x_1, n_1)と同値です。
diff (expr, x)は変数 xに関する
exprの1階微分を返します。
diff (expr)は exprの全微分を返します。
すなわち、それぞれの変数に関する exprの微分に変数それぞれの微分
delを掛けたものの和を返します。
delの更なる整理は提供されません。
微分方程式を記述する時などいくつかの文脈で diffの名詞形式が要求されます。
これらの場合、 diffは微分が実行される代わりに名詞形式を出力するために
('diffとして)クォートされるかもしれません。
derivabbrevが trueの時、導関数は下付き添字として表示されます。
そうでないなら、導関数はライブニツ記法の dy/dxで表示されます。
例:
(%i1) diff (exp (f(x)), x, 2);
2
f(x) d f(x) d 2
(%o1) %e (--- (f(x))) + %e (-- (f(x)))
2 dx
dx
(%i2) derivabbrev: true$
(%i3) 'integrate (f(x, y), y, g(x), h(x));
h(x)
/
[
(%o3) I f(x, y) dy
]
/
g(x)
(%i4) diff (%, x);
h(x)
/
[
(%o4) I f(x, y) dy + f(x, h(x)) h(x) - f(x, g(x)) g(x)
] x x x
/
g(x)
テンソルパッケージのために以下の変更が取り込まれています:
(1) exprの中の任意の添字付きオブジェクトの導関数は 追加された引数として添えられた変数 x_iを持ちます。 そして導関数の添字はすべてソートされます。
(2) x_iは 1から変数 dimension [デフォルト値: 4]の値までの整数を取ります。
これにより、例えば [x, y, z, t]など座標名のリストして設定されたリスト
coordinatesの x_i番目のメンバーに関する微分が実行されます。
もし coordinatesがアトムの変数にバインドされているなら、
x_iで下付き添字された変数が、微分の変数として使われます。
これにより、座標名や
X[1], X[2], …のような下付き添字付き名前の配列が使えることになります。
もし coordinatesに値が割り当てられていないなら、変数は上の(1)のように扱われます。
Categories: Differential calculus
evコールで evflagとして diffが存在する時、
exprの中で表現されたすべての微分が実行されます。
スカラーのダランベルシアンをスカラー関数 fに適用します。
load ("ctensor")はこの関数をロードします。
Categories: Differential calculus · Package ctensor
名詞形の微分演算子を偏微分を使った式に展開します。
expressは演算子
grad, div, curl, laplacianを認識します。
expressは外積 ~も展開します。
ev関数コールかコマンドラインに diffを含ませることで、
expressの戻り値の中のシンボリックな導関数(すなわち
diff名詞)を評価することができます。
この文脈では diffは evfunとして振る舞います。
load ("vect")はこの関数をロードします。
例:
(%i1) load ("vect")$
(%i2) grad (x^2 + y^2 + z^2);
2 2 2
(%o2) grad (z + y + x )
(%i3) express (%);
d 2 2 2 d 2 2 2 d 2 2 2
(%o3) [-- (z + y + x ), -- (z + y + x ), -- (z + y + x )]
dx dy dz
(%i4) ev (%, diff);
(%o4) [2 x, 2 y, 2 z]
(%i5) div ([x^2, y^2, z^2]);
2 2 2
(%o5) div [x , y , z ]
(%i6) express (%);
d 2 d 2 d 2
(%o6) -- (z ) + -- (y ) + -- (x )
dz dy dx
(%i7) ev (%, diff);
(%o7) 2 z + 2 y + 2 x
(%i8) curl ([x^2, y^2, z^2]);
2 2 2
(%o8) curl [x , y , z ]
(%i9) express (%);
d 2 d 2 d 2 d 2 d 2 d 2
(%o9) [-- (z ) - -- (y ), -- (x ) - -- (z ), -- (y ) - -- (x )]
dy dz dz dx dx dy
(%i10) ev (%, diff);
(%o10) [0, 0, 0]
(%i11) laplacian (x^2 * y^2 * z^2);
2 2 2
(%o11) laplacian (x y z )
(%i12) express (%);
2 2 2
d 2 2 2 d 2 2 2 d 2 2 2
(%o12) --- (x y z ) + --- (x y z ) + --- (x y z )
2 2 2
dz dy dx
(%i13) ev (%, diff);
2 2 2 2 2 2
(%o13) 2 y z + 2 x z + 2 x y
(%i14) [a, b, c] ~ [x, y, z];
(%o14) [a, b, c] ~ [x, y, z]
(%i15) express (%);
(%o15) [b z - c y, c x - a z, a y - b x]
Categories: Differential calculus · Vectors · Operators
関数 fまたは変数 aの偏微分(すなわち、勾配の成分)を定義します。
gradef (f(x_1, ..., x_n), g_1, ..., g_m)は
df/dx_iを g_iとして定義します。
ここで g_iは式です; g_iは関数コールでもあり得ますが関数名ではありません。
偏微分の数 mは引数の数 nよりも小さいかもしれません。
その場合、微分は x_1から x_mまでのみに関して定義されます。
gradef (a, x, expr)は変数 aの
xに関する微分を exprと定義します。
これは (depends (a, x)を介して)
aの xへの依存性も確立します。
最初の引数 f(x_1, ..., x_n)または
aはクォートされますが、
残りの引数 g_1, ..., g_mは評価されます。
gradefは偏微分が定義される関数や変数を返します。
gradefは Maximaの組み込み関数の微分を再定義できます。
例えば、gradef (sin(x), sqrt (1 - sin(x)^2))は
sinの微分を再定義します。
gradefは添字付き関数の偏微分を定義できません。
printprops ([f_1, ..., f_n], gradef)は関数
f_1, ..., f_nの偏微分を
gradefで定義されたように表示します。
printprops ([a_n, ..., a_n], atomgrad)は変数
a_n, ..., a_nの偏微分を
gradefで定義されたように表示します。
gradefsは gradefが偏微分を定義した関数のリストです。
gradefsは gradefが偏微分を定義した変数は含みません。
例えば、関数は明示的は知られていませんが一階微分が知られていて、 高階の微分を得ることが望まれる時、勾配が必要とされます。
Categories: Differential calculus · Declarations and inferences
デフォルト値: []
gradefsは gradefが偏微分を定義した関数のリストです。
gradefsは gradefが偏微分を定義した変数は含みません。
Categories: Differential calculus · Declarations and inferences
変数 tに関するラブラス変換 exprを計算し、パラメータ sに変換しようとします。
laplaceは
exprの中で
derivative, integrate, sum, iltはもちろん関数
delta, exp, log, sin, cos, sinh,
cosh, erfを認識します。
もし laplaceが変換を見つけられなかったら、
関数 specintをコールします。
specintはベッセル関数
bessel_j, bessel_i, …のような
特殊関数を含む式のラプラス変換を見つけることができ、
unit_step関数を扱うことができます。
specintも参照してください。
もし specintも解を見つけられないなら、
名詞 laplaceを返します。
exprは従属変数の
atvalueが使われている線形定数係数微分方程式であり得ます。
要求の atvalueは
変換を計算する前でも後でも供給できます。
初期条件をゼロ点で指定しなければいけないので、
もし他に課される境界条件を持つなら
一般解にそれらを課すことができます。
それらに関して一般解を解き、それらの値を代入し返すことによって定数を消去できます。
laplaceは、形式
integrate (f(x) * g(t - x), x, 0, t)の畳み込み積分を認識します;
他の種類の畳み込みは認識されません。
関数関係は exprで明示的に表現しなければいけません;
dependsで確立した暗黙の関係は認識されません。
例えば、もし fが xと yに依存するなら、
f (x, y)が exprの中に現れなければいけません。
逆ラプラス変換 iltも参照してください。
例:
(%i1) laplace (exp (2*t + a) * sin(t) * t, t, s);
a
%e (2 s - 4)
(%o1) ---------------
2 2
(s - 4 s + 5)
(%i2) laplace ('diff (f (x), x), x, s);
(%o2) s laplace(f(x), x, s) - f(0)
(%i3) diff (diff (delta (t), t), t);
2
d
(%o3) --- (delta(t))
2
dt
(%i4) laplace (%, t, s);
!
d ! 2
(%o4) - -- (delta(t))! + s - delta(0) s
dt !
!t = 0
(%i5) assume(a>0)$
(%i6) laplace(gamma_incomplete(a,t),t,s),gamma_expand:true;
- a - 1
gamma(a) gamma(a) s
(%o6) -------- - -----------------
s 1 a
(- + 1)
s
(%i7) factor(laplace(gamma_incomplete(1/2,t),t,s));
s + 1
sqrt(%pi) (sqrt(s) sqrt(-----) - 1)
s
(%o7) -----------------------------------
3/2 s + 1
s sqrt(-----)
s
(%i8) assume(exp(%pi*s)>1)$
(%i9) laplace(sum((-1)^n*unit_step(t-n*%pi)*sin(t),n,0,inf),t,s),
simpsum;
%i %i
------------------------ - ------------------------
- %pi s - %pi s
(s + %i) (1 - %e ) (s - %i) (1 - %e )
(%o9) ---------------------------------------------------
2
(%i9) factor(%);
%pi s
%e
(%o9) -------------------------------
%pi s
(s - %i) (s + %i) (%e - 1)
Categories: Laplace transform · Differential equations
| [ << ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
この文書は市川 雄二によって5月, 20 2015にtexi2html 1.76を用いて生成されました。