複素函数 $\sqrt{Q(z)}$ の流れの図

コードが汚いことは気にしないで!

複素正則函数 $f(z)$ に対して、実二次元平面におけるベクトル場

$$ (x,y)\mapsto (\mathrm{Re}\,f(x+iy),-\mathrm{Im}\,f(x+iy)) $$

が対応している。そのベクトル場に沿った流れの図を描きたい。

特に特別な形の有理函数 $Q(z)$ に対する $f(z)=\sqrt{Q(z)}$ の流れの図を描きたい。

モチベーションは exact WKB に親しみやすくなること。

$\sqrt{Q(z)}$ の流れの図から Stokes 曲線を見て取ることができる。

https://genkuroki.github.io/documents/201706Iwaki/

In [1]:
using PyPlot
#PyPlot.svg(true) #slow
ae()=axes()[:set_aspect]("equal")
plotstart() = plt[:figure](figsize=(8,8))
function plotvf(z,w)
    r = abs.(w)
    plt[:quiver](real(z),imag(z),real(w./r),-imag(w./r), log.(r))
end
plotstream(z,w) = plt[:streamplot](real(z),imag(z),real(w),-imag(w),
    color="orange", linewidth=0.5, arrowsize=0.01, density=(3,3))
ploto(x,y,c)=plot(x,y,"o",color=c,mew=2)
plotx(x,y,c)=plot(x,y,"x",color=c,mew=2)
Out[1]:
plotx (generic function with 1 method)

例1. $e^{it}\sqrt{Q(z)}=e^{it}\sqrt{(1-z^2)}$ の流れの図

In [2]:
x = [-2:0.2:2;]'
y = x'
z = x .+ y.*im

δ=0.5

for t in -δ:δ:δ

    plotstart()
    title("\$t = $t\$")

    w = exp(im*t)*sqrt.(1-z.^2)
    plotvf(z,w)
    plotstream(z,w)

    #grid("on")
    plotx(1,0,"black")
    plotx(-1,0,"black")
    plot([-1,-2],[0,0],color="blue")
    plot([1,2],[0,0],color="blue")
    ae()

end