複素関数のグラフについて、様々な例
今まで作ってきた複素関数のプロット例をいくつか紹介したいと思います。一応、グラフのプロット関数をもう一度書いておきます。
複素関数のグラフを描く関数。
まず与えられた複素関数の絶対値付きの値を返す、3Dのグラフを描くプロット関数を下に記します。
import numpy as np import matplotlib.pyplot as plt %matplotlib inline from mpl_toolkits.mplot3d import Axes3D from scipy.special import gamma def three_D_plot(func,picname): x, y = np.meshgrid(np.linspace( -5, 5, 500), np.linspace( -5, 5, 500)) z = x + y*1j w = func(z) fig = plt.figure() ax = Axes3D(fig) ax.plot_surface(x, y, np.abs(w)) ax.set_zlim3d(0, 15.) ax.autoscale(False) plt.axis([-6., 6., -6., 6.]) plt.savefig(picname) plt.show()
次にこの複素関数を偏角ごとに2Dに描く関数と、絶対値付きの値をレベルカーブごとに2Dにプロットする関数を下に書いておきます。
import numpy as np import matplotlib.pyplot as plt %matplotlib inline from scipy.special import gamma def plot_complex(complex_func,picname1,picname2): x, y = np.meshgrid(np.linspace(-4, 4, 400), np.linspace(-4, 4, 400)) z = x + y*1j angles = (np.angle(complex_func(z)) + 2*np.pi) % (2*np.pi) plt.figure(figsize=(6,5)) im_1 = plt.pcolor(x, y, angles, cmap="hsv", vmin=0, vmax=6) plt.colorbar(im_1) plt.title('argument') plt.savefig(picname1) plt.figure(figsize=(6,5)) im_2 = plt.pcolor(x, y, np.abs(complex_func(z)), vmin=0, vmax=4) plt.title('absolute value') plt.colorbar(im_2) plt.savefig(picname2) plt.show()
いくつかの具体例。
例①
このプロット関数達を用いてまずガンマ関数を前回のようにプロットしてみる。ガンマ関数自体については一つ前のの記事を読んでみて下さい。(Gamma関数をお絵描き - 努力で数論)
three_D_plot(gamma,picname="gamma3D.png")
するとグラフは以下のようになる。
plot_complex(gamma,"gamma_arg.png","gamma_abs.png")
するとグラフは以下のようになる。
例②
さて別の複素関数でトライしてみよう。
例2
任意のに対して
$$f(z) = z$$
def identity(z): return z three_D_plot(identity,picname="identity3D.png")
するとグラフは以下のようになる。
plot_complex(identity,"identity_arg.png","identity_abs.png")
するとグラフは以下のようになる。
例③
次の例は逆数を返す関数。ちなみにこの関数は上の例2とは違ってで極を持つのでそこを除けば正則な関数となっている。こういったビジュアルの要素であるグラフを通じ、極の理解が深まるはずである。
例3
以外の任意のに対して
$$f(z) = \frac{1}{z}$$
まず絶対値付きの場合は
def inverse(z): return 1/z three_D_plot(inverse,picname="inverse3D.png")
となり、次に2Dの図は
plot_complex(inverse,"inverse_arg.png","inverse_abs.png")
となる。
例④
複素指数関数は次のように定義でき、任意のに対して正則である。
例4
任意のに対して
$$f(z) = e^{z}$$
three_D_plot(np.exp,picname="exp3D.png")
plot_complex(np.exp,"exp_arg.png","exp_abs.png")
グラフは上のようになる。
例⑤
複素三角関数の一例としてのグラフを描く。これも任意のに対して正則である。
例5
任意のに対して
$$f(z) = sin(z)$$
three_D_plot(np.sin,picname="sin3D.png")
するとグラフは以下のようになる。
plot_complex(np.sin,"sin_arg.png","sin_abs.png")
するとグラフは以下のようになる。