メモ

  • 一昨日,昨日からの続き
  • 資料(Notes on Di erential Geometry and Lie Groups)
  • 1 Introduction to Manifolds and Lie Groups
  • 1.1 指数マップ
    • 指数行列
      • たとえばskew symmetric matrixの指数行列は回転行列
exp.m <- function(A,n){
	# 固有値分解
	eigen.out<-eigen(A)
	# P=V,P^{-1}=U
	V<-eigen.out[[2]]
	U<-solve(V)
	B<-diag(exp(eigen.out[[1]]*n))
	X <- V%*%B%*%U
	return(list(matrix = X, eigen.vs <- eigen.out[[1]]))
}

# skew matrix
n <- 2
K <- 10
A <- matrix(runif(n^2)*K,n,n)
diag(A) <- 0
A <- A +t(A)
A[lower.tri(A)] <- -A[lower.tri(A)]
A


#k <- runif(1)*10
#A <- matrix(c(0,k,-k,0),byrow=TRUE,2,2)

As <- list()
t <- seq(from=0,to=10,length=1000)
for(i in 1:length(t)){
# 計算上は複素行列なので虚部がついてくるが
# 成分が0なので実行列化する
	As[[i]] <- Re(exp.m(A,t[i])$matrix)
}
x <- runif(n)

X <- matrix(0,length(t),n)
for(i in 1:length(t)){
	X[i,] <- As[[i]] %*% x
}
# n=2なら円、n>2ならn次元球面を回る
plot(as.data.frame(Re(X)))
# 原点からの距離は一定
plot(apply(Re(X)^2,1,sum))
    • det(e^A) = e^{tr(A)}
n <- 5
K <- 1
A <- matrix(runif(n^2)*K,n,n)
exp.A <- Re(exp.m(A,1)$matrix)

exp(sum(diag(A)))
det(exp.A)