• 検索結果がありません。

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 tx1etdt で定義され ています.

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

µ ´