オイラーの公式で感じる次元の呪い
- 6. #1 の復習
• 超立方体( p.5 )
– d 次元単位超立方体の中心から頂点までの距離
1/2*sqrt(d) → 半径 r
– d 次元超立方体の頂点の数
2d
→ φ
円を分割?するのに使う
d: 次元
- 7. Rで書いてみる
たった 7 行
z <- c(0+0i, NA) # 中心( 0+0i )を付置(ベクトル)
for(d in 1:16){ # とりあえず 16(4*4) 次元まで
phi <- seq(0, 2*pi, length=2^d+1) # φ
for(i in phi)
z <- c(z, sqrt(d)/2*exp(1)^(1i*i))
z<-c(z, NA) # 区切る
}
z=r ・ eiφ
中心からの頂点までの距離 (r) sqrt(d)/2
頂点の数 2d
0 2π
頂点の数 +1
e 虚数 i×phi
- 8. plot する
plot(z, type="b", pch=".")
実際はこんな感じ。レイヤーを重ねる感じ。
> par(pty = "s") # プロット領域を正方形にする
> plot(z, type="b", pch=".")
> grid() # グリッド
> points(z, type="b", pch=".") # グリッドを上書き
> points(0+0i, pch=20) # 0+0i だけをプロット
想像できましたね!
- 11. まとめ
• オイラーの公式で偏角φ と中心からの距離r
– z = r ・ eiφ
= r(cosφ + i ・ sinφ)
• 複素数はRで普通に plot できる
– exp. plot(0+0i) # 複素平面に plot される
• seq(0, 2*pi, length = ...)
– 0 から2π をlength で等間隔に分割(頂点)
• 100 次元までチャレンジしてください
– 「次元の呪い」が体感できます。
– 但し頂点は1267650600228229401496703205376 個
100 次元超立方体は3次元空間では
ツルツルじゃないのかなぁ~?
さてアンブレラは何次元?
(傘の骨は普通は8本)
- 12. Rのおまけ
library(rgl) # rgl ライブラリを使って 3D
plot3d(Re(z), Im(z), Mod(z))
d <- 1:100
plot3d(2*d, sqrt(d)/2, 2^d)
面 距離 頂点
x y r (絶対値)
- 13. Rのおまけ2
• log を取って気分だけでも
どうせなら 1000 次元まで
z <- 0+0i
for(d in 1:1000){
phi <- seq(0, 2*pi, length=as.integer(log10(2^d))+1)
for(i in phi)
z <-c(z, sqrt(d)/2*exp(1)^(1i*i))
z <-c(z, NA)
}
library(rgl) # rgl ライブラリを使って 3D プロット
plot3d(Re(z), Im(z), Mod(z),type="l",col=rainbow(1000))
次のページに plot