竹内薫さん(物理や数学を中心に科学を分かり易く解説する人。フジテレビ『たけしのコマ大数学科』も解説担当)が2007年にブルーバックスから出版した「初めての数式処理ソフト - Maximaで楽しむ数式計算と物理グラフィック」という本があります。
この本、簡単な数式計算から物理の問題まで幅広く扱っており、それは良いのですが、本文中に「これはMaximaでは出来ないので代わりにMathematicaだとこうなる、gnuplotを使うと出来る」というような記述が目につき、Maxima党の私としては残念な気持ちがありました。
数年ぶりに読み直してみて、「あれ、これって実は(あるいは最新のMaximaなら)出来るよね」と思える部分があることに気が付きました。これから数回に渡りそのような部分をどうやったらMaximaで実行出来るのか、(あるいはやはり難しいのか)を考えてみます。
まずは手始めに円周率\( \pi \)を連分数に展開するお話です。
同書の初版のp32で円周率を連分数に展開しようとしていますが、エラーが出ています。これは最新版Maxima 5.30.0でも同じです。
(%i1) cf(%pi);
cf: %pi is not a continued fraction.
-- an error. To debug this try: debugmode(true);
しかし、次のように浮動小数に変換してからcf()関数で処理をすればきちんと連分数に展開することが出来ました。
(%i2) cf(float(%pi));
$$ \tag{%o2} \left[ 3 , 7 , 15 , 1 , 292 , 1 , 1 , 1 , 2 , 1 , 3 , 1 , 14 \right] $$
(%i3) cfdisrep(%);
$$ \tag{%o3} 3+\frac{1}{7+\frac{1}{15+\frac{1}{1+\frac{1}{292+\frac{1}{1+\frac{1}{1+\frac{1}{1+\frac{1}{2+\frac{1}{1+\frac{1}{3+\frac{1}{1+\frac{1}{14}}}}}}}}}}}} $$
ちなみにマニュアルにはcf(expr)でexprはリスト表現の連分数か、浮動小数、多倍長浮動小数だけが許されることが書いてあります。%piは定数であり、浮動小数などではありません。このためにエラーになったのでした。