maxima でグラフを描く
概要
フリーウェアの maxima で2次元グラフを描くときの主要なオプションについて説明する。詳しくはマニュアル参照のこと。
例1
2次元グラフを描くときは plot2d() を使う。通常は横軸を x で、縦軸を y で表す。関数と変数 x の動く区間を指定するのが基本である。
plot2d(cos(x),[x,0,2*%pi]);
例2
縦軸の範囲を指定することもできる。
- nticks : グラフが角張っているときなど、変数 x の区切りを細かくしたいときは nticks を調整する
- grid2d : グラフの格子
- box : 外枠の有無
- title : グラフのタイトル
- axes : 軸を実線にするなど
plot2d(cos(x),[x,0,2*%pi],[y,0,1], [nticks,100],grid2d,[box,false],[title,"my graph"],[axes,solid]);
例3
複数のグラフを描きたいときは、第1引数をリストにする。
plot2d([exp(x),1+x+x^2/2],[x,-1,2]);
例4
関数と式のどちらを使ってもよい。関数を使う場合は、関数名が表示される。
- logx, logy : 横軸や縦軸を対数にする
- xlabel, ylabel : 横軸や縦軸の名前
F(x):=exp(x); G:1+x+x^2/2; plot2d([F,G],[x,-1,2],logy,[xlabel,"x"],[ylabel,"log(y)"]);
例5
ラベルや色などの指定は、リストの最後の次は最初に戻る。 legend は false を指定することもできる。
- legend : 凡例(各グラフのラベル)
- color : 色
plot2d([sin(x),x,x-x^3/6,x-x^3/6+x^5/120,x-x^3/6+x^5/120-x^7/5040], [x,-4,4],[y,-1.5,1.5], [legend,"even","odd"],[color,red,blue]);
例6
離散2次元データのグラフを描くこともできる。その場合は discrete を使う。以下に示すように、3通りの形式がある。(なお、例えば「リスト+1」とするとリストの各成分に1を加えたリストが得られる。)
- style : 2次元データを線で結ぶなど
- point_type : 2次元データの点として使う記号
plot2d( [ [discrete,[1,4,9]+1], [discrete,[[0,0],[1,1],[2,4],[3,9]]], [discrete,[0,1,2,3],[0,1,4,9]-1] ], [style,lines,points,linespoints],[point_type,nabla,lozenge]);
例7
パラメーター付き曲線を描くときは parametric を使う。パラメーターが動く区間を指定する。
- style : 線の太さなどスタイルをまとめて指定
plot2d( [ [parametric,t,t^2,[t,0,2]], [parametric,t,t^2,[t,-2,0]], [parametric,t,abs(t),[t,-2,1]] ], [style,[lines,2,blue],[lines,3,red],lines]);
例8
- yx_ratio : 出力結果の縦横比の調整
plot2d(x^2,[x,-5,5]); plot2d(x^2,[x,-5,5],[yx_ratio,5]);
例9
2項分布の正規近似をグラフで表す。 binomial() は2項係数(の正確な値)であるが、状況によってはガンマ関数の近似値を計算する bffac() を使うことを検討してもいいかもしれない。
p:1/3; n:30; f(i):=float( p^i*(1-p)^(n-i)*binomial(n,i) ); xy:makelist([i,f(i)],i,0,n)$ plot2d( [ [discrete,xy], (1/sqrt(2*%pi*n*p*(1-p)))*exp(-(x-n/3)^2/(2*n*p*(1-p))) ], [x,0,n],[style,points,lines],[legend,false]);
例10
- same_xy : x軸とy軸の比率を一致させる
a:1/5; b:-5/8; f_x:cos(t)+a*cos(b*t); f_y:sin(t)+a*sin(b*t); plot2d([parametric,f_x,f_y,[t,0,16*%pi]],same_xy,[color,red]);