読み書きプログラミング

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

(1) 2次元、3次元グラフィックス

2次元、3次元グラフィックスの利用例として、ガンマ函数を可視化してみましょう。
ガンマ函数は階乗の複素数への拡張です。以下のように定義される解析函数です。

が成り立ちます。
ガンマ函数は実数上では実数値を取ります。グラフを表示してみましょう。

/* 3.1.1m */
plot2d(gamma(x), [x, 0.1, 5])$

使用した機能


ガンマ函数は一般には複素数値を取ります。複素数上での可視化の方法として、絶対値を3次元表示してみましょう。

/* 3.1.2m */
plot3d(cabs(gamma(x + %i*y)), [x, 0.1, 3], [y, -3, 3], [z, 0, 4], [grid, 35, 35]);

使用した機能


虚数(y軸)方向になだらかな減衰を見て取ることができます。
実際、公式が成り立ちます。
この公式が成り立っているか確認してみましょう。

/* 3.1.4m */
epsilon : 10^(-14)$
plot2d(cabs(gamma(1 + %i*x))^2 - (%pi*x/sinh(%pi*x)), [x, 0.1, 3], [y, -epsilon, epsilon], [nticks, 1000])$

使用した機能


Maximaでは1e-15程度の(とても小さい)数値誤差が見えました。