複比のメモ

  • 射影変換によって直線状の4点(P,S,R,Q)間の距離に関して「複比」が保存される
  • \frac{PR/QR}{PS/QS}が保存される
  • 複比を保存しながら点を並べていったときの値の列xについて複比を計算したいとき
my.doubleratio <- function(x){
	if(!is.matrix(x)){
		x <- matrix(x,nrow=length(x))
	}
	P <- x[1:(length(x[,1])-3),]
	Q <- x[4:length(x[,1]),]
	S <- x[2:(length(x[,1])-2),]
	R <- x[3:(length(x[,1])-1),]
	((P-R)/(Q-R))/((P-S)/(Q-S))
}
d <- 2

lambdas <- runif(d)


M <- matrix(runif(d^2)*4,d,d)
t <- seq(from=0,to=10,length=20)

z <- matrix(0,length(t),d)
for(i in 1:length(t)){
	z[i,] <- exp(lambdas*t[i])
}
x <- t(M %*% t(z))
#x[,1] <- x[,1] + 2
#x[,2] <- x[,2] + pi
x <- x/x[,d]

d.r <- matrix(0,length(t)-3,d)
for(i in 1:d){
	d.r[,i] <- my.doubleratio(x[,i])
}
matplot(d.r,type="l")