0番染色体

科学は全世界を照らす光である

【Mac】Maximaを快適に利用する

Maximaは有名なオープンソースの数式処理システムです.現在,最もよく使われている数式処理システムはおそらくMathematicaやMapleですが,これらのソフトウェアは主に大学や研究機関で使用される高額な商用ソフトウェアで個人購入には向きません [1].

一方,Maximaは無料であるにもかかわらず,高額な数式処理システムに引けをとらない高度な機能を有しており,多くの理系の人間にとっては非常に有用なソフトウェアです.今回は,このMaximaをMacで快適に利用する方法について説明します.

ターミナルでMaximaを起動してみる

Maximaのインストール方法については 公式サイト (英語)や Mac-Wiki などを参照してください.ここでは~/Applicationsに Maxima.app がインストールされているものとして説明をします.

ターミナルでMaximaを起動するためには次のようにします.

$ cd ~
$ exec /Applications/Maxima.app/Contents/Resources/maxima.sh

これで,Maximaを用いて計算処理を行うことができます.

(%i3) 12*34;
(%o3)                                 408
(%i4) sqrt(9604);
(%o4)                                 98
(%i5) expand((x+y)^6);
           6        5       2  4       3  3       4  2      5      6
(%o5)     y  + 6 x y  + 15 x  y  + 20 x  y  + 15 x  y  + 6 x  y + x
(%i6) tex(%)$
$$y^6+6\,x\,y^5+15\,x^2\,y^4+20\,x^3\,y^3+15\,x^4\,y^2+6\,x^5\,y+x^6$$

しかし,実はこのままでは不便な点があります.

通常のMacターミナルでは矢印キーを使うことができます.すなわち,

  • 左右キー(←と→):カーソルの移動
  • 上下キー(↑と↓):履歴の呼び込み

を行うことが可能です.

では,Maximaを起動した状態で ↑↓→← をタイプしてみます.

(%i7) ^[[A^[[B^[[C^[[D

あれ……期待した動作をしてくれません.

また,どのようなシェルを使用しているかにもよりますが,通常ターミナルではTabキー等によるコマンドの補完を行うことができます.しかし,初期状態のMaximaではTabキーを押しても"タブ"が入力されるだけで,コマンドが補完されることはありません.

Maxima自体はとても便利な数式処理システムですが,初期状態のままでは,このようにいまいち使い勝手がよくありません.

矢印キーや補完機能を使う

Maximaをrlwrapと併用する形で起動すると,readlineを間接的に用いてMaximaでも矢印キーの機能やコマンド補完機能が利用できるようになります [2].

では,そのための手順を説明しましょう.

1. rlwrapとreadlineをインストールする

これから説明する方法を実行するためには,これら2つがインストールされていることが前提となります.どのようにインストールしても構いませんが,MacPortsやHomebrewを利用すると楽だろうと思います.

2. rmaxima.sh を作成する

Maximaをrlwrapと併用する形で起動するためにはrmaximaを使用します.このrmaximaを起動するためのシェルスクリプトを作成しましょう.

~/Applications/Maxima.app/Contents/Resources/maxima.shをエディタで開きます.

#!/bin/bash

SCRIPT="${BASH_SOURCE[0]}"
while [ -L "$SCRIPT" ] ; do SCRIPT=`(readlink "$SCRIPT")` ; done

ROOT=`(cd dirname "$SCRIPT" > /dev/null 2>&1 ; pwd)`
MAXIMA_PREFIX=$ROOT/maxima/
export MAXIMA_PREFIX

PATH="$MAXIMA_PREFIX/bin:$PATH"
export PATH

exec "$MAXIMA_PREFIX/bin/maxima" "$1" "$2" "$3" "$3" "$4" "$5" "$6" "$7" "$8" "$9"

最終行を以下のように書き換えて,rmaxima.shとして「別名で保存」します.

exec "$MAXIMA_PREFIX/bin/rmaxima" "$1" "$2" "$3" "$3" "$4" "$5" "$6" "$7" "$8" "$9"

3. ターミナルで rmaxima を起動する

ターミナルで次のように rmaxima を起動すると,Maximaで矢印キーやコマンド補完機能 *1 が利用できるようになっています.

$ cd ~
$ exec /Applications/Maxima.app/Contents/Resources/rmaxima.sh

いちいちこれを打ち込むのが面倒ということであれば,パスを通すなりエイリアスを貼るなりするといいと思います *2

Maximaの使い方

この節では,この記事を読んでMaximaに興味をもった,Maximaを使用したことがない人のために,ひとつ文献の紹介をしておこうと思います.

Googleなどで検索をかけると,"Maxima入門" を謳う資料がたくさん見つかるはずです.しかし,実際のところ一度も計算処理システムに触れたことのない初心者にとっては敷居が高い「入門書」が多いように思います(理学書などではよくあることですが).

その中で私は『Professional Maxima』という入門書をおすすめします.Maximaの基本がわかりやすく解説されていて,分量もそれほど多くないのですぐに読めるはずです.下記のサイトで閲覧することができます.

マスクメロン: Professional Maxima | マスクメロン

注意 :『Professional Maxima』p.19 に誤植を見つけました.
partfrac関数は引数を ( 対象の式 , 変数 ) と2つ取ります.したがって,p.19上部の実行例は以下のように修正されるべきです.

(%i48) 1/(x^2-1);
                                      1
(%o48)                              ------
                                     2
                                    x  - 1
(%i49) partfrac(%,x);
                                 1           1
(%o49)                       --------- - ---------
                             2 (x - 1)   2 (x + 1)
(%i50) 1/(x^3+1);
                                      1
(%o50)                              ------
                                     3
                                    x  + 1
(%i51) partfrac(%,x);
                              1           x - 2
(%o51)                    --------- - --------------
                          3 (x + 1)       2
                                      3 (x  - x + 1)


<参考文献>

[1] Maxima入門. http://maxima.zuisei.net , (accessed 2014-11-21).
[2] agw. "Installing Maxima on Snow Leopard". agwの日記. http://d.hatena.ne.jp/agw/20100221/1266797560 , (accessed 2014-11-21).

*1:残念ながら,zshのように強力というわけにはいきません.しかし,それでも「一度使用した」コマンドを補完してくれるので,ないよりはずっと作業が捗ります.

*2:過去記事参照: http://0-chromosome.hatenablog.jp/entry/2014/11/08/232919