[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

10. Mathematical Functions


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

10.1 Functions for Numbers

関数: abs (z)

abs関数は数学的な絶対値関数を表し、数値とシンボルどちらにも機能します。 もし zが実数か複素数なら abszの絶対値を返します。 可能なら、絶対値関数を使ったシンボル式も整理します。

Maximaは absを含む式に関して微分したり、積分したり極限を取ったりできます。 abs_integrateパッケージは、 abs関数を含む積分を計算するように Maximaの機能をさらに拡張します。 以下の例の中の(%i12)を参照してください。

リストや行列に適用した時、 absは自動的に項目上に分配されます。 同様に等式の両辺上に分配されます。 この振る舞いを変えるには、変数 distribute_over を参照してください。

例:

数値定数や様々な無限大を含む、実数や複素数に関する absの計算。 一番目の例は absがリストの要素上にいかに分配されるか示します。

 
(%i1) abs([-4, 0, 1, 1+%i]);
(%o1)                  [4, 0, 1, sqrt(2)]

(%i2) abs((1+%i)*(1-%i));
(%o2)                           2
(%i3) abs(%e+%i);
                                2
(%o3)                    sqrt(%e  + 1)
(%i4) abs([inf, infinity, minf]);
(%o4)                   [inf, inf, inf]

absを含む式の整理:

 
(%i5) abs(x^2);
                                2
(%o5)                          x
(%i6) abs(x^3);
                             2
(%o6)                       x  abs(x)

(%i7) abs(abs(x));
(%o7)                       abs(x)
(%i8) abs(conjugate(x));
(%o8)                       abs(x)

abs関数を伴う積分と微分。 abs_integrateパッケージをロードすると、 abs関数を含む積分は更に実行することが可能であることに注意してください。 最後の例はabsのラプラス変換を示します: laplace を参照してください。

 
(%i9) diff(x*abs(x),x),expand;
(%o9)                       2 abs(x)

(%i10) integrate(abs(x),x);
                             x abs(x)
(%o10)                       --------
                                2

(%i11) integrate(x*abs(x),x);
                           /
                           [
(%o11)                     I x abs(x) dx
                           ]
                           /

(%i12) load(abs_integrate)$
(%i13) integrate(x*abs(x),x);
                      2           3
                     x  abs(x)   x  signum(x)
(%o13)               --------- - ------------
                         2            6

(%i14) integrate(abs(x),x,-2,%pi);
                               2
                            %pi
(%o14)                      ---- + 2
                             2

(%i15) laplace(abs(x),x,s);
                               1
(%o15)                         --
                                2
                               s
·

Categories:  Mathematical functions

関数: ceiling (x)

xが実数の時 x以上の最小の整数を返します。

もし xが定数式(例えば 10 * %pi)なら、 ceilingxを多倍長浮動小数点数を使って評価し、 その多倍長浮動小数点数に ceilingを適用します。 ほとんど起こりそうにないですが、 ceilingは浮動小数点を使うので、 ceilingは定数入力に対して間違った値を返す可能性があります。 このエラーを起こさないようにするには fpprecの3つの値を使って浮動小数点評価を行います。

定数でない入力に関しては ceilingは整理された値を返そうとします。 以下は ceilingが知っている式整理の例です:

 
(%i1) ceiling (ceiling (x));
(%o1)                      ceiling(x)
(%i2) ceiling (floor (x));
(%o2)                       floor(x)
(%i3) declare (n, integer)$
(%i4) [ceiling (n), ceiling (abs (n)), ceiling (max (n, 6))];
(%o4)                [n, abs(n), max(n, 6)]
(%i5) assume (x > 0, x < 1)$
(%i6) ceiling (x);
(%o6)                           1
(%i7) tex (ceiling (a));
$$\left \lceil a \right \rceil$$
(%o7)                         false

関数ceilingは自動ではリストや行列上にマップしません。 最終的に、明らかに複雑な入力すべてに対して ceilingは名詞形を返します。

もし関数の範囲が整数の部分集合なら integervaluedに宣言できます。 ceiling, floor関数両方ともこの情報を使います; 例えば:

 
(%i1) declare (f, integervalued)$
(%i2) floor (f(x));
(%o2)                         f(x)
(%i3) ceiling (f(x) - 1);
(%o3)                       f(x) - 1
·

Categories:  Mathematical functions

関数: entier (x)

xが数値の場合 x以下の最大の整数を返します。 (fixnumにおける) fixはこれの別名で、 fix(x)はまさに同じです。

·

Categories:  Mathematical functions

関数: floor (x)

xが実数の時 x以下の最大の整数を返します。

もしxが定数式(例えば 10 * %pi)なら、 floorは多倍長浮動小数点数を使って xを評価し、 結果の多倍長浮動小数点にfloorを適用します。 ほとんど起こりそうにないですが、 floorは浮動小数点を使うので floorは定数入力に対して間違った値を返す可能性があります。 このエラーを起こさないようにするには fpprecの3つの値を使って浮動小数点評価を行います。

定数でない入力に関しては floorは整理された値を返そうとします。 以下は ceilingが知っている式整理の例です:

 
(%i1) floor (ceiling (x));
(%o1)                      ceiling(x)
(%i2) floor (floor (x));
(%o2)                       floor(x)
(%i3) declare (n, integer)$
(%i4) [floor (n), floor (abs (n)), floor (min (n, 6))];
(%o4)                [n, abs(n), min(n, 6)]
(%i5) assume (x > 0, x < 1)$
(%i6) floor (x);
(%o6)                           0
(%i7) tex (floor (a));
$$\left \lfloor a \right \rfloor$$
(%o7)                         false

関数 floorは自動ではリストや行列上にマップしません。 最終的に、明らかに複雑な入力すべてに対して floorは名詞形を返します。

もし関数の範囲が整数の部分集合なら、 integervaluedに宣言できます。 ceiling, floor関数両方ともこの情報を使います; 例えば:

 
(%i1) declare (f, integervalued)$
(%i2) floor (f(x));
(%o2)                         f(x)
(%i3) ceiling (f(x) - 1);
(%o3)                       f(x) - 1
·

Categories:  Mathematical functions

関数: fix (x)

entier (x)の別名です。

·

Categories:  Mathematical functions

関数: lmax (L)

Lがリストか集合の時 apply ('max, args (L))を返します。 Lがリストでも集合でもない時エラーを示します。

·

Categories:  Mathematical functions ·Lists ·Sets

関数: lmin (L)

Lがリストか集合の時 apply ('min, args (L))を返します。 Lがリストでも集合でもない時エラーを示します。

·

Categories:  Mathematical functions ·Lists ·Sets

関数: max (x_1, ..., x_n)

x_1から x_nの中の最大値に関して整理された値を返します。 get (trylevel, maxmin)が2以上の時、 maxは式整理 max (e, -e) --> |e|を使います。 get (trylevel, maxmin)が3以上の時、 maxは2つの他の引数の間の式を消去しようとします; 例えば max (x, 2*x, 3*x) --> max (x, 3*x)trylevelを2に設定するには put (trylevel, 2, maxmin)を使います。

·

Categories:  Mathematical functions

関数: min (x_1, ..., x_n)

x_1から x_nの中の最小値に関して整理された値を返します。 get (trylevel, maxmin)が2以上の時、 maxは式整理 max (e, -e) --> |e|を使います。 get (trylevel, maxmin)が3以上の時、 maxは2つの他の引数の間の式を消去しようとします; 例えば max (x, 2*x, 3*x) --> max (x, 3*x)trylevelを2に設定するには put (trylevel, 2, maxmin)を使います。

maxlmin. も参照してください。

·

Categories:  Mathematical functions

関数: round (x)

xが実数の時 xに最も近い整数を返します。 1/2を掛けてroundして2を掛けると最も近い偶数に丸められます。 xの評価は floorceilingに似ています。

·

Categories:  Mathematical functions

関数: signum (x)

実数か複素数 xに対して、もしxが0ならsignum関数は0を返します; ゼロでない数値入力 xに対して、signum関数は abs(x)/xを返します。

非数値入力に対して Maximaは入力の符号を決定しようと試みます。 符号が負、ゼロ、正いずれかの時 signumはそれぞれ、-1, 0, 1を返します。 符号に関する他の値すべてに対して signumは式整理された同値形を返します。 式整理は (signum(-x)-signum(x)を与える)反転と (signum(x*y)signum(x) * signum(y)を与える)乗法恒等式を含みます。

signum 関数はリスト、行列もしくは等式上に分配されます。 distribute_over を参照してください。

·

Categories:  Mathematical functions


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

10.2 Functions for Complex Numbers

関数: cabs (expr)

複素数を表す式の絶対値を計算します。 関数 abs と異なり、 cabs関数は常に引数を実部と虚部に分解します。 もし xyが実変数か実数式を表すなら、 cabs関数は x + %i*yの絶対値を

 
                           2    2
                     sqrt(y  + x )

として計算します。

cabs関数は、式の絶対値を計算するのを助けるため、 複素関数の対称性プロパティ既知のプロパティを使うことができます。 もしそんな恒等式が存在するなら、 関数プロパティを使って cabsに知らせることができます。 cabsが理解する対称性は以下のものです: 鏡像対称, 共役関数, 複素特性。

cabsは動詞関数であり、シンボル計算には適しません。 (絶対値を含む式の積分、微分、極限を含む)そんな計算には abs を使ってください。

cabsの結果は絶対値関数 abs や逆正接 atan2 を含むことがあります。

リストや行列に適用されると、 cabsは自動的に項目上に分配されます。 同様に等式の両辺上に分配されます。

複素数を使って計算する更なる方法には、 関数 rectform , realpart , imagpart , carg , conjugate , polarform を参照してください。

例:

sqrtsin を使った例。

 
(%i1) cabs(sqrt(1+%i*x));
                             2     1/4
(%o1)                      (x  + 1)
(%i2) cabs(sin(x+%i*y));
                    2        2         2        2
(%o2)       sqrt(cos (x) sinh (y) + sin (x) cosh (y))

複素偏角を使った絶対値の計算で使われる誤差関数。 erf は鏡像対称性を持ちます。

 
(%i3) cabs(erf(x+%i*y));
                                          2
           (erf(%i y + x) - erf(%i y - x))
(%o3) sqrt(--------------------------------
                          4
                                                               2
                                (erf(%i y + x) + erf(%i y - x))
                              - --------------------------------)
                                               4

Maximaは Bessel関数の複素恒等式を知っています。 そのおかげで複素偏角に関する絶対値を計算できます。 以下は bessel_j に関する例です。

 
(%i4) cabs(bessel_j(1,%i));
(%o4)                 abs(bessel_j(1, %i))
·

Categories:  Complex variables

関数: carg (z)

zの複素偏角を返します。 複素偏角は r exp (theta %i) = zrzの絶対値)を満たす (-%pi, %pi]の間の角thetaです。

cargは計算関数であって、式整理関数ではありません。

abs (複素絶対値), polarform, rectform, realpart, imagpartも参照してください。

例:

 
(%i1) carg (1);
(%o1)                           0
(%i2) carg (1 + %i);
                               %pi
(%o2)                          ---
                                4
(%i3) carg (exp (%i));
(%o3)                           1
(%i4) carg (exp (%pi * %i));
(%o4)                          %pi
(%i5) carg (exp (3/2 * %pi * %i));
                                %pi
(%o5)                         - ---
                                 2
(%i6) carg (17 * exp (2 * %i));
(%o6)                           2
·

Categories:  Complex variables

関数: conjugate (x)

xの複素共役を返します。

 
(%i1) declare ([aa, bb], real, cc, complex, ii, imaginary);

(%o1)                         done
(%i2) conjugate (aa + bb*%i);

(%o2)                      aa - %i bb
(%i3) conjugate (cc);

(%o3)                     conjugate(cc)
(%i4) conjugate (ii);

(%o4)                         - ii
(%i5) conjugate (xx + yy);

(%o5)             conjugate(yy) + conjugate(xx)
·

Categories:  Complex variables

関数: imagpart (expr)

exprの虚部を返します。

imagpartは、計算関数であり、整理関数ではありません。

abs, carg, polarform, rectform, realpartも参照してください。

·

Categories:  Complex variables

関数: polarform (expr)

exprと同値な式 r %e^(%i theta)を返します。 ここで rthetaは純粋な実数です。

関数: realpart (expr)

exprの実部を返します。 realpartimagpartは、 平方根、対数関数、指数関数はもちろん三角関数や双曲関数を含む式上で機能します。

·

Categories:  Complex variables

関数: rectform (expr)

exprと同値な式 a + b %iを返します。 ここで abは純粋な実数です。

·

Categories:  Complex variables


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

10.3 Combinatorial Functions

演算子: !!

二重階乗演算子。

整数や浮動小数点、有理数 nに対して、 n!!は積 n (n-2) (n-4) (n-6) ... (n - 2 (k - 1))kentier (n/2)、すなわち n/2以下の最大整数に等しい)に評価されます。 この定義は非整数の引数に対して他の出版物の定義と一致しないことに注意してください。

偶数(もしくは奇数) nに対して、 n!!は2(もしくは1)からnまでのすべての偶数(もしくは奇数)の積に評価されます。

整数でも浮動小数点でも有理数でもない引数 nに対して、 n!!は名詞形 genfact (n, n/2, 2)を返します。

関数: binomial (x, y)

二項係数 x!/(y! (x - y)!)。 もし xyが整数なら、 二項係数の数値が計算されます。 もし yx - yが整数なら、 二項係数は多項式として表現されます。

例:

 
(%i1) binomial (11, 7);
(%o1)                          330
(%i2) 11! / 7! / (11 - 7)!;
(%o2)                          330
(%i3) binomial (x, 7);
        (x - 6) (x - 5) (x - 4) (x - 3) (x - 2) (x - 1) x
(%o3)   -------------------------------------------------
                              5040
(%i4) binomial (x + 7, x);
      (x + 1) (x + 2) (x + 3) (x + 4) (x + 5) (x + 6) (x + 7)
(%o4) -------------------------------------------------------
                               5040
(%i5) binomial (11, y);
(%o5)                    binomial(11, y)
·

Categories:  Number theory

関数: factcomb (expr)

例えば、 (n + 1)*n!(n + 1)!に変換することによって、 exprの中の階乗の係数を階乗それ自身と結合しようとします。

もし sumsplitfactfalseに設定されたなら、 minfactorialfactcombの後適用されるようになります。

関数: factorial
演算子: !

階乗演算子。

(整数、有理数、実数を含む)負の整数を除いた任意の複素数 xに対して、 x!gamma(x+1)として定義されます。

整数 xに対して、 x!は1からxまでの整数の積に整理されます。 0!は1に整理されます。 浮動小数点または多倍長浮動小数点精度の実数または複素数 xに対して、 x!gamma(x+1)の値に整理されます。 xn/2nは奇数)に等しい時、 (gamma (1/2)sqrt (%pi)に等しいから) x!は有理因子に sqrt (%pi)を掛けたものに整理されます。

