Maxima で綴る数学の旅

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

-数学- Drawパッケージで塗り絵をする方法

 パピヨン

 

前の記事:

のコメント欄に不思議なコメントを頂きました。おそらく読み解いてみると、コメントに示されたURLの示す画像に含まれる2変数24次の代数方程式について、xとyを適当に動かしたときに、左辺の値が負となる領域を描き、塗りつぶせ、というものと理解しました。

早速やってみましょう。 

とりあえず、頑張って方程式を入力します。この方程式には名前をClioneと付けておきます。

(%i1) Clione:256*x^24+3027*x^22*y^2+1280*x^22*y-1024*x^22+16896*x^20*y^4+8960*x^20*y^3-8864*x^20*y^2-2560*x^20*y+56320*x^18*y^6+23296*x^18*y^5 -
51520*x^18*y^4-13360*x^18*y^3-576*x^18*y^2+126720*x^16*y^8+17664*x^16*y^7-180000*x^16*y^6-37232*x^16*y^5+8241*x^16*y^4+202752*x^14*y^10-
44544*x^14*y^9-372480*x^14*y^8-8896*x^14*y^7+40824*x^14*y^6+236544*x^12*y^12-139776*x^12*y^11-482112*x^12*y^10+113984*x^12*y^9 +
115596*x^12*y^8+202752*x^10*y^14-182784*x^10*y^13-419712*x^10*y^12+192608*x^10*y^11+97960*x^10*y^10+126720*x^8*y^16-136704*x^8*y^15-
271680*x^8*y^14+156640*x^8*y^13+117654*x^8*y^12+56320*x^6*y^18-59136*x^6*y^17-142080*x^6*y^16+87104*x^6*y^15+64776*x^6*y^14 +
16896*x^4*y^20-12544*x^4*y^19-55840*x^4*y^18+27712*x^4*y^17+36204*x^4*y^16+3072*x^2*y^22-256*x^2*y^21-12608*x^2*y^20+592*x^2*y^19+
10136*x^2*y^18+256*y^24+256*y^23-928*y^22-496*y^21+961*y^20=0;
$$ \tag{%o1} 256\,y^{24}+256\,y^{23}+3072\,x^2\,y^{22}-928\,y^{22}-256\,x^2\,y^{21}-496\,y^{21}+16896\,x^4\,y^{20}-12608\,x^2\,y^{20}+961\,y^{20}-12544\,x^4\,y^{19}+592\,x^2\,y^{19}+56320\,x^6\,y^{18}-55840\,x^4\,y^{18}+10136\,x^2\,y^{18}-59136\,x^6\,y^{17}+27712\,x^4\,y^{17}+126720\,x^8\,y^{16}-142080\,x^6\,y^{16}+36204\,x^4\,y^{16}-136704\,x^8\,y^{15}+87104\,x^6\,y^{15}+202752\,x^{10}\,y^{14}-271680\,x^8\,y^{14}+64776\,x^6\,y^{14}-182784\,x^{10}\,y^{13}+156640\,x^8\,y^{13}+236544\,x^{12}\,y^{12}-419712\,x^{10}\,y^{12}+117654\,x^8\,y^{12}-139776\,x^{12}\,y^{11}+192608\,x^{10}\,y^{11}+202752\,x^{14}\,y^{10}-482112\,x^{12}\,y^{10}+97960\,x^{10}\,y^{10}-44544\,x^{14}\,y^9+113984\,x^{12}\,y^9+126720\,x^{16}\,y^8-372480\,x^{14}\,y^8+115596\,x^{12}\,y^8+17664\,x^{16}\,y^7-8896\,x^{14}\,y^7+56320\,x^{18}\,y^6-180000\,x^{16}\,y^6+40824\,x^{14}\,y^6+23296\,x^{18}\,y^5-37232\,x^{16}\,y^5+16896\,x^{20}\,y^4-51520\,x^{18}\,y^4+8241\,x^{16}\,y^4+8960\,x^{20}\,y^3-13360\,x^{18}\,y^3+3027\,x^{22}\,y^2-8864\,x^{20}\,y^2-576\,x^{18}\,y^2+1280\,x^{22}\,y-2560\,x^{20}\,y+256\,x^{24}-1024\,x^{22}=0 $$
(%i2) load(draw)$

 

次にdraw2d(region(...))をつかって、Clioneの左辺が負の領域を描画します。
(%i3) draw2d(x_voxel=150,y_voxel=150,region(lhs(Clione)<0,x,-3,3,y,-2,2));

f:id:jurupapa:20161123222446p:plain


$$ \tag{%o3} \left[ \mathrm{gr2d}\left(\mathrm{region}\right) \right] $$

うまくいきました。

 

ちなみにMaximaのマニュアルのdrawパッケージのregionオブジェクトの説明を読むと条件をand, orなどで繋ぐことができて結構複雑なことができるようになっています。色々と試してみると面白いと思います。