Maxima で綴る数学の旅

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

コマ大数学の立体図問題 : 竹内薫の「はじめての数式処理ソフト」より

 

この本のp40にはとても面白い立体図形の問題が載っています。

「3面図が、平面図は正方形、正面図と右側側面図が円であるような立体の図を描け。」

 

平面図も円ならば、求める立体の一つの候補は明らかに球です。でも上から見ると正方形!!

 

書籍では求め方を解説し、図形をスライスして描く方法を提案し、実際にgnuplotを使って描画しています。Maximaで出来ない理由は、3Dグラフを重ね書き出来ないから、、

だそうです。

 

当時のMaximaは5.12.0、今は5.30.0まで成長し、(少なくとも)draw パッケージを使えば3Dグラフの重ね書きも出来ます。

 

(%i28) f(z,t):=t*sqrt(1.0-z^2);

$$ \tag{%o28} f\left(z , t\right):=t\,\sqrt{1.0-z^2} $$

(%i29) draw3d(proportional_axes = xyz, dimensions=[1200,1200],

       surface_hide = true,

         parametric_surface(f(-0.9,a),f(-0.9,b),-0.9,a,-1,1,b,-1,1),

         parametric_surface(f(-0.8,a),f(-0.8,b),-0.8,a,-1,1,b,-1,1),

         parametric_surface(f(-0.7,a),f(-0.7,b),-0.7,a,-1,1,b,-1,1),

         parametric_surface(f(-0.6,a),f(-0.6,b),-0.6,a,-1,1,b,-1,1),

         parametric_surface(f(-0.5,a),f(-0.5,b),-0.5,a,-1,1,b,-1,1),

         parametric_surface(f(-0.4,a),f(-0.4,b),-0.4,a,-1,1,b,-1,1),

         parametric_surface(f(-0.3,a),f(-0.3,b),-0.3,a,-1,1,b,-1,1),

         parametric_surface(f(-0.2,a),f(-0.2,b),-0.2,a,-1,1,b,-1,1),

         parametric_surface(f(-0.1,a),f(-0.1,b),-0.1,a,-1,1,b,-1,1),

         parametric_surface(f(0.0,a),f(0.0,b),0.0,a,-1,1,b,-1,1),

         parametric_surface(f(0.1,a),f(0.1,b),0.1,a,-1,1,b,-1,1),

         parametric_surface(f(0.2,a),f(0.2,b),0.2,a,-1,1,b,-1,1),

         parametric_surface(f(0.3,a),f(0.3,b),0.3,a,-1,1,b,-1,1),

         parametric_surface(f(0.4,a),f(0.4,b),0.4,a,-1,1,b,-1,1),

         parametric_surface(f(0.5,a),f(0.5,b),0.5,a,-1,1,b,-1,1),

         parametric_surface(f(0.6,a),f(0.6,b),0.6,a,-1,1,b,-1,1),

         parametric_surface(f(0.7,a),f(0.7,b),0.7,a,-1,1,b,-1,1),

         parametric_surface(f(0.8,a),f(0.8,b),0.8,a,-1,1,b,-1,1),

         parametric_surface(f(0.9,a),f(0.9,b),0.9,a,-1,1,b,-1,1))$

(%i30)

斜め横から見ると確かに円です。一番上や一番下のスライスを見ると四角であることが分かります。

f:id:jurupapa:20130826233302p:plain

もっとよく分かるように真上に近い視点で見下ろしてみます。

f:id:jurupapa:20130826233419p:plain

ちゃんと要件を満たしていることが分かります。Maximaでも出来る!