変数 factlim , gammalim は整数や有理数の引数の階乗の数値評価を制御します。 関数 minfactorial , factcomb は階乗を含む式の整理を制御します。 factlim, gammalim, minfactorial, factcombを参照してください。

関数 gamma , bffac , cbffac はガンマ関数の変形です。 多倍長浮動小数点精度の実数と複素数のガンマ関数を評価するために gammaは内部で bffaccbffacをコールします。

makegamma は階乗や関係した関数に gammaを代入します。

Maximaは階乗関数の導関数や、負の整数のような特殊な値の極限を知っています。

オプション変数 factorial_expand(n+x)!のような式の整理を制御します。 ここで nは整数です。

binomialも参照してください。

オペランドが factlimより大きくないなら、整数の階乗は正確な値に整理されます。 実数と複素数の階乗は浮動小数点または多倍長浮動小数点精度に評価されます。

 
(%i1) factlim : 10;
(%o1)                          10
(%i2) [0!, (7/2)!, 8!, 20!];
                            105 sqrt(%pi)
(%o2)                   [1, -------------, 40320, 20!]
                                 16
(%i3) [4.77!, (1.0+%i)!];
(%o3)    [81.44668037931197, 
          .3430658398165454 %i + .6529654964201665]
(%i4) [2.86b0!, (1.0b0+%i)!];
(%o4) [5.046635586910012b0, 
       3.430658398165454b-1 %i + 6.529654964201667b-1]

