我打麻将の研究室

maxima初歩

概要

台麻の天和確率を題材として、数式処理システム maxima の麻雀のための使い方のごく一部を解説する。

ダウンロード&インストール

公式ページのダウンロード説明 を読んで sourceforge のページへ。 自分の使用したい環境にあったものをダウンロード&インストールする。

使用方法

起動すると、以下のようなプロンプトが表示される:

(%i1)

これは第1番目の入力 (input) であることを示すものである。 台麻の天和確率を求めたいので、母関数のページ からコピーした「清一色一般形」の3乗と「字牌一般形」との積を入力しよう。 プログラミングをかじっている人には常識であるが、ベキ乗は ^, 積は * の記号を使う。

(%i1) (1593385376*s^5*h + 235556632*s^5 + 440593684*s^4*h + 40399783*s^4 + 47037380*s^3*h + 2742868*s^3 + 1748756*s^2*h + 65272*s^2 + 19200*s^1*h + 484*s^1 + 54*s^0*h + 1*s^0)^3*(258048*s^5*h + 21504*s^5 + 161280*s^4*h + 8960*s^4 + 53760*s^3*h + 2240*s^3 + 10080*s^2*h + 336*s^2 + 1008*s*h + 28*s + 42*s^0*h + 1*s^0)

入力の終わりにはC言語のようにセミコロンを打ち、Enter (Return) で確定する。

(%i1) (1593385376*s^5*h + 235556632*s^5 + 440593684*s^4*h + 40399783*s^4 + 47037380*s^3*h + 2742868*s^3 + 1748756*s^2*h + 65272*s^2 + 19200*s^1*h + 484*s^1 + 54*s^0*h + 1*s^0)^3*(258048*s^5*h + 21504*s^5 + 161280*s^4*h + 8960*s^4 + 53760*s^3*h + 2240*s^3 + 10080*s^2*h + 336*s^2 + 1008*s*h + 28*s + 42*s^0*h + 1*s^0);
(%o1) [...]

第1回目に入力したものの処理結果が出力 (output) される (以下、[...] は出力またはその一部で省略したものを示す)。 今回はただの文字式を入力したので、処理は事実上されていない。 入力したものより多少見やすく上付き表示がなされたり、累乗が expt で表されていたりするだけだ。

直前の入力に対する出力を参照する変数として % を用いることができる。 式を展開する expand を使って、これを展開してみよう。

(%i2) expand(%);
(%o2) [...]

12項の式を4つもかけたので、ずいぶん長い出力が得られただろう。 これではわけがわからないので、台麻の和了形にあたる s5h の係数を求めよう。 h の1次の係数は coeff で求めることができる:

(%i3) coeff(%,h);
(%o3) [...]+1554490175889888s5+[...]

s5 の係数程度なら目で探すこともできるが、これも coeff で求めた方がよいだろう:

(%i4) coeff(%,s,5);
(%o4) 1554490175889888

これが 台麻天和のページ にある計算結果の一部である。