計算の演算子とほとんどの組み込み関数は複素数引数の使用をサポートしてい
ます。複素定数は、{<real>,<imag>} と表記し、<real> と <imag> は、数定
数である必要があります。よって、{0,1} は 'i' を意味します。
現在の gnuplot は、あらかじめ I = {0,1} を変数として定義していて、他の
変数から複素数値を作るのに使えるようにしています。つまり、x + y*I は
正しい数式なのですが、{x,y} はそうではありません。
複素数値 z の実数部分と虚数部分は、real(z), imag(z) として取り出せます。
長さは abs(z) で、偏角は arg(z) で得られます。
gnuplot の 2 次元と 3 次元の描画スタイルは、実数値を仮定しています。よ
って 0 でない虚数部分を持つ複素数値関数 f(x) を描画する場合は、実数部
分や虚数部分、あるいは長さや偏角を描画させなければいけません。
例えば複素引数に対する関数 f(z) の複素数値の長さと偏角を表示させるには、
長さを曲面の高さ、偏角を色で表示するという手があります。
その場合、HSV 色空間のカラーパレットを用いて、0 から 1 の範囲の H 成分
(色相) を arg(z) が返す偏角の範囲 [-π:π] に割り当て、偏角が 1 周した
ら色も巻き戻るようにすると便利でしょう。デフォルトでは、これは H = 0
(赤) から始まりますが、set palette の start キーワードを使ってその
開始位置を変更し、H の他の値を 0 に割り当てることも可能です。
以下の例は、H = 0.3 (緑) から開始し巻き戻るようにしています。以下参照:
set palette defined (111.67.2), arg (15.3), set angles (111.1)。
set palette model HSV start 0.3 defined (0 0 1 1, 1 1 1 1)
set cbrange [-pi:pi]
set cbtics ("-π" -pi, "π" pi)
set pm3d corners2color c1
E0(z) = exp(-z)/z
I = {0,1}
splot '++' using 1:2:(abs(E0(x+I*y))):(arg(E0(x+I*y))) with pm3d
竹野茂治@新潟工科大学
2024-05-31