既知の定数や一般式の階乗は整理されません。 オペランドを評価した後階乗を整理できたとしても整理はされません。

 
(%i1) [(%i + 1)!, %pi!, %e!, (cos(1) + sin(1))!];
(%o1)      [(%i + 1)!, %pi!, %e!, (sin(1) + cos(1))!]
(%i2) ev (%, numer, %enumer);
(%o2) [.3430658398165454 %i + .6529654964201665, 
       7.188082728976031, 
       4.260820476357003, 1.227580202486819]
 
(%i1) kill (foo);
(%o1)                         done
(%i2) foo!;
(%o2)                         foo!

階乗の計算は整理であって評価ではありません。 従って x!はクォートされた式の中でも置き換えられます。

 
(%i1) '([0!, (7/2)!, 4.77!, 8!, 20!]);
          105 sqrt(%pi)
(%o1) [1, -------------, 81.44668037931199, 40320, 
               16
                                             2432902008176640000]

Maximaは階乗関数の導関数を知っています。

 
(%i1) diff(x!,x);
(%o1)                           x! psi (x + 1)
                                      0

オプション変数factorial_expandは階乗関数を含む式の展開と整理を制御します。

 
(%i1) (n+1)!/n!,factorial_expand:true;
(%o1)                                n + 1

オプション変数: factlim

