maxima でグラフを描く

概要

フリーウェアの maxima で2次元グラフを描くときの主要なオプションについて説明する。詳しくはマニュアル参照のこと。

例1

2次元グラフを描くときは plot2d() を使う。通常は横軸を x で、縦軸を y で表す。関数と変数 x の動く区間を指定するのが基本である。

plot2d(cos(x),[x,0,2*%pi]);

f:id:mathhashimoto:20211206082100p:plain:w400

例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]);

f:id:mathhashimoto:20211206085009p:plain:w400

例3

複数のグラフを描きたいときは、第1引数をリストにする。

plot2d([exp(x),1+x+x^2/2],[x,-1,2]);

f:id:mathhashimoto:20211206085612p:plain:w400

例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)"]);

f:id:mathhashimoto:20211206090346p:plain:w400

例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]);

f:id:mathhashimoto:20211206091653p:plain:w400

例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]);

f:id:mathhashimoto:20211206091721p:plain:w400

例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]);

f:id:mathhashimoto:20211206092502p:plain:w400

例8
  • yx_ratio : 出力結果の縦横比の調整
plot2d(x^2,[x,-5,5]);
plot2d(x^2,[x,-5,5],[yx_ratio,5]);

f:id:mathhashimoto:20211206092622p:plain:w300f:id:mathhashimoto:20211206092636p:plain:w300

例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]);

f:id:mathhashimoto:20211206093526p:plain:w400

例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]);

f:id:mathhashimoto:20211206093851p:plain:w600

補足

オプション png_file, pdf_file などを使うことで、グラフを表示する代わりにファイルとして保存することができる。保存フォルダは変数 maxima_tempdir により指定される。