surfは綺麗な代数曲線や曲面(多項式の零点の集まりとして表現される集合で, 一次元のものが曲線,二次元のものが曲面となる)を綺麗に描くプログラムである. gtk+を利用しており,基本的にUNIX環境で動作する.
surfは下記のサイトに様々な情報がある. http://surf.sourceforge.net/ .
勿論,私のサイト Surf - Examples from SuSE Linux Manualsにもsurfの例題等を載せて いるので必要に応じて参照されたい.
surfplotはMaxima言語で記述した簡単なプログラムである. この函数を使えば,様々な代数曲線や曲面を容易に描く事が可能となる. 尚,この函数ではsurfの大域変数の設定の為,属性を利用している. その為,この函数は属性の使い方の参考になると判断している,
load函数を用いてsurfplot.mcを読込めば良い.尚,surfplotはカレントディレクトリ 上にsurf.tmpファイルを生成するので,カレントディレクトリは書き込みが可能 でなければならない.
以下に実行例を示す.
(%i1) load("surfplot.mc")$
(%i2) delta:-1/4$
(%i3) poly:x^3-3*x*y+y^3-delta$
(%i4) surfplot(poly);
`rat' replaced 10.0E-11 by 1//10000000000 = 10.0E-11
Surf is now drawing (4*y^3-12*x*y+4*x^3+1)/4 . Please wait ....
(%o4) 0

(%i5) put(surf,0.6,rot_x)$
(%i6) put(surf,0.2,rot_y)$
(%i7) put(surf,0.6,rot_z)$
(%i8) put(surf,0.3,scale_x)$
(%i9) put(surf,0.3,scale_y)$
(%i10) put(surf,0.3,scale_z)$
(%i11) tau:(1+sqrt(5))/2$
(%i12) poly:8*(x^2-tau^4*y^2)*(y^2-tau^4*z^2)*(z^2-tau^4*x^2)*
(x^4+y^4+z^4-2*(x^2*y^2+y^2*z^2+z^2*x^2))+
(3+5*tau)*(x^2+y^2+z^2-1)^2*(x^2+y^2+z^2-(2-tau))^2$
(%i13) surfplot(poly);
`rat' replaced 10.0E-11 by 1//10000000000 = 10.0E-11
Surf is now drawing (((168*sqrt(5)+376)*y^2+(-24*sqrt(5)-56)*x^2+5*sqrt(5)+11)*z^8
+((-360*sqrt(5)-808)*y^4+((-1440*sqrt(5)-3200)*x^2+20*sqrt(5)+44)*y^2
+(216*sqrt(5)+488)*x^4+(20*sqrt(5)+44)*x^2-14*sqrt(5)
-30)
*z^6
+((216*sqrt(5)+488)*y^6+((2160*sqrt(5)+4800)*x^2+30*sqrt(5)+66)*y^4
+((2160*sqrt(5)+4800)*x^4+(60*sqrt(5)+132)*x^2
-42*sqrt(5)-90)
*y^2+(-360*sqrt(5)-808)*x^6+(30*sqrt(5)+66)*x^4
+(-42*sqrt(5)-90)*x^2+14*sqrt(5)+28)
*z^4
+((-24*sqrt(5)-56)*y^8+((-1440*sqrt(5)-3200)*x^2+20*sqrt(5)+44)*y^6
+((2160*sqrt(5)+4800)*x^4+(60*sqrt(5)+132)*x^2
-42*sqrt(5)-90)
*y^4
+((-1440*sqrt(5)-3200)*x^6+(60*sqrt(5)+132)*x^4
+(-84*sqrt(5)-180)*x^2
+28*sqrt(5)+56)
*y^2+(168*sqrt(5)+376)*x^8+(20*sqrt(5)+44)*x^6
+(-42*sqrt(5)-90)*x^4+(28*sqrt(5)+56)*x^2-6*sqrt(5)-10)
*z^2+((168*sqrt(5)+376)*x^2+5*sqrt(5)+11)*y^8
+((-360*sqrt(5)-808)*x^4+(20*sqrt(5)+44)*x^2-14*sqrt(5)-30)*y^6
+((216*sqrt(5)+488)*x^6+(30*sqrt(5)+66)*x^4+(-42*sqrt(5)-90)*x^2+14*sqrt(5)
+28)
*y^4
+((-24*sqrt(5)-56)*x^8+(20*sqrt(5)+44)*x^6+(-42*sqrt(5)-90)*x^4
+(28*sqrt(5)+56)*x^2-6*sqrt(5)-10)
*y^2+(5*sqrt(5)+11)*x^8+(-14*sqrt(5)-30)*x^6+(14*sqrt(5)+28)*x^4
+(-6*sqrt(5)-10)*x^2+sqrt(5)+1)
/2 . Please wait ....