デフォルト値: -1

factlimは自動的に展開される最高の階乗を指定します。 もし-1ならすべての整数は展開されます。

オプション変数: factorial_expand

デフォルト値: false

オプション変数factorial_expand(n+1)!のような式の整理を制御します。 ここで nは整数です。 例は !を参照してください。

関数: genfact (x, y, z)

一般化された階乗を返します。 x (x-z) (x - 2 z) ... (x - (y - 1) z)のように定義されます。 それゆえに、整数 xに関して、 genfact (x, x, 1) = x!であり、genfact (x, x/2, 2) = x!!です。

関数: minfactorial (expr)

整数だけ違う2つの階乗の出現に関して exprを検査します。 そして、minfactorialは一方を多項式掛ける他方に変えます。

 
(%i1) n!/(n+2)!;
                               n!
(%o1)                       --------
                            (n + 2)!
(%i2) minfactorial (%);
                                1
(%o2)                    ---------------
                         (n + 1) (n + 2)
·

Categories:  Number theory

オプション変数: sumsplitfact

デフォルト値: true

sumsplitfactfalseの時、 minfactorialfactcombの後に適用されます。


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

10.4 Root, Exponential and Logarithmic Functions

オプション変数: %e_to_numlog

デフォルト値: false

trueの時、 rを有理数、xを式とすると、 %e^(r*log(x))x^rに整理されます。 radcanコマンドもこの変換を行い、 その上この同類のさらに複雑な変換をすることに注意すべきです。 logcontractコマンドは logを含む式を「短縮」します。

オプション変数: %emode

デフォルト値: true

%emodetrueの時、 %e^(%pi %i x)は以下のように整理されます。

もし xが浮動小数点、整数、もしくは1/2, 1/3, 1/4, 1/6の整数倍なら、 %e^(%pi %i x)cos (%pi x) + %i sin (%pi x)に整理された後、 さらに整理されます。

他の数値xに関して、 %e^(%pi %i x)%e^(%pi %i y)に整理されます。 ここで yx - 2 kkabs(y) < 1が成り立つような整数)です。

%emodefalseの時には、 %e^(%pi %i x)の特別な整理は実行されません。

オプション変数: %enumer

デフォルト値: false

%enumertrueの時、 numertrueの時はいつでも、 %eは数値2.718...に置き換えられます。

%enumerfalseの時、 %e^xの指数が数に評価される時だけ、 この代入が実行されます。

ev , numer も参照してください。

関数: exp (x)

指数関数を表します。 入力にある exp (x)のインスタンスは %e^xに整理されます; expは整理された式の中には現れません。

もし demoivretrueで、かつ、 b%iを含まないなら、 %e^(a + b %i)%e^(a (cos(b) + %i sin(b)))に整理されます。 demoivre を参照してください。

%emodetrueの時、 %e^(%pi %i x)は整理されます。 %emode を参照してください。

%enumertrueの時、 numertrueの時にはいつでも %eは2.718...に置き換えれます。 %enumer を参照してください。

関数: li [s] (z)

次数 s、引数 zの多重対数関数を表します。 これは以下の無限級数で定義されます。

 
                                 inf
                                 ====   k
                                 \     z
                        Li (z) =  >    --
                          s      /      s
                                 ====  k
                                 k = 1

li [1]- log (1 - z)です。 li [2]li [3]はそれぞれ、 dilogarithm関数, trilogarithm関数です。

次数が1の時、多重対数関数は - log (1 - z)に整理され、 もし zが実数もしくは複素数の浮動小数点数か numer評価フラグが有効なら、さらに数値に整理されます。

次数が2もしくは3の時、 もし zが実数の浮動小数点数か numer評価フラグが有効なら、 多重対数関数は数値に整理されます。

例:

 
(%i1) assume (x > 0);
(%o1)                        [x > 0]
(%i2) integrate ((log (1 - t)) / t, t, 0, x);
(%o2)                       - li (x)
                                2
(%i3) li [2] (7);
(%o3)                        li (7)
                               2
