外積代数メモ

  • n次元ベクトル空間に2^n次元のグラスマン代数標準基底がある
  • その基底を(),(1),(2),...,(n),(1,2),(1,3),...,(n-1,n),...,...,(1,2,...,n)とする
  • 今、基底同士のウェッジ積には、「同じ要素を含んでいれば0」というルールと、「(1,4,3) = (-1) (1,3,4)というルール(要素の入れ替えの回数だけ(-1)を掛ける」というルールがある
  • これをRでやってみる
    • 並べ替えた数字列とそれの正負
my.sign <- function(x){
	if(length(x)==0){
		return(1)
	}
	r <- rank(x)
	s.m <- diag(rep(1,length(r)))
	det(s.m[r,])
}

my.ext.elem <- function(x,k){
	sort.x <- sort(x)
	if(prod(diff(sort.x))==0){
		return(list(c(),0))
	}
	s <- my.sign(x)
	return(list(sort.x,k*s))
}

n <- 10
for(i in 1:8){
	s <- sample(1:n,5,replace=TRUE)
	print("----")
	print(s)
	k <- runif(1)
	print(k)
	print(my.ext.elem(s,k))
}
[1] "----"
[1] 10  7  1 10  3
[1] 0.4968481
[[1]]
NULL

[[2]]
[1] 0

[1] "----"
[1] 2 5 9 3 8
[1] 0.1717271
[[1]]
[1] 2 3 5 8 9

[[2]]
[1] -0.1717271

[1] "----"
[1] 10  5  1 10  5
[1] 0.6563333
[[1]]
NULL

[[2]]
[1] 0

[1] "----"
[1] 9 4 9 9 5
[1] 0.008575734
[[1]]
NULL

[[2]]
[1] 0

[1] "----"
[1] 8 9 2 9 9
[1] 0.9588244
[[1]]
NULL

[[2]]
[1] 0

[1] "----"
[1] 1 7 6 4 2
[1] 0.3508445
[[1]]
[1] 1 2 4 6 7

[[2]]
[1] 0.3508445

[1] "----"
[1]  4  2  4 10  8
[1] 0.8382979
[[1]]
NULL

[[2]]
[1] 0

[1] "----"
[1] 6 3 4 9 9
[1] 0.4041948
[[1]]
NULL

[[2]]
[1] 0