連続、閉空間

  • 地表面の温度が連続であるとすると、地表面上の点とその裏側の点とのペアを考えると、同温のペアが必ず存在する、という話を見かけた。
  • 円で考えてもよい
  • 円で、中間値の定理という話でもよい
  • 単に y=f(x)な有限x区間の曲線(ただし両端点のyの値は同じ)を引いて、やると、そこに有限x区間の半分の幅のx軸に水平な線分でy=f(x)上に両端を持つものがある、と言い換えられる
  • この方が小学生に説明するときには簡単そう
  • 2つ考える
    • 一つは円(閉じた空間として次元が低くシンプル)を、シンプルなままに高次元(円→球面→)としたときに、「裏側であって同温」な点の集合はどういう形なのか、ということ
      • 派生して、シンプルではない閉じた空間だったら、どうなるか…
    • もう一つは、「裏」とか「同温」とか言う制限は、どういう風に緩めたり変形したりできるのか…その緩め型には何か一般化特有な美しさがあるのか、ということ
  • ちなみに、データ空間も、閉じていれば、そういう「一見不思議」な世界が広がっていることになる(不思議ではないわけだけれど)
    • 『同温〜ホメオスタシス』な状態の連続空間が広がっている…そこを個体は移動している…的な
  • 角座標表示して、球面上の値をその角の2\pi倍で決めれば球面上に滑らかな値の分布が作れる
  • ここに、「表裏で同じ値の点が、どういう形を作るのか」を見ればよい、ということ?
  • まずは温度の分布を図示して

  • 表裏で温度の近い地点を抜き出してプロットする

  • 円周での同温対蹠点の存在は確認されているので、球面の場合は、こんな風に考えるか
    • 球に南北極を適当に取る
    • 南北極を通る大円(経線のペア)を取るとその円周上には、同温対蹠点ペアが必ずある
    • 経線による大円での同温対蹠点ペアは、経度をわずかに動かしたとき連続的に変化するはず(そのような温度分布を想定している)から、結局、任意の南北極軸に対して、「世界一周コース」が描ける
    • この「世界一周コース」を描いたときに用いた南北極軸の取り方以外のすべての南北極軸の取り方のうち、この「世界一周コース」上の対蹠点ペアを南北極にとった場合以外の場合について、同じ手続きで、得られる「世界一周コース」である
    • では、この「世界一周コース」上の2点を南北極軸としたときには、どうなるだろうか
    • ある経線による大円を取ったとき、その同温対蹠点がたまたま南北極だった、という場合に相当するだけで、それ以降の手続きは同じだから、結局、一般性は保たれていたことになる。
  • 結局
    • 2次元球の表面(円周)上には、同温対蹠点ペアが1つ以上存在し
    • 3次元球の表面(球面)上には、同温対蹠点が作る、トポロジカルな円周(2次元球の表面)が1つ以上存在する
    • 一般化すると、n次元球の表面である閉じたn-1次元多様体には、同温対蹠点が作るトポロジカルなn-1次元球面(n-2次元多様体)が存在する、ということなのだろう・・・
theta <- phi <- seq(from=0,to=1,length=100)*2*pi

tp <- expand.grid(theta,phi)
# 裏側座標
tp2 <- tp+pi
x <- abs(cos(tp[,1]))*cos(tp[,2])
y <- abs(cos(tp[,1]))*sin(tp[,2])
z <- sin(tp[,1])
x2 <- abs(cos(tp2[,1]))*cos(tp2[,2])
y2 <- abs(cos(tp2[,1]))*sin(tp2[,2])
z2 <- sin(tp2[,1])

range(x+x2)
range(y+y2)
range(z+z2)

w <- cos(tp[,1])+cos(tp[,2])
w2 <- cos(tp2[,1])+cos(tp2[,2])


library(rgl)

X <- x*(1+w*0.1)
Y <- y*(1+w*0.1)
Z <- z*(1+w*0.1)
X2 <- x2*(1+w2*0.1)
Y2 <- y2*(1+w2*0.1)
Z2 <- z2*(1+w2*0.1)


plot3d(X,Y,Z,col=gray((max(w)-w)/(max(w)-min(w))))
plot3d(X,Y,Z)

rgl.snapshot("test.png")
#  表裏の温度差
w0 <- w-w2
# それがごく近い点だけを抜き出す
ss <- which(abs(w0)<=quantile(abs(w0),0.05))

plot3d(X[ss],Y[ss],Z[ss])
rgl.snapshot("test2.png")