(%i4) li [2] (7), numer;
(%o4)        1.24827317833392 - 6.113257021832577 %i
(%i5) li [3] (7);
(%o5)                        li (7)
                               3
(%i6) li [2] (7), numer;
(%o6)        1.24827317833392 - 6.113257021832577 %i
(%i7) L : makelist (i / 4.0, i, 0, 8);
(%o7)   [0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0]
(%i8) map (lambda ([x], li [2] (x)), L);
(%o8) [0, .2676526384986274, .5822405249432515, 
.9784693966661848, 1.64493407, 2.190177004178597
 - .7010261407036192 %i, 2.374395264042415
 - 1.273806203464065 %i, 2.448686757245154
 - 1.758084846201883 %i, 2.467401098097648
 - 2.177586087815347 %i]
(%i9) map (lambda ([x], li [3] (x)), L);
(%o9) [0, .2584613953442624, 0.537213192678042, 
.8444258046482203, 1.2020569, 1.642866878950322
 - .07821473130035025 %i, 2.060877505514697
 - .2582419849982037 %i, 2.433418896388322
 - .4919260182322965 %i, 2.762071904015935
 - .7546938285978846 %i]

関数: log (x)

xの自然対数(基数 eの対数)を表します。

Maximaは、基数10や他の基数の対数の組み込み関数を持ちません。 log10(x) := log(x) / log(10)は、役立つ定義です。

対数の整理と評価はいくつかのグローバルフラグによって管理されます:

logexpand

log(a^b)b*log(a)にします。 もし allに設定されているなら、 log(a*b)log(a)+log(b)に整理されます。 もし superに設定されているなら, 有理数 a/b, a#1に対して log(a/b)log(a)-log(b)に整理されます。 (整数 bに関して log(1/b)はいつも整理されます。) もし falseに設定されているなら これらのすべての整理は止められます。

logsimp

もし falseなら、 %elogを含む累乗へ整理がなされます。

lognegint

もし trueなら、正の整数 nに対して規則 log(-n) -> log(n)+%i*%pi が実装されます。

%e_to_numlog

trueの時、 rをある有理数, xをある式とすると、 式 %e^(r*log(x))x^rに整理されます。 radcanコマンドもこの変換を行い、その上この同類のさらに複雑な変換をすることに注意すべきです。 logcontractコマンドは logを含む式を「短縮」します。

オプション変数: logabs

デフォルト値: false

例えば integrate(1/x,x)のように、logが生成される不定積分を実行する時、 もし logabstrueなら 答えは log(abs(...))の形で与えられ、 もし logabsfalseなら 答えは log(...)の形で与えられます。 定積分については 終端での不定積分の「評価」がしばしば必要になるので logabs:true設定が使われます。

オプション変数: logarc
関数: logarc (expr)

グローバル変数 logarctrueの時、 逆円関数や逆双曲線関数は、同値の対数関数に置き換えられます。 logarcのデフォルト値は falseです。

関数 logarc(expr)は、 グローバル変数 logarcを設定することなしに式 exprに対して上記置き換えを実行します。

オプション変数: logconcoeffp

デフォルト値: false

logcontractを使った時、どの係数が短縮されるかを制御します。 引数1つの述語論理関数の名前に設定することができます。 例えば、もしSQRTを生成したいなら、 logconcoeffp:'logconfun$ logconfun(m):=featurep(m,integer) or ratnump(m)$を実行できます。 すると、 logcontract(1/2*log(x));log(sqrt(x))を与えるでしょう。

関数: logcontract (expr)

形式 a1*log(b1) + a2*log(b2) + cの部分式を log(ratsimp(b1^a1 * b2^a2)) + cに変換しながら、 再帰的に式 exprを走査します。

 
(%i1) 2*(a*log(x) + 2*a*log(y))$
(%i2) logcontract(%);
                                 2  4
(%o2)                     a log(x  y )

declare(n,integer);を実行すると、 logcontract(2*a*n*log(x));a*log(x^(2*n))に整理されます。 この方法で「短縮」される係数はここで2やnに当たるもので、 featurep(coeff,integer)を満たします。 ユーザーは、 オプション logconcoeffpを引数1つの述語論理関数名に設定することで、 どの係数を短縮するか制御できます。 例えば、もしSQRTを生成したいなら、 logconcoeffp:'logconfun$ logconfun(m):=featurep(m,integer) or ratnump(m)$を実行できます。 すると、 logcontract(1/2*log(x));log(sqrt(x))を与えるでしょう。

オプション変数: logexpand

デフォルト値: true

もし true―これがデフォルト値です―なら、 log(a^b)b*log(a)になるようにします。 もし allに設定されているなら、 log(a*b)log(a)+log(b)に整理されます。 もし superに設定されているなら, 有理数 a/b, a#1に対して、 log(a/b)log(a)-log(b)に整理されます。 (整数 bに対して log(1/b)はいつも整理されます。) もし falseに設定されているなら、 これらのすべての整理は止められます。

オプション変数: lognegint

デフォルト値: false

もし trueなら正の整数 nに対して規則 log(-n) -> log(n)+%i*%pi が実装されます。

オプション変数: logsimp

デフォルト値: true

もし falseなら、 %elogを含む累乗へ整理がなされます。

関数: plog (x)

-%pi < carg(x) <= +%piを虚部係数とする複素数値の自然対数の主値を表します。

関数: sqrt (x)

xの平方根。 内部的には x^(1/2)で表現されます。 rootscontractも参照してください。

radexpandtrueなら、 nのべき乗となる積の因子のn番目の根を累乗根の外部に押し出すようにします。 例えば、 radexpandtrueの時だけ sqrt(16*x^2)4*xになります。

