つれづれなる備忘録

日々の発見をあるがままに綴る

gnuplotによるグラフ作成38~多価関数のプロット

 今回はgnuplot複素関数をプロットする際に多価関数を正しくプロットする方法について紹介したい。

以前複素関数のプロットについて紹介したが、多価関数については正しくプロットできない。

atatat.hatenablog.com

解決法としては、パラメトリックプロットを利用する。前回紹介したように虚数i={0,1}とし、

 f(z)=\ln (\sqrt{z}), z=x+iy

パラメトリックプロットする。ここで複素数極座標表示

 z=re^{i\theta}

 \ln (\sqrt{z})= \ln ( \sqrt{r}\exp( i\theta /2) )

を用いて、r, θ のパラメトリックプロットを以下のコードで実行する。

i={0,1}
set parametric
set urange[0.01:5]
set vrange[0:4*pi]

set isosamples 40
set view equal xyz
splot u*cos(v),u*sin(v),imag(log(sqrt(u)*exp(i*0.5*v))

実行すると、同一の座標で複数の値が得られる多価関数になっていることがわかる。

"log(√z)のプロット"
log(√z)のプロット

確認のため、通常の直交座標系のプロットを実行しても、多価関数になっていないことがわかる。

unset parametric
splot imag(log(sqrt(x+i*y)))

直交座標系でのlog(√z)のプロット
直交座標系でのlog(√z)のプロット