Maxima で綴る数学の旅

紙と鉛筆の代わりに、数式処理システムMaxima / Macsyma を使って、数学を楽しみましょう

-その他- Maximaの環境整備(1) Githubに置いたMaximaプログラムの実行

f:id:jurupapa:20200519231717j:plain

 

Maximaの世界も道具が進化しています。

今風の環境、といえば以下のようなことになると思います。

  • GUIとしてjupyter notebook, jupyter lab環境で動作するMaxima
  • Githubに置いたMaximaプログラムを読み込んで実行

Maximaの主開発者であるRober Doddierさんがこの両方に大きな貢献をしており、非常に使いやすい環境が比較的容易に得られることがわかりました。

 

今回はまずGithubとの連携について紹介します。

OS環境としてはDebian, UbuntuなどのデスクトップLinux, Mac OS Xでは確認しています。Windowsは、、、まだ確認していません。

 

Githubではオープンソースの開発用に無料でレポジトリを作り、公開することができます。前回の記事で使ったqsexpand.lispもqsexpand packageとして公開しています。この時に、Robertさんが作成・公開しているmaxima-asdfという仕組みを利用することで、公開したプロジェクトを簡単にMaximaで利用できるようになります。

(%i1) :lisp (progn (ql:quickload :drakma) (ql:quickload :maxima-asdf))

maxima-asdfを読み込みます。そして、

(%i2) install_github("YasuakiHonda","qsexpand","master")$

とすることでqsexpand packageがダウンロード、展開、インストールされます。

(%i3) asdf_load("qsexpand")$

とすると、このパッケージが読み込まれます。これでqsexpand.lispに定義した関数qsexpand(qs, degree)が使えるようになります。

 

maxima-asdfの詳細はこちらのGithubプロジェクトをご覧ください。

GitHub - robert-dodier/maxima-asdf: Define maxima-file component to handle Maxima files in ASDF.

 

maxima-asdfを利用する準備は比較的簡単です。quicklispをインストールすること、maxima-asdfをインストールすることです。quicklispはCommon Lispプログラムのパッケージ管理システムおよびレポジトリのことです。quicklispから様々なパッケージを簡単にインストールすることができます。

quicklispのインストールはとても簡単です。

https://beta.quicklisp.org/quicklisp.lisp

というファイルをダウンローして保存します。そしてMaximaを起動してlispプログラムとして読み込みます。

(%i1) :lisp (load "quicklisp.lisp")

この後、(英語ですが)簡単な指示に従えばインストールは終了します。追加の指示に従うと、次回以降自動的にquicklispが読み込まれるように、設定まですることができます。 

 

次にmaxima-asdfパッケージをインストールします。

https://github.com/robert-dodier/maxima-asdf/archive/master.zip

このファイルをダウンロードして保存し解凍します。解凍先を~/quicklisp/local-projectsの下にしてください。結果的に~/quicklisp/local-projects/maxima-asdf-masterというフォルダが作られればOKです。

 

ここまでの準備が整えば、以下の3行を実行することが可能になります。

(%i1) :lisp (progn (ql:quickload :drakma) (ql:quickload :maxima-asdf))

(%i2) install_github("YasuakiHonda","qsexpand","master")$

(%i3) asdf_load("qsexpand")$

 

私の評価環境は、Debian Linux 10 / Ubuntu 20.014, sbcl 2.0.1, Maxima 5.43.2, quicklispとmaxima-asdfは上記リンクのもの(最新版)を使いました。