·

Categories:  Mathematical functions


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

10.5 Trigonometric Functions


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

10.5.1 Introduction to Trigonometric

Maximaは定義されたたくさんの三角関数を持ちます。 すべての三角恒等式がプログラムされているわけではありませんが、 ユーザーはシステムのパターンマッチング能力を使ってそれらの多くを追加することができます。 Maximaで定義された三角関数は以下の通りです: acos, acosh, acot, acoth, acsc, acsch, asec, asech, asin, asinh, atan, atanh, cos, cosh, cot, coth, csc, csch, sec, sech, sin, sinh, tan, tanh。 特に三角関数を扱うためのたくさんのコマンドがあります。 trigexpand, trigreduce, スイッチtrigsignを参照してください。 2つの共用パッケージ ntrig, atrig1は、 Maximaに組み込まれた整理規則を拡張します。 詳しくは describe(command)を実行してください。

·

Categories:  Trigonometric functions


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

10.5.2 Functions and Variables for Trigonometric

オプション変数: %piargs

デフォルト値: true

%piargstrueの時で、 引数が %pi, %pi/2, %pi/3, %pi/4, %pi/6のいずれか の整数倍の時は、 三角関数が代数定数に整理されます。

Maximaは %pi などが整数変数(すなわち、整数に宣言されたシンボル)倍された時適用できる いくつかの恒等式を知っています。

例:

 
(%i1) %piargs : false$
(%i2) [sin (%pi), sin (%pi/2), sin (%pi/3)];
                                %pi       %pi
(%o2)            [sin(%pi), sin(---), sin(---)]
                                 2         3
(%i3) [sin (%pi/4), sin (%pi/5), sin (%pi/6)];
                      %pi       %pi       %pi
(%o3)            [sin(---), sin(---), sin(---)]
                       4         5         6
(%i4) %piargs : true$
(%i5) [sin (%pi), sin (%pi/2), sin (%pi/3)];
                                sqrt(3)
(%o5)                    [0, 1, -------]
                                   2
(%i6) [sin (%pi/4), sin (%pi/5), sin (%pi/6)];
                         1         %pi   1
(%o6)                [-------, sin(---), -]
                      sqrt(2)       5    2
(%i7) [cos (%pi/3), cos (10*%pi/3), tan (10*%pi/3),
       cos (sqrt(2)*%pi/3)];
                1    1               sqrt(2) %pi
(%o7)          [-, - -, sqrt(3), cos(-----------)]
                2    2                    3

%pi%pi/2 が整数変数にかけられた時、いくつかの恒等式が適用されます。

 
(%i1) declare (n, integer, m, even)$
(%i2) [sin (%pi * n), cos (%pi * m), sin (%pi/2 * m),
       cos (%pi/2 * m)];
                                      m/2
(%o2)                  [0, 1, 0, (- 1)   ]

オプション変数: %iargs

デフォルト値: true

%iargstrueの時、 引数が明らかに虚数単位 %i を掛けたものの時、 三角関数が双曲線関数に整理されます。

引数が明らかに実数の時でさえ整理が実行されます; Maximaはただ、引数が %i を文字通り掛けたものかどうかを考慮します。

例:

 
(%i1) %iargs : false$
(%i2) [sin (%i * x), cos (%i * x), tan (%i * x)];
(%o2)           [sin(%i x), cos(%i x), tan(%i x)]
(%i3) %iargs : true$
(%i4) [sin (%i * x), cos (%i * x), tan (%i * x)];
(%o4)           [%i sinh(x), cosh(x), %i tanh(x)]

引数が明らかに実数の時でさえ整理が実行されます。

 
(%i1) declare (x, imaginary)$
(%i2) [featurep (x, imaginary), featurep (x, real)];
(%o2)                     [true, false]
(%i3) sin (%i * x);
(%o3)                      %i sinh(x)

関数: acos (x)

– 逆余弦

·

Categories:  Trigonometric functions

関数: acosh (x)

– 逆双曲余弦

·

Categories:  Hyperbolic functions

関数: acot (x)

– 逆余接

·

Categories:  Trigonometric functions

関数: acoth (x)

– 逆双曲余接

·

Categories:  Hyperbolic functions

関数: acsc (x)

– 逆余割

·

Categories:  Trigonometric functions

関数: acsch (x)

– 逆双曲余割

·

Categories:  Hyperbolic functions

関数: asec (x)

– 逆正割

·

Categories:  Trigonometric functions

関数: asech (x)

– 逆双曲正割

·

Categories:  Hyperbolic functions

関数: asin (x)

– 逆正弦

·

Categories:  Trigonometric functions

関数: asinh (x)

– 逆双曲正弦

·

Categories:  Hyperbolic functions

関数: atan (x)

– 逆正接

·

Categories:  Trigonometric functions

関数: atan2 (y, x)

-%piから %piまでの間の atan(y/x)の値をもたらします。

·

Categories:  Trigonometric functions

関数: atanh (x)

– 逆双曲正接

·

Categories:  Hyperbolic functions

パッケージ: atrig1

atrig1パッケージは、逆三角関数のためのいくつかの追加の整理規則を含みます。 Maximaが既に知っている規則と合わせて、 以下の角度が完全に実装されます: 0, %pi/6, %pi/4, %pi/3, %pi/2。 他の3象限の対応する角度も利用可能です。 これらを使うには load(atrig1);を実行してください。

関数: cos (x)

– 余弦

·

Categories:  Trigonometric functions

