読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

(2) グラフィックスの解像度

函数をプロットしてその様子を見る時には、プロットする解像度が重要です。
シンク函数を例に取ります。これは、矩形函数(パルス函数)をFourier変換すると得られる函数です。一次元のFraunhofer回折像の波動関数でもあります。
まずシンク函数を定義しましょう。

/* 3.2.1m.mac */
sinc(x) := (
  local(prim),
  prim(y) := sin(y)/y,
  if float(x) = 0.0 then limit(prim(y), y, x) else prim(x))$

sinc(0)はゼロですが、数式そのままに定義すると、0/0になってしまいます。0での値は極限値であることを明示的に定義しました。

使用した機能


まず、デフォルトの解像度でシンク函数を3次元表示してみましょう。

plot3d(sinc(1.5*sqrt(x^2 + y^2)), [x, -25, 25], [y, -25, 25], [z, -0.5, 1]);


plot3dのデフォルトの解像度は35x35点で、中心部分など必ずしも精確な描画ではありません。

使用した機能


前回にも用いたgridオプションを指定することで解像度を指定することができます。

/* 3.2.2m */
plot3d(sinc(1.5*sqrt(x^2 + y^2)), [x, -25, 25], [y, -25, 25], [z, -0.5, 1], [grid, 120, 120]);