ryamadaのコンピュータ・数学メモ RSSフィード

統計学・遺伝学関連の姉妹ブログ『ryamadaの遺伝学・遺伝統計学メモ』
医学生物学と数学とプログラミングの三重学習を狙う学習ツール
数学用語集(TOMAC)

2010-11-25 駆け足で読む『複素関数のさわり』

ryamada2010-11-25

[][]駆け足で読む『複素関数のさわり』 17:11

  • 『複素関数のさわり』(芦田正巳先生)が非常にわかりやすい
  • 第1章 複素関数
    • 複素数の世界の指数関数・三角関数・双曲線関数
    • ひとまず、複素数に関する指数関数・三角関数・双曲線関数 などをRを使って描いてみる
    • Rはexp(),cos(),sin(),cosh(),sinh(),acos(),asin(),acosh(),asinh()が複素数対応(のよう)なので、与えるだけで、絵が描ける
    • XY平面は複素数面、Z軸に値を与えるが、以下のコマンドでは、複素関数の値の虚部を与えている。実部を与えれば実部のグラフが描ける。こちらでリーマン面を同様なやり方で描いた
    • 虚部と実部を並べて比べる、cos とcosh、sin とsinhとを並べて比べる、それらの虚部と実部とを、それぞれ比べると、周期のずれ、虚部・実部の交代している様子などが見て取れる
    • z=x+iy:zは複素数、x,yは実数
    • e^{iz}=¥cos(z)+i ¥sin(z)
    • e^z=¥cosh(z)+¥sinh(z)
      • 指数関数の偶関数部分が¥coshで奇関数部分が¥sinh
    • ¥cos^2(z)+¥sin^2(z)=1
    • ¥cosh^2(z)-¥sinh^2(z)=1
    • ¥cos(z)=¥frac{1}{2}(e^{iz}+e^{-iz})
    • ¥sin(z)=¥frac{1}{2}(e^{iz}-e^{-iz})
    • ¥cosh(z)=¥frac{1}{2}(e^{z}+e^{-z})
    • ¥sinh(z)=¥frac{1}{2}(e^{z}-e^{-z})
    • ¥cosh(z)=¥cos(iz)
    • ¥sinh(z)=-i¥sin(iz)
x<-seq(from=-5,to=5,by=0.05)
y<-seq(from=-5,to=5,by=0.05)
xy<-expand.grid(x,y)
z<-complex(real=xy[,1],imaginary=xy[,2])

# 以下、虚部を第3軸に与えている
# 実部で描くためには、Re(exp(z))などとする

plot3d(xy[,1],xy[,2],Im(exp(z)),col=rainbow(1000))

X <- par3d("userMatrix") 
movie3d( par3dinterp( userMatrix=list(X,rotate3d(X, pi/2, 1, 0, 0),rotate3d(X, pi/2, 0, 1, 0) )), duration=5 ,movie="exp",dir=".")


plot3d(xy[,1],xy[,2],Im(cos(z)),col=rainbow(1000))

X <- par3d("userMatrix") 
movie3d( par3dinterp( userMatrix=list(X,rotate3d(X, pi/2, 1, 0, 0),rotate3d(X, pi/2, 0, 1, 0) )), duration=5 ,movie="cos",dir=".")


plot3d(xy[,1],xy[,2],Im(sin(z)),col=rainbow(1000))

X <- par3d("userMatrix") 
movie3d( par3dinterp( userMatrix=list(X,rotate3d(X, pi/2, 1, 0, 0),rotate3d(X, pi/2, 0, 1, 0) )), duration=5 ,movie="sin",dir=".")


plot3d(xy[,1],xy[,2],Im(cosh(z)),col=rainbow(1000))

X <- par3d("userMatrix") 
movie3d( par3dinterp( userMatrix=list(X,rotate3d(X, pi/2, 1, 0, 0),rotate3d(X, pi/2, 0, 1, 0) )), duration=5 ,movie="cosh",dir=".")


plot3d(xy[,1],xy[,2],Im(sinh(z)),col=rainbow(1000))