関数: cosh (x)

– 双曲余弦

·

Categories:  Hyperbolic functions

関数: cot (x)

– 余接

·

Categories:  Trigonometric functions

関数: coth (x)

– 双曲余接

·

Categories:  Hyperbolic functions

関数: csc (x)

– 余割

·

Categories:  Trigonometric functions

関数: csch (x)

– 双曲余割

·

Categories:  Hyperbolic functions

オプション変数: halfangles

デフォルト値: false

halfanglestrueの時、 引数 expr/2の三角関数は exprの関数に整理されます。

区間 0 < x < 2*%piの実引数 xに対して 半角の正弦は簡単な公式に整理されます:

 
                         sqrt(1 - cos(x))
                         ----------------
                             sqrt(2)

複雑な因子は すべての複素引数 zでこの公式を正しくするために必要です:

           realpart(z)
     floor(-----------)
              2 %pi
(- 1)                   (1 - unit_step(- imagpart(z))

                            realpart(z)            realpart(z)
                      floor(-----------) - ceiling(-----------)
                               2 %pi                  2 %pi
                ((- 1)                                          + 1))

Maximaは、この因子と、 関数sin, cos, sinh, coshに関する類似の因子を知っています。 引数zの特別な値に対してこれらの因子は相応に整理されます。

例:

 
(%i1) halfangles:false;
(%o1)                                false
(%i2) sin(x/2);
                                        x
(%o2)                               sin(-)
                                        2
(%i3) halfangles:true;
(%o3)                                true
(%i4) sin(x/2);
                                                    x
                                            floor(-----)
                                                  2 %pi
                      sqrt(1 - cos(x)) (- 1)
(%o4)                 ----------------------------------
                                   sqrt(2)
(%i5) assume(x>0, x<2*%pi)$
(%i6) sin(x/2);
                               sqrt(1 - cos(x))
(%o6)                          ----------------
                                   sqrt(2)

パッケージ: ntrig

ntrigパッケージは、 引数が形式 f(n %pi/10)fは関数 sin, cos, tan, csc, sec, cotのいずれか―の三角関数を整理するのに使われる整理規則の集合を含みます。

関数: sec (x)

– 正割

·

Categories:  Trigonometric functions

関数: sech (x)

– 双曲正割

·

Categories:  Hyperbolic functions

関数: sin (x)

– 正弦

·

Categories:  Trigonometric functions

関数: sinh (x)

– 双曲正弦

·

Categories:  Hyperbolic functions

関数: tan (x)

– 正接

·

Categories:  Trigonometric functions

関数: tanh (x)

– 双曲正接

·

Categories:  Hyperbolic functions

関数: trigexpand (expr)

exprの中に現れる角の和や角の倍数の三角関数、双曲線関数を展開します。 最もよい結果のためには exprは展開されるべきです。 整理のユーザー制御を強化するために、 この関数は、一度に1レベルのみ、角の和もしくは角の倍数を展開します。 ただちにサインとコサインへの完全な展開を得るには スイッチ trigexpand: trueを設定してください。

trigexpandは以下のグローバルフラグによって決定されます:

trigexpand

もし trueなら、 続いて現れるサインやコサインを含んでいる式すべての展開を起こします。

halfangles

もし trueなら、 半角が整理されます。

trigexpandplus

trigexpandの「和」規則を制御します。 和(例えば sin(x + y))の展開は、 trigexpandplustrueの時だけ起こります。

trigexpandtimes

trigexpandの「積」規則を制御します。 積(例えば sin(2 x))の展開は、 trigexpandtimestrueの時だけ起こります。

例:

 
(%i1) x+sin(3*x)/sin(x),trigexpand=true,expand;
                         2           2
(%o1)               - sin (x) + 3 cos (x) + x
(%i2) trigexpand(sin(10*x+y));
(%o2)          cos(10 x) sin(y) + sin(10 x) cos(y)

オプション変数: trigexpandplus

デフォルト値: true

trigexpandplustrigexpandの「和」規則を制御します。 trigexpandコマンドが使われるか、 trigexpandスイッチが trueに設定されている時 和(例えば sin(x+y)))の展開は、 trigexpandplustrueの時だけ起こります。

オプション変数: trigexpandtimes

デフォルト値: true

trigexpandtimestrigexpandの「積」規則を制御します。 trigexpandコマンドが使われるか、 trigexpandスイッチが trueに設定されている時、 積(例えば sin(2*x))の展開は、 trigexpandtimestrueの時だけ起こります。

オプション変数: triginverses

デフォルト値: true

triginversesは三角関数や双曲線関数とそれらの逆関数の合成の整理を制御します。

もし allなら、 例えば、atan(tan(x))tan(atan(x))のどちらも xに整理されます。

もし trueなら、 arcfun(fun(x))の整理は止められます。

もし falseなら、 arcfun(fun(x))fun(arcfun(x))のどちらの整理も止められます。

関数: trigreduce (expr, x)
関数: trigreduce (expr)

xを引数とする三角と双曲の正弦、余弦の積とべきを xの倍数のそれらに結合します。 これらの関数が分母に現れた時これらを消去しようともします。 もし xが省略されたら exprの中の変数すべてが使われます。

poissimpも参照してください。

 
(%i1) trigreduce(-sin(x)^2+3*cos(x)^2+x);
               cos(2 x)      cos(2 x)   1        1
(%o1)          -------- + 3 (-------- + -) + x - -
                  2             2       2        2

オプション変数: trigsign

デフォルト値: true

