Maxima で綴る数学の旅

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

πの連分数展開、竹内薫の「初めての数式処理ソフト」より

 

竹内薫さん(物理や数学を中心に科学を分かり易く解説する人。フジテレビ『たけしのコマ大数学科』も解説担当)が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は定数であり、浮動小数などではありません。このためにエラーになったのでした。