X <- par3d("userMatrix") 
movie3d( par3dinterp( userMatrix=list(X,rotate3d(X, pi/2, 1, 0, 0),rotate3d(X, pi/2, 0, 1, 0) )), duration=5 ,movie="sinh",dir=".")


plot3d(xy[,1],xy[,2],Im(acos(z)),col=rainbow(1000))

X <- par3d("userMatrix") 
movie3d( par3dinterp( userMatrix=list(X,rotate3d(X, pi/2, 1, 0, 0),rotate3d(X, pi/2, 0, 1, 0) )), duration=5 ,movie="acos",dir=".")


plot3d(xy[,1],xy[,2],Im(asin(z)),col=rainbow(1000))

X <- par3d("userMatrix") 
movie3d( par3dinterp( userMatrix=list(X,rotate3d(X, pi/2, 1, 0, 0),rotate3d(X, pi/2, 0, 1, 0) )), duration=5 ,movie="asin",dir=".")


plot3d(xy[,1],xy[,2],Im(acosh(z)),col=rainbow(1000))

X <- par3d("userMatrix") 
movie3d( par3dinterp( userMatrix=list(X,rotate3d(X, pi/2, 1, 0, 0),rotate3d(X, pi/2, 0, 1, 0) )), duration=5 ,movie="acosh",dir=".")


plot3d(xy[,1],xy[,2],Im(asinh(z)),col=rainbow(1000))

X <- par3d("userMatrix") 
movie3d( par3dinterp( userMatrix=list(X,rotate3d(X, pi/2, 1, 0, 0),rotate3d(X, pi/2, 0, 1, 0) )), duration=5 ,movie="asinh",dir=".")
# 関数間の比較用
open3d()
plot3d(xy[,1],xy[,2],Re(exp(z)),col=rainbow(1000))
open3d()
plot3d(xy[,1],xy[,2],Im(exp(z)),col=rainbow(1000))
open3d()
plot3d(xy[,1],xy[,2],Re(cos(z)),col=rainbow(1000))
open3d()
plot3d(xy[,1],xy[,2],Im(cos(z)),col=rainbow(1000))
open3d()
plot3d(xy[,1],xy[,2],Re(sin(z)),col=rainbow(1000))
open3d()
plot3d(xy[,1],xy[,2],Im(sin(z)),col=rainbow(1000))
open3d()
plot3d(xy[,1],xy[,2],Re(cosh(z)),col=rainbow(1000))
open3d()
plot3d(xy[,1],xy[,2],Im(cosh(z)),col=rainbow(1000))
open3d()
plot3d(xy[,1],xy[,2],Re(sinh(z)),col=rainbow(1000))
open3d()
plot3d(xy[,1],xy[,2],Im(sinh(z)),col=rainbow(1000))


  • 第2章 複素関数の微分
    • 複素関数の微分とは、複素数を係数とし、変数に複素数をとる関数を、複素数である変数で微分すること
    • 複素平面は2次元なので、そこでの微分も2次元
    • 微分可能性は2次元面の全方位での微分可能性のこと
      • 次元が上がると、「全部」を「なめる」のが大変になるのは、統計処理と同じこと
    • 複素関数の微分可能性から、2次元のラプラシアンが出てくるのは、「2次元だから」
    • 物理では、3次元のラプラシアンが良く出てくる
    • 統計では高次の微分が必要になる
  • 第3章 複素関数の積分
    • 2次元の積分
    • 経路で積分
    • ぐるっと一周すると積分はゼロ
      • ただし、それには一周する経路とその内側で微分ができないといけない
    • 内側に微分できない部分があるとき(正則でないとき)には、ぐるり1周の積分には2¥pi i分、増える
  • 第4章 複素関数の展開と特異性
    • 微分を繰り返してそれを使って展開する
    • 正則かどうかは、「微分」を使うので大事
    • テイラー展開とローラン展開
    • 特異点:正則でない点のこと
      • ローラン展開は正則でない点を囲む領域での展開
      • 正則でない点(特異点)に関して調べるのにローラン展開が使える
  • 第5章 留数定理
    • 留数は特異点のタイプとその数と一周ぐるりとの関係で決まる
    • 留数を求めると積分もできてしまう