trigsigntrueの時、 三角関数への負の引数の整理を認めます。 例えば、 trigsigntrueの時だけ sin(-x)-sin(x)になります。

関数: trigsimp (expr)

tan, secなどを含む式を sin, cos, sinh, coshに整理するために、 恒等式 sin(x)^2 + cos(x)^2 = 1cosh(x)^2 - sinh(x)^2 = 1 を使います。

trigreduce, ratsimp, radcanは結果を更に整理できるかもしれません。

demo ("trgsmp.dem")trigsimpのいくつかの例を表示します。

関数: trigrat (expr)

三角関数の整理された標準疑似線形形式を与えます; exprsin, cosもしくはtanのいくつかの有理分数であり、 それらの引数は、整数係数を持つ、いくつかの変数(もしくは核)と %pi/n (nは整数)の線形形式です。 結果は sincosに関して線形の分子と分母を持つ整理された分数です。 trigratは可能なときはいつも線形化します。

 
(%i1) trigrat(sin(3*a)/sin(a+%pi/3));
(%o1)            sqrt(3) sin(2 a) + cos(2 a) - 1

以下の例は Davenport, Siret, and TournierのCalcul Formel, Masson (もしくは英語版ではAddison-Wesley), 1.5.5節, モーレイの定理から取られました。

 
(%i1) c : %pi/3 - a - b$
(%i2) bc : sin(a)*sin(3*c)/sin(a+b);
                                          %pi
                  sin(a) sin(3 (- b - a + ---))
                                           3
(%o2)             -----------------------------
                           sin(b + a)
(%i3) ba : bc, c=a, a=c;
                                         %pi
                    sin(3 a) sin(b + a - ---)
                                          3
(%o3)               -------------------------
                                  %pi
                          sin(a - ---)
                                   3
(%i4) ac2 : ba^2 + bc^2 - 2*bc*ba*cos(b);
         2         2         %pi
      sin (3 a) sin (b + a - ---)
                              3
(%o4) ---------------------------
                2     %pi
             sin (a - ---)
                       3
                                       %pi
 - (2 sin(a) sin(3 a) sin(3 (- b - a + ---)) cos(b)
                                        3
             %pi            %pi
 sin(b + a - ---))/(sin(a - ---) sin(b + a))
              3              3
      2       2              %pi
   sin (a) sin (3 (- b - a + ---))
                              3
 + -------------------------------
                2
             sin (b + a)
(%i5) trigrat (ac2);
(%o5) - (sqrt(3) sin(4 b + 4 a) - cos(4 b + 4 a)
 - 2 sqrt(3) sin(4 b + 2 a) + 2 cos(4 b + 2 a)
 - 2 sqrt(3) sin(2 b + 4 a) + 2 cos(2 b + 4 a)
 + 4 sqrt(3) sin(2 b + 2 a) - 8 cos(2 b + 2 a) - 4 cos(2 b - 2 a)
 + sqrt(3) sin(4 b) - cos(4 b) - 2 sqrt(3) sin(2 b) + 10 cos(2 b)
 + sqrt(3) sin(4 a) - cos(4 a) - 2 sqrt(3) sin(2 a) + 10 cos(2 a)
 - 9)/4


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

10.6 Random Numbers

関数: make_random_state (n)
関数: make_random_state (s)
関数: make_random_state (true)
関数: make_random_state (false)

ランダムステートオブジェクトは乱数生成器の状態を表します。 状態は627個の32ビットワードで構成されます。

make_random_state (n)nを2^32で割った余りに等しい整数シードの値から新しいランダムステートオブジェクトを 生成します。 nは負でもいいです。

make_random_state (s)はランダムステート sのコピーを返します。

make_random_state (true)は新しいランダムステートオブジェクトを返します。 シードとしてコンピュータの現在時刻を使います。

make_random_state (false)は乱数生成器の現在のステートのコピーを返します。

·

Categories:  Random numbers

関数: set_random_state (s)

sを乱数生成器状態にコピーします。

set_random_stateはいつも doneを返します。

·

Categories:  Random numbers

関数: random (x)

疑似乱数を返します。 もし xが整数なら、 random (x)は0からx - 1までの整数を返します。 もし xが浮動小数点なら、 random (x)xより小さい非負の浮動小数点を返します。 もし xが整数でも浮動小数点でもなかったり、xが正でないなら、 randomはエラーを出力します。

関数 make_random_stateset_random_stateは乱数生成器の状態を保守します。

Maximaの乱数生成器はメルセンヌ・ツイスタ MT 19937の実装です。

例:

 
(%i1) s1: make_random_state (654321)$
(%i2) set_random_state (s1);
(%o2)                         done
(%i3) random (1000);
(%o3)                          768
(%i4) random (9573684);
(%o4)                        7657880
(%i5) random (2^75);
(%o5)                11804491615036831636390
(%i6) s2: make_random_state (false)$
(%i7) random (1.0);
(%o7)                   .2310127244107132
(%i8) random (10.0);
(%o8)                   4.394553645870825
(%i9) random (100.0);
(%o9)                   32.28666704056853
(%i10) set_random_state (s2);
(%o10)                        done
(%i11) random (1.0);
(%o11)                  .2310127244107132
(%i12) random (10.0);
(%o12)                  4.394553645870825
(%i13) random (100.0);
(%o13)                  32.28666704056853
·

Categories:  Random numbers ·Numerical methods


[ << ] [ >> ]           [冒頭] [目次] [見出し] [ ? ]

この文書は市川 雄二によって2012年1月月5日texi2html 1.82を用いて生成されました。