1.4 演算子
1.4.5 数式演算子
(%i54) A:matrix([1,2],[3,4]);
[ 1 2 ]
(%o54) [ ]
[ 3 4 ] (%i55) B:matrix([2,1],[4,3]);
[ 2 1 ]
(%o55) [ ]
[ 4 3 ] (%i56) A*B;
[ 2 2 ]
(%o56) [ ]
[ 12 12 ] (%i57) A.B;
[ 10 7 ]
(%o57) [ ]
[ 22 15 ]
Maximaでは可換積の羃ˆと非可換積の羃ˆˆの計算結果が長くて式が表示し切れない場合,記号
exptとncexptが各々の演算の表記で利用されます.
非可換積.と非可換羃ˆˆにはその挙動を制御する様々な大域変数が存在します.以下に,代表的な 大域変数を示しておきます.
非可換積演算子に関連する大域変数
¶ ³
変数名 初期値 概要
dot0nscsimp true trueの場合,零と非スカラの項の非可換積を可換積に変換します.
dot0simp true trueの場合,零のスカラ項の非可換積を可換積に変換します.
dot1simp true trueの場合,1との他の項との非可換積を可換積に変換します.
dotassoc true trueの場合, (a.b).cと a.(b.c) を a.b.cに変換します.即ち,結合 律を式に対して自動的に適用します.
dotconstrules true trueの場合,定数と項の非可換積が可換積で置換されます. この
大域変数はdotocimo,dotonscsimp,dot1simpも影響を与えます.
dotdistrib false trueの場合,a.(b+c)をa.b+a.cに置換します. 即ち,分配律を自 動的に適用します.
dotexptsimp true trueの場合,複数の同じ式による非可換積を非可換積の羃乗に変
換します.
dotident 1 非可換羃の0乗で返される値を設定します.
dotscrules false trueの場合,群環の元aとスカラーbとの非可換積を可換積に変
換します.
尚,ここでのスカラーと群環の元との非可換積に関する大域変数はdeclare函数でscalar属性を 与えた式に対して制御が効きますが,1,2等の数値に対しては,これらの大域変数とは無関係に可換 積で置換されます.
(%i6) 2 . 3 . x . y;
(%o6) 6 (x . y)
尚,非可換積をMaximaで記述する場合,a . bの様に空白を空けるべきです. これは引数が数値 の場合は必須です.例えば,1.2は1と2の非可換積でなく, 浮動点小数1.2を意味し,1. 2や1 .2の 様に半端に空行を入れてしまうとMaximaの式としての意味を持ちません.
大域変数dotassocをfalseにすると,複数の非可換積で勝手に括弧を外されない為, 非可換積に
対する規則を定義した場合に,その適用が容易になります.
後置式の数式演算子
¶ ³
! n! nが整数の場合,nの階乗を計算.一般の場合Γ(x+ 1)
!! n!! nが奇数(偶数)ならば,n以下の奇数(偶数)の積
µ ´
後置式演算子は引数を一つ取ります.Maximaでは階乗に関連する !と!!が後置式の演算子とな ります.但し, !!は正確には演算子ではありませんが,演算子の属性を持たせた函数です.
先ず,n!はnが整数の場合にnの階乗を計算します.一般の数値に対してはΓ (n+ 1)の計算を 行います. ここで, Γ (n+ 1)の Γ はΓ 函数と呼ばれる函数で, Γ(x) =∫∞
0 tx−1e−tdt で定義され ています.
n!!は少し変った函数で,整数nが奇数の場合,n以下の全ての奇数の積を計算し,nが偶数の場 合は同様に n以下の全ての偶数の積を計算します. その為, n! =n!!(n−1)!!が成立します.この 函数は, ∏entier(n2)
i=0 (n−i)の計算を行っています. このn!!の計算では,n!と違い整数以外の数値 に対してΓ函数を用いるものではありません.
(%i6) 10!;
(%o6) 3628800
(%i7) 10!!;
(%o7) 3840
(%i8) 9!!;
(%o8) 945
(%i9) 10!!*9!!;
(%o9) 3628800
これらの演算子の属性を以下に纏めておきます.
後置式表現演算子の属性
¶ ³
演算子 左束縛力 右束縛力 左変数型 右変数型 返却値型
! 160 expr expr
!! 160
µ ´