配置空間 ぱらぱらめくる『私説 超幾何関数』

  • 1. 配置空間
    • 基礎事項
      • 類別(カテゴリに分けること)。その分類基準が同値関係。類には代表を置くことがある。類の集合を商空間という。これをX/\simと書く。
        • 商空間はある集合を、別の集合から0を除いたもので除したものの一般化。有理数は、整数集合を0を除いた整数集合で除した商空間。射影直線・一次元射影空間も0以外で除して同値関係によって束ねた商空間
        • 商空間はわかりにくいので、わかりやすくすると便利。そのわかりやすくすることを実現という。射影直線の集合をy=1平面の点で考えることは実現。複素数のペアの差が2 \pi iの整数倍のときに同値関係とすれば、複素数全体はある部分空間のみで考えることができるが、これも実現。群があって、群の演算のによって移り変わる要素を類としてくくると、群Gの軌道と呼ばれるものができる。群の代わりに群の集合を持ってきて、同値関係を、いずれかの群演算で移り変わるもの、として類にくくることもできる
      • 指数関数・対数関数・冪関数
        • 指数関数は複素平面上のすべての点において絶対収束するべき級数exp(x) = \sum_{n=0}^{\infty} \frac{x^n}{n!}であって、dz/dx=z,z(0)=1のただ一つの解。このように定義される指数関数から出発して\sin, \cos, \piを定義する。特にexp(ix)=-1を満足する最小の正の数が\piである。これが入ってきて、exp(2\pi i)=1と、exp (x+y) = exp(x) exp(y)となることとを合わせると、指数関数が、周期2\pi iの周期関数であることとなる。exp(x)は0二ならないから、複素数全体から0を除いた集合について指数関数は類を与え、商空間の実現として半径1の円周が得られる
        • 対数関数はあるものの積分として定義する。0を除く複素数全体について、1から複素数zまでの道を考える。この道C_z上で\int_{C_z}\frac{1}{\zeta} d \zetaなる積分を考えると、これは道について[0,1]のパラメタ表示を考えて\int_0^1 \frac{C_z'(t)}{C_z(t)} dtに等しく、これは道を滑らかに変化させるとき、道の取り方を変えても変わらないことが知られており、これを対数関数\log(C_z)とする。この道の取り方として、絶対値の増減と周回とに分けることができて、そのようにすると、複素数の角座標表現に基づく対数関数の取り扱いが出てくる。\log(C_z) = \log(|C_z|) + i \times arg(C_z)
        • 冪関数は指数関数と対数関数の組み合わせexp(a \log (C_z))として定義される

z <- rnorm(1) + 1i * rnorm(1)

R <- Mod(z)
theta <- Arg(z)

log(R) + 1i * theta
log(z)

exp(z)

R * cos(theta) + 1i * R *sin(theta)
a <- runif(1)
exp(a*log(z))

n <- 10000
X <- matrix(runif(n^2,min=-0.1,max=0.1),n,n)
X. <- X[,1] + 1i * X[,2]
Y <- exp(a * log(X.))
# zは複素数のベクトル
# int0,int1はintensityの上下限、sat0,sat1はSaturation(彩度)の上下限
my.hsv <- function(z,int0=0.6,sat0=0.3,int1=1,sat1=1){
# 複素数の偏角
	arg <- Arg(z)
	s <- which(arg<0)
	arg[s] <- arg[s]+2*pi
# 複素数の絶対値
	r <- Mod(z)
# 絶対値が非常に大きくてもそこそこの色になるように対数変換
	s <- which(r>1)
	r[s] <- log(r[s])
# 絶対値で周期性が出るように4のmod
	r. <- 4*(r%%1)
	k <- floor(r.)
	r. <- r.-k
# 明度が上限、明度が下限、彩度が上限、彩度が下限の4パターンを
# 4のmodに対応づける
# 明度・彩度を動かすときは、複素数の絶対値で1次線形変化
	inten <- sat <- rep(0,length(r))
	s <- which(k==0)
	inten[s] <- int1
	sat[s] <- sat1-(sat1-sat0)*r.[s]
	s <- which(k==1)
	inten[s] <- int1-(int1-int0)*r.[s]
	sat[s] <- sat0
	s <- which(k==2)
	inten[s] <- int0
	sat[s] <- sat1-(sat1-sat0)*(1-r.[s])
	s <- which(k==3)
	inten[s] <- int1-(int1-int0)*(1-r.[s])
	sat[s] <- sat1

	return(cbind(arg,inten,sat))
}
my.hsv2rgb <- function(h,s,v){
# 色相の6 のmodでぐるりの情報を作る
	hi <- floor(h/(2*pi)*6)
	hi[which(hi==6)] <- 0
# 色相のぐるりの余りをfに入れ、それと明度・彩度とでp,q,tという3変数を決める
# 3変数を色相からの値を取らせる1つの原色を除いた2原色の値を定めるために使う
# 使い方は巡回させることでうまいことやる
	f <- (h/(2*pi)*6) %%1
	p <- v*(1-s)
	q <- v *(1-f*s)
	t <- v *(1-(1-f)*s)
	r <- g <- b <- rep(0,length(h))
	s <- which(hi==0)
		r[s] <- v[s];g[s] <- t[s]; b[s] = p[s];
	s <- which(hi==1)
		r[s] <- q[s];g[s] <- v[s]; b[s] = p[s];
	s <- which(hi==2)
		r[s] <- p[s];g[s] <- v[s]; b[s] = t[s];
	s <- which(hi==3)

		r[s] <- p[s];g[s] <- q[s]; b[s] = v[s];
	s <- which(hi==4)
		r[s] <- t[s];g[s] <- p[s]; b[s] = v[s];
	s <- which(hi==5)
		r[s] <- v[s];g[s] <- p[s]; b[s] = q[s];
	return(cbind(r,g,b))
}
col <- my.hsv(Y)
col <- my.hsv2rgb(col[,1],col[,2],col[,3])

plot(X,pch=20,cex=1.5,col=rgb(col[,1],col[,2],col[,3]))
    • 射影空間と射影変換
      • k次元射影空間は、k+1次元線形空間の商空間である。どうやって「商」をとるかと言えば、基底に対して取られる座標について、その比をとり比が等しいものを同値とみなすことによる商空間。基底を取りかえると座標も変わるが、それに応じて、座標の比(これは商空間の類)も変わる。基底の取り換えを正方行列で表せば、それは一般線形群になっていて、この一般線形群は、座標比に作用して、この座標比の変換を射影変換群と呼ぶ
      • k+1次元空間での座標変換が(k+1)^2正方行列で表されるとき、その射影空間での変換(射影変換)は、分数一次変換\frac{\sum_{i=0}^k a_iy_i}{\sum_{i=1}^k b_i y_i}で表される
      • 1次射影空間は、同時には0でない2つの値の比の集合だが、それは、2つのうちの後者が0でないときの2つの値の比と、{1,0}との和集合とも言い換えられる。この「比」は数直線(体Kの全体)であるから、「体全体」と1点の和。
      • 2次射影空間は、体の直積全体と、1次射影空間の和集合。3次のそれは、体の3乗と2次元射影空間の和集合…。結局P^k = K^k \cup K^{k-1} \cup K^{k-2} \cup ... \cup K \cup \{1:0\}となっている。
      • このような射影空間上の点は、射影変換群により他の点に移りあうという意味で、射影変換群に関して平等な点の集まりであって、無限遠に相当する点もある基底に関してそうなっているにすぎない。その意味で射影空間上のすべての点は平等
    • 1次元射影空間(射影直線)上の射影変換によって、任意の異なる3点が(無限遠、0,1)に移せる
      • 射影直線上の3点はそれぞれ2つの数の比で表せる。0:0以外なら何でもよいので(k1x1,x1),(k2,k2,y2),(k3x3,k3)のようにして、x1,y2,x3は0であるかもしれないが、k1,k2,k3はいずれも0でないものとする。このとき、行列\begin{pmatrix}k1x1 & k2 & k3x3\\ k1 & k2y2 & k3 \end{pmatrix}に左から3つの正方行列を作用させる
      • このことから、「任意の3点」→「任意の3点」となる射影変換があることがわかる
      • では「4点」→「4点」となるような、その「4点」にはどんな制約があって、どのゆな射影変換と対応するか、ということを次に問題にする
        • それは「4点の組」は線形変換作用で類別したときに、すべてが同値関係でくくられるわけではなくて、複数の(多数の、無限に多くの??)類に分けられるということなので、そういった語り方でこの問題を進めていくことにする
# 適当に作る
k1 <- rnorm(1)
k2 <- rnorm(1)
k3 <- rnorm(1)
x1 <- rnorm(1)
y2 <- rnorm(1)
x3 <- rnorm(1)

P <- matrix(c(k1*x1,k1,k2,k2*y2,k3*x3,k3),2,3)
P
# 最初に第1,2列に関する正方行列の逆行列を作用させる
M <- P[,1:2]
M.inv <- solve(M)
P. <- M.inv %*% P
# 次に、第3列の第1行成分を1にするような行列を作用させる
N <- diag(c(1/P.[1,3],1))
P.. <- N %*% P.
# 次いで、第3列第1行成分をそのままに、第2行成分を1にするような行列を作用させる
L <- diag(c(1,1/P..[2,3]))
# 第1、第2列はどちらかの要素が0なので、0出ない要素は1に換えても射影直線上ではOKなので、これで無限大、0、1に移せたことになる
round(L %*% P..)

## 初期の点のセットに、無限遠点を混ぜても大丈夫
k1 <- rnorm(1)
k2 <- rnorm(1)
k3 <- rnorm(1)
x1 <- rnorm(1)
y2 <- 0
x3 <- rnorm(1)

P <- matrix(c(k1*x1,k1,k2,k2*y2,k3*x3,k3),2,3)

M <- P[,1:2]
M.inv <- solve(M)

P
P. <- M.inv %*% P
P.. <- P.
N <- diag(c(1/P.[1,3],1))
P.. <- N %*% P.
#P..[,3] <- P..[,3]/P.[1,3]
L <- diag(c(1,1/P..[2,3]))

round(L %*% P..)
      • これを関数にしておこう
my.st.proj <- function(P){
	M <- P[,1:2]
	M.inv <- solve(M)
	P. <- M.inv %*% P
	P.. <- P.
	N <- diag(c(1/P.[1,3],1))
	L <- diag(c(1,1/P..[2,3]))
	L %*% N %*% M.inv
}
my.st.proj(P)
my.st.proj(P) %*% P
    • 不変量と配置空間
      • 1点は別の1点に移せる。「平行移動と回転」とからなる線形変換群作用に関して、商空間は1点である、と言い換えられる。2点の組は、2点間の距離が等しい点組同士なら移せる。点距離によって類別されると言い換えられる。変換の不変量が距離であることに対応する。3点の場合には、3点が三角形の頂点であるとして、三角形として合同な3点組同士は類をなす。三角形が合同であることを示す条件のセットが不変量。たとえば3辺の長さという3情報のセットが不変量。2辺の長さとその間の角の大きさという3つの情報のセットでもよく、これも不変量
      • 射影直線上の順序のあるn点の射影変換における類別を考えるとき、n点を同じ射影変換で移しあえることを持って同値としたときにできる類別具合〜商空間を「射影直線上の異なるn点のなす配置空間」と呼ぶ
    • 複比
      • 射影直線上の3点を無限遠、0,1に移す射影変換は一意に決まるから、4点に対して、そのうちの初めの3点に関して、そのようにする変換を作用させれば、4点目はどこかしらに移る。その移る先は、4点の取り方による。この「3点は標準的な点に移したときに、最後の1点が移った先」によって類別することができる。この最後の1点が移った先を『複比』と呼ぶ
      • 複比は、3点が移った先とは重ならないから、体Kから0,1(と無限大)とを除いた値を取りうることもわかる
      • この方式で複比lambdaを計算する関数を作っておこう
my.cross.ratio.mat <- function(M){
	tmp <- my.st.proj(M) %*% M
	lambda <- tmp[2,4]/tmp[1,4]
	return(list(X = tmp[,1:3],X2 = tmp,lambda=lambda))
}
M <- matrix(rnorm(2*4),2,4)

my.cross.ratio.mat(M)
    • 複比よりもっとよいものをみつけよう
      • 複比は第1、第2、第3、第4の点のうち最初の3つを標準化に使って最後に4つ目の点によって複比を求める方法であって、4点の間に平等感がない
      • これを平等にする
      • 複比は結局、4x2の値から一つの値を取り出す関数である
      • 今から述べる複比に代わるものは、4x2の値から、4点の対称性を考慮して、一つの値で決まる、3つの値からなる比を引き出す(3つの値の比は2次元射影空間(射影平面)、ただし、制約があるから、1次元亜空間になる)。
      • 1,2,3,4 ~ i,j,k,lについてその順番を換えても同じようになるものとして、D(ij) (i,j列を取りだした2x2行列の行列式)について、D(ij)D(kl), D(ik)D(jl), D(il)D(jk)なる3つの値の比が等しくなるように取り出す。
      • 今、2x4行列x が2x4行列yに移るときにそれが同値であるとして、その移り変わりを、2x2行列Aと4x4対角行列aとを使って y=Axaと表せるとしたとき、D(ij)D(kl):D(ik)D(jl): D(il)D(jk)=\lambda -1 : -1 : \lambdaとなる(ただし\lambdaは複比)。
M <- matrix(rnorm(2*4),2,4)
DM <- c(det(M[,1:2]) * det(M[,3:4]),
det(M[,c(1,3)]) * det(M[,c(2,4)]),
det(M[,c(1,4)]) * det(M[,c(2,3)]))

A <- matrix(rnorm(4),2,2)
a <- diag(rnorm(4))

N <- A %*% M %*% a
DN <- c(det(N[,1:2]) * det(N[,3:4]),
det(N[,c(1,3)]) * det(N[,c(2,4)]),
det(N[,c(1,4)]) * det(N[,c(2,3)]))

DM / DN

tmp <- my.cross.ratio.mat(M)
tmp.v <- c(tmp[[3]]-1,-1,-tmp[[3]])
DM/tmp.v
DN/tmp.v
      • D(ij)D(kl) - D(ik)D(jl) + D(il)D(jk) = 0という関係でもある
      • 4点を1次元射影直線上の4点に表し、さらに、それを射影変換において類別して、商空間に対応づけることを考える。この商空間は複比という値が作る射影直線であり、射影直線は無限遠で閉じているので、結局、輪の上の点に対応づけられることになる。複比には取れない値があり、その数は3つあるから、この輪は3つの取れない値によって3つの弧に分けられる。実際、この3つの孤は4点が(第1点を基準にしても一般性は変わらないのでそれを固定して)、並ぶ並び順1234,1243,1423の3通りに対応している。この輪であるところの射影直線は、「実現」である
    • これはy=Axa という変換(x,yはk次元ベクトルがn個束になったkxn行列、Aはkxk行列、aはnxnの対角行列)で、x,yが同値関係でむすばれるときの商空間の問題になるが、実は、これは不変式論と言って代数幾何の長年の中心問題なのだそう…。ここでnxnの対角行列、というところが、n変数の連立常微分方程式での行列の指数関数の対角成分に対応している(?)。これが、そもそも、これを調べ始めたきっかけで…)
    • グラスマン同型とカーネル
      • 2次元から1次元に射影するとき、3点までは商空間が1点で、4点にすると商空間が輪になった。これは2x4行列は2x2行列の分はつぶれたりしないで1対1対応を作れるが、2列分はどこかに吸収されないといけないことを意味していて、そのつぶれる次元の1つが射影でつぶす分、もう1つは、商空間の1次元座標に吸収される。
      • このように、kxn行列があったときに、つぶさないといけない次元n-kのことを考える必要があり、逆に、このつぶす部分が射影の後も残る限りはそれは商空間として類別されることとなり、それが「配置空間」の存在を意味する。
      • したがって、(n-k) x n行列が作るカーネルとかを使ってそのことを考えましょう、というのがグラスマン同型
    • 4点について順序をなくして同一視するとする。複比で考えれば、複数の複比が同じ類に対応づけられる。実際\lambda, \frac{1}{\lambda},1-\lambda, \frac{1}{1-\lambda},\frac{\lambda}{1-\lambda},\frac{\lambda-1}{\lambda}が同値関係を作る。
    • これらに対応するのがj(\lambda) = \frac{4}{27}\frac{\lambda^2-\lambda+1)^3}{\lambda^2(\lambda-1)^2}という不変式。
      • この4、27は楕円曲線(y^2 = x^3 + a x +b)が非特異であること、非特異であることの判別式が\Delta = - 16 (4a^3+27b^2) \ne 0とつながってくる(ようだ)
    • これは複比\lambdaを用いた式であったが、点平等に留意して部分行列の行列式で表せば[tex:\frac{*1^2+D(13)D(24))^2+(D(14)D(23))^2)^3}{(D(12)D(34))^2(D(13)D(24))^2(D(14)D(23))^2}]

*1:D(12)D(34