4. 四元数環の重要性 駆け足で読む『数学をいかに使うか』

  • 駆け足で読む『数学をいかに使うか』の目次はこちら
  • 四元数(Wikiその他資料)
  • 四元数は環をなしている
  • \mathbf{H}=\{\begin{pmatrix}c & d \\ -\bar{d} & \bar{c} \end{pmatrix} | c,d \in \mathbf{C}\}
    • 四元数が積交換できないのは、四元数が行列で表されるような代数の仕組みになっていることからもわかる
    • c,d \in \mathbf{C}は実次元と複素次元の2次元に\mathbf{R}を配置することからなる数で、それを2 \times 2 行列の4つのセルに自由に置いてよいことにすれば、4倍して8次元となるが、\mathbf{H}の定義で、要素には拘束があって、2個の複素数を決めるだけで決まるので、これは、4次元
    • これが四元数の定義を満たしている
    • 四元数の3つの「虚数単位」は
      • \mathbf{i}=\begin{pmatrix} i & 0 \\ 0 & -i \end{pmatrix}, \mathbf{j}=\begin{pmatrix} 0 & 1 \\ -1 & 0 \end{pmatrix}, \mathbf{k}=\begin{pmatrix} 0 & i \\ i & 0 \end{pmatrix}
  • 四元数をRを使って複素2x2行列で表してみる。併せて、テキストブック記載の諸性質を確認する
# 複素数行列のDeterminantの計算用関数
detComplex<-function(M){
	e.out<-eigen(M)
	prod(e.out[[1]])
}


n<-2
# 基本要素
myI<-complex(real=0,imaginary=1)
Ec<-diag(rep(1,n))
Ic<-matrix(c(myI,0,0,-myI),2,2)
Jc<-matrix(c(0,-1,1,0),2,2)
Kc<-matrix(c(0,myI,myI,0),2,2)

Ec
Ic
Jc
Kc

# 四元数を2個の複素数から作る
s<-complex(real=rnorm(1),imaginary=rnorm(1))
t<-complex(real=rnorm(1),imaginary=rnorm(1))

h<-matrix(c(s,t,-Conj(t),Conj(s)),ncol=2,byrow=TRUE)

# h*を作る
h2<-t(Conj(h))

# 
h%*%t(Conj(h))

# h=a + b i + c j + d k的な表現にする
ms<-rep(0,n^2)
ms[1]<-Re(s)
ms[2]<-Im(s)
ms[3]<-Re(t)
ms[4]<-Im(t)

ms[1]*Ec+ms[2]*Ic+ms[3]*Jc+ms[4]*Kc
h

# ノルムの自乗はDeterminantに一致する
sum(ms^2)
detComplex(h)

# h=a + b i + c j + d k的な表現から2x2表現にする
ms<-runif(4)
ms[1]*Ec+ms[2]*Ic+ms[3]*Jc+ms[4]*Kc

# 四元数の実数成分をゼロにするとx*==-xの関係にある

ms[1]<-0
h3<-ms[1]*Ec+ms[2]*Ic+ms[3]*Jc+ms[4]*Kc
h4<-t(Conj(h3))
# h3== -(h4)
h3+h4

# |h|==1な四元数は2次の特殊ユニタリー群である
# |h|==1な四元数を作る
library(MCMCpack)
rs<-c(rdirichlet(1,rep(1,4)))
rs2<-sqrt(rs)
h5<-rs2[1]*Ec+rs2[2]*Ic+rs2[3]*Jc+rs2[4]*Kc
# ノルムの自乗
sum(rs2^2)
detComplex(h5)

# その共役転置を作る
h6<-t(Conj(h5))

# それらはユニタリーの条件を満たしている
h5%*%h6
  • \mathbf{H}^1=\{x \in \mathbf{H}| |x|=1\}T=\mathbf{Ri}+\mathbf{Rj}+\mathbf{Rk}が作る3次元空間の直交変換に対応することが示せる。これはSpin(3)と呼ばれるものなのだという
  • n次元に上げていくとき、それは四元数環からClifford代数と一般化されていく(そして次の章に続いていく)
  • 4元数と関係する3つの流れ
  • \mathbf{H}\mathbf{R}多元環、行列環M_n(F)はF上の多元環外積代数もClifford代数も多元環

補. 外積代数の進む先 駆け足で読む『数学をいかに使うか』

  • この記事は、3. ベクトル積から外積代数まで 駆け足で読む『数学をいかに使うか』の補足
  • ベクトル積を一般次元に拡張すると、外積代数になる
  • 外積代数はベクトル解析につながっている
  • 外積微分形式外微分…時空間軌道の解析から始まった「曲線」「曲面」「多様体」に関する話題の一端であるこの記事につながる
  • 微分形式は、多様体上の「曲がり方」を表した関数の集まりのようなもの。多様体の特徴を座標軸のとりかたに依存せずに捉えることを可能にする。微分形式には複数のやりかたがあって、そのうちの一つが交代微分形式と呼ばれるものである。ここでは、dx_i dx_jdx_j dx_iのように順序を入れ替えると符号が逆転するような仕組みで作られた微分形式であり、外積の仕組みになっている。外積代数のルールが用いられることで、すっきりとした表現ができることを特徴とするとともに、積分に正負が存在することも特徴とする
  • 多様体の「曲がり方」は1次微分的な曲がり方、1次微分がさらにどう曲がるか…、のように、どんどん微分をしていける。そのときに「微分形式」を採用しつつ、次数を上げていけるが、その「次数を上げる多様体上の微分」の仕事を「外微分」と言う(ようだ)。また外微分の特徴は座標の取り方に独立なこと(こちら)

2. Hermite行列その他 駆け足で読む『数学をいかに使うか』

  • 駆け足で読む『数学をいかに使うか』の目次はこちら
  • エルミート行列は次の性質を持つことから、有用
    • エルミート行列の固有値は全て実数である。
    • 正値エルミート行列(対応するエルミート形式あるいは複素二次形式が正定値)の固有値は全て正の実数である。
    • エルミート行列はあるユニタリー行列で対角化可能である。
  • 複素行列とその複素共役・転置
\bar{A}
^t(\bar{A})=\bar{^tA}=A^*
\bar{AB}=\bar{A}\bar{B}
(AB)^*=B^*A^*
n<-3
m<-4
A<-matrix(complex(real = rnorm(n*m), imaginary = rnorm(n*m)),ncol=n)
Ac<-Conj(A)
t(Ac)
Conj(t(A))
t(Ac)-Conj(t(A))
B<-matrix(complex(real = rnorm(n*m), imaginary = rnorm(n*m)),ncol=n)
Conj(A%*%t(B))
Conj(A)%*%Conj(t(B))
Conj(A%*%t(B))-Conj(A)%*%Conj(t(B))
# A^* はt(Conj(A))
t(Conj(A%*%t(B)))-t(Conj(t(B)))%*%t(Conj(A))
  • Hermite行列とユニタリー行列
    • H^*=Hであるような(n次)正方行列を(n次)Hermite行列という
    • TT^*=1_nであるようなn次ユニタリー行列という
  • 定理2.1. n次Hermite行列Hに対してn次ユニタリー行列Tとn個の実数\lambda_iを取ってTHT^{-1}=diag[\lambda_1,\lambda_2,...,\lambda_n]とすることができる。この\lambda_iの集合(取り方)はTの取り方によらずHに対して定まる
    • この\lambdaのセットは固有値全体である
    • 複素数正方行列Aを用いてH=A^*Aとすると(大概の場合)HはHermite行列になり、それを固有値分解してH=T^*diag[\lambda_i]Tとすることで\lambda_i > 0であり、Tはユニタリー行列(T^*T=I_nである
n<-5
A<-matrix(complex(real = rdirichlet(1,rep(1,n^2)), imaginary = rdirichlet(1,rep(1,n^2))),ncol=n)

AA<-t(Conj(A))%*%A
e.out<-eigen(AA)
e.out[[2]]%*%diag(e.out[[1]])%*%t(Conj(e.out[[2]]))-AA

La<-e.out[[1]]
B<-e.out[[2]]
BB<-t(Conj(B))%*%B
Lb<-eigen(BB)[[1]]

Lb
  • 定理2.2. n次Hermite行列Hが正値定符号(positive definite)であるためにはHの固有値がすべて正であることが必要かつ十分である。ただし、正値定符号であるとは、x \neq 0であるようなn次元複素成分タテベクトルについてx^*Hx=\sum_{i=1}^n \sum_{j=1}^n h_{ij}\bar{x_i}x_jが常に正であることを言う。ここでx^*HxをHermite形式と呼ぶ
  • 定理2.3. n次正値定符号Hermite行列の全体をP_nとすると、Hとその正の整数乗H^mP_nの要素であってHH^mとは1対1対応する(mが正の整数でなくてもよさそうだが…まだ、行列の正のs整数乗以外の話が出てきていないので、ここでは正の整数にしているのだろうか)
  • 定理2.4. 一般線形群に属するA(A\in GL_n(\mathbf{C}))は、任意のn次正値定符号Hermite行列Hに対してA^*HA\in P_n
  • 定理2.5. n次正値定符号Hermite行列H=(h_{ij})\in P_nに対して、常にdet{H} \le \prod_{i}^n h_{ii}
  • 定理2.6. n次正方行列A=[a_{ij}]\in M_n(\mathbf{C})ならば、常に(det{A})^2 \le \prod_{j}^n \sum_{i=1}^n |a_{ij}|^2
    • n次元平行体の体積は、全ベクトルが相互に直交するときに最大となることを(も)示している
  • 線形代数群・環・体
    • 群Gの部分集合AとGの要素xについて、xA=\{xa | a \in A\}とし、Ax,xAyなども同様に定める
    • 群G,G'がありGからG'への写像\phiがあり、x,y\in Gに対して\phi(xy)=\phi(x)\phi(y)であるとき、\phiをGからG'への準同型写像(homomorphism)と呼ぶ
    • \phiがG'の単位元へと移すGの元を\phiカーネルと言う。Ker(\psi)=\{x \in G | \psi(x) = e'\}
    • \phiカーネルはGの部分群となる。
    • Ker(\phi)=\{1\}ならば、\phiはGからG'への同型写像(isomorphism)と言い、Gは\phiによってG'と同型であると言う
    • Hermite行列の集合は一般線形群の部分群で、ユニタリー行列の集合は特殊線形群の部分群
    • 行列操作は、ある形の行列をある形の行列に変化させる。その「移し具合」の特徴表現として、準同型・同型、正規部分・部分などが用いられる
H^*=H
TT^*=1_n
THT^{-1}=diag\[\lambda_1,\lambda_2,...,\lambda_n\]
x^*Hx=\sum_{i=1}^n \sum_{j=1}^n h_{ij}\bar{x_i}x_j
A\in GL_n(\mathbf{C})
det{H} \le \prod_{i}^n h_{ii}
  • ランダムに複素正方行列を作成して、上述の定理が満足されていることを確認してみる
library(MCMCpack)
n<-3 # 次数
Niter<-100 # 繰り返し回数
dets<-rep(0,Niter) # determinantを格納
dets2<-rep(1,Niter) # \prod_{j=1}^n \sum_{i=1}^n |a_{ij}|^2
# 複素正方行列Aにつき,A*Aが正値定符号であることを確認
# ただし、固有値がすべて正であることを持ってその判断とする
seichiteihugou<-rep(TRUE,Niter)
for(i in 1:Niter){
	A<-matrix(complex(real = rdirichlet(1,rep(1,n^2)), imaginary = rdirichlet(1,rep(1,n^2))),ncol=n)
# 固有値の積がdeterminant
	eigen.out<-eigen(t(Conj(A))%*%A)
	print(eigen.out[[1]])
	seichiteihugou[i]<-prod(eigen.out[[1]]>0)
	dets[i]<-prod(eigen(A)[[1]])
	dets2[i]<-prod(apply(abs(A)^2,2,sum))
}
plot(dets2-abs(dets)^2)
# Hermite形式(が実数になり)正であることの確認
herm<-rep(0,Niter)
AA<-t(Conj(A))%*%A
for(i in 1:Niter){
	x<-c(rdirichlet(1,rep(1,n)))
	herm[i]<-t(Conj(x))%*%AA %*%x
}
range(sort(Re(herm)))

駆け足で読む『数学をいかに使うか』

数学をいかに使うか (ちくま学芸文庫)

数学をいかに使うか (ちくま学芸文庫)

  • ここで「駆け足で読む」ことの目標
    • どんな要素が「使うための数学」として取り上げられているかを俯瞰する
    • てふの書き方を網羅的に確認する
  • 数学的表現・数式を眺めずに「読み書きする」ことについて
    • 数学的表現・数式は、「文字列」のようでもあり「絵」のようでもあります
    • 大切なのは、それを「読める」こと、「書ける」こと
    • ここで言う、「読める」、「書ける」とは、ある表現・式を見たときに「口に出して読める」、「手書きで・TeXを用いて書ける」ということ
    • 「絵」として眺めると「どこから読む」かが定まらず、「全部を読んだ」かどうかが不明です
    • 「口に出して読む」、「書く」という作業をすると、以下2点が担保されます。それが大事です
      • 表現・式のすべてを網羅する
      • 「すべて」に順番がつく
  • この本の特徴
    • いろいろとつながりのある概念を説明する
    • 説明するにあたって、その概念が登場した経緯などが重要な場合もあるが、その点はゼロベースで査定しなおして、「現在」の視点で眺めたときに、何を取り上げ、何を取り上げないか、順番はどうするか、について心を砕いて書きたいと願って書いてある
  • この本『数学をいかに使うか』の主張が6章に書かれているので引用する
    • 『「…は…である」というよく知られた定理がある。私はこれは(中略でも)教室では、この言明を説明するだけでよく、証明してみせる必要はまったくないと思う。そんな証明はどんな教科書にもあって、それがわかる人はそれを読めばよい。それをわからない人がどれだけの割合であるかはともかくとして、その証明の論理はそれほど難しくないが退屈である(引用者 注。「まさにその通り」)。そんなことに時間を費やすよりは外積代数、微分形式、外微分などの易しい場合の使い方を教えた方がよい。「すべて厳密に」などとは絶対考えてはいけない。限られた時間で有向に数学の使い方を教えるには実際的であることが必要である』
  • 線形代数微積分の初歩に続くもの
  • 目次

6. 複素解析、特に楕円関数 駆け足で読む『数学をいかに使うか』

  • 駆け足で読む『数学をいかに使うか』の目次はこちら
  • この本『数学をいかに使うか』の主張がこの章に書かれているので再度、引用する
    • 『「…は…である」というよく知られた定理がある。私はこれは(中略でも)教室では、この言明を説明するだけでよく、証明してみせる必要はまったくないと思う。そんな証明はどんな教科書にもあって、それがわかる人はそれを読めばよい。それをわからない人がどれだけの割合であるかはともかくとして、その証明の論理はそれほど難しくないが退屈である(引用者 注。「まさにその通り」)。そんなことに時間を費やすよりは外積代数、微分形式、外微分などの易しい場合の使い方を教えた方がよい。「すべて厳密に」などとは絶対考えてはいけない。限られた時間で有向に数学の使い方を教えるには実際的であることが必要である』
  • 複素関数論はどうして必要になったか
    • ガウス、アーベル、ヤコビ以来の楕円関数やその延長上にある代数関数論、または線形微分方程式についてのガウスやリーマンの研究を、正確にして、よりよく理解するために展開されたと見ることができる』
    • 『実際、リーマン面は楕円関数や代数関数が定義される"場"として導入された』
  • 円が対象になるのは自然なこと。円を扱うことに便利な関数が三角関数。それを一般化していく過程で楕円積分。変数を実数から複素数にすることのよさが挿入される。偏微分微分形式も使われる。楕円積分の性質を見ていくと、二重周期関数。到達した先(二重周期関数)そのものを対象と見ることで、視点が変わる。そして楕円関数。
  • 複素関数が開く楕円関数は、その他の特殊関数(ガンマ関数など)の一つ。その楕円関数とそれと関連するテータ関数に関する話が、次章の中間まで続く
  • 楕円関数は\mathbf{C}の中の格子\mathbf{L}を周期とする関数

0. 記号、特に行列について 駆け足で読む『数学をいかに使うか』

">|tex|"と"||<"とで囲む
  • 集合とその元
    • x \in A:xはAの要素
    • A \cup B:AとBとの結び
    • A \cap B:AとBの交わり
    • A \subset B:AはBの部分集合
x \in A
A \cup B
A \cap B
A \subset B
    • Rではsetsパッケージ
library(sets)
A<-set("x","y","z")
B<-set("x","w")
is.element("x",A)
set_union(A,B)
set_intersection(A,B)
C<-set("x","z")
C<A
    • \mathbf{Z},\mathbf{Q},\mathbf{R},\mathbf{C}
    • 整数全体の集合、有理数全体の集合、実数全体の集合、複素数全体の集合
\mathbf{Z},\mathbf{Q},\mathbf{R},\mathbf{C}
  • 数の集合
    • \{x \in \mathbf{R} | -6 \le x <2\}
      • 6以上2未満の実数の集合
    • \{z \in \mathbf{C} | 3z^2+6z=1\}
    • \{x \in \mathbf{R} | x^2 = -7\}=\phi
\{x \in \mathbf{R} | -6 \le x <2\}
\{z \in \mathbf{C} | 3z^2+6z=1\}
\{x \in \mathbf{R} | x^2 = -7\}=\phi
examples(complex)
  • 行列
    • n \times m行列(nm列行列)
    •  A= [a_{i,j}]_{i=1,...,n;j=1,...,m} = \begin{pmatrix} a_{i,j} \end{pmatrix} = \begin{pmatrix} a_{1,1} & a_{1,2}  & ... & a_{1,m} \\ a_{2,1} & a_{2,2}  & ... & a_{2,m} \\ \\ ... & ...  & a_{i,j} & ... \\ a_{n,1} & a_{n,2}  & ... & a_{n,m} \end{pmatrix}
    • 転置行列 ^tA=\begin{pmatrix}a^t_{i,j} \end{pmatrix}
      • a^t_{i,j} = a_{j,i}なるm \times n行列
      • ^t(AB)=^tB ^tA
    • 正方行列はn \times n行列
    • det(AB)=det(A)det(B)
    • tr(A+B)=tr(A)+tr(B)
n \times m
A= \[a_{i,j}\]_{i=1,...,n;j=1,...,m} = \begin{pmatrix} a_{i,j} \end{pmatrix} = \begin{pmatrix} a_{1,1} & a_{1,2}  & ... & a_{1,m} \\ a_{2,1} & a_{2,2}  & ... & a_{2,m} \\ \\ ... & ...  & a_{i,j} & ... \\ a_{n,1} & a_{n,2}  & ... & a_{n,m} \end{pmatrix}  
^tA=\begin{pmatrix}a^t_{i,j} \end{pmatrix}
a^t_{i,j} = a_{j,i}
^t(AB)=^tB ^tA
det(A)
det(AB)=det(A)det(B)
tr(A+B)=tr(A)+tr(B)
    • Rでは
n<-3
m<-4
elems<-1:(n*m)
A<-matrix(elems,ncol=3)
tA<-t(A)
print(A)
print(tA)
B<-matrix(sample(elems),ncol=m)
AB<-A%*%B
t(AB)-t(B)%*%t(A)
# 正方行列
A<-matrix(1:(n^2),ncol=n)
B<-matrix(sample(1:(n^2)),ncol=n)
print(A)
print(B)
print(AB)
det(AB)
det(A)*det(B)
# traceは対角成分の和
sum(diag(A+B))
sum(diag(A))+sum(diag(B))
  • (代数的構造)
    • 体と\mathbf{Z},\mathbf{Q},\mathbf{R},\mathbf{C}
      • 加減乗除ができる(数の)集合が体
      • \mathbf{Z},\mathbf{Q},\mathbf{R},\mathbf{C}のうち\mathbf{Z}は除(割り算)をすると答えが\mathbf{Z}に含まれないことがあるので体ではない。それ以外は体
    • 全行列環
      • Fをとる(Fとして体である\mathbf{Q},\mathbf{R},\mathbf{C}のうちのどれか一つを採用する)
      • Fの元を成分とするn\times n正方行列をM_n(F)と書き、F上のn次の全行列環と呼ぶ
      • M_n(F)加減乗除のうち除を除く3演算ができる
      • M_n(F)の要素Adet(A) \neq 0であるときAB=1_n,CA=1_nとなるようなB\in M_n(F),C \in M_n(F)が存在して、B=Cである。ただし1_nn\times n単位行列
      • このようなB,CA逆行列と呼んでA^{-1}と書く
      • A^{-1}を掛け算することはAで割り算することに対応するから、det(A)であるM_n(F)の要素をすべて取り出してやると、それらは加減乗除のすべてができることになる
      • GL_n(F)=\{X \in M_n(F) | det(X) \neq 0 \}においてX,Y\in M_n(F) \Longrightarrow XY \in GL_n(F), X^{-1} \in GL_n(F)であり1_n \in GL_n(F)である
      • これをn次の一般線形群(general linear group of degree n over F)と言う
      • 特に、det(X)=1に限定したSL_n(F)=\{X \in M_n(F) | det(X) =1 \}SL_n(F) \subset GL_n(F)であって、n次の特殊線形群(special linear group of degree n over F)と言う
    • 正方行列を対角に並べたもの
      • r個の正方行列X_iを対角線上に並べたものをX=diag[X_1,X_2,...,X_r]と書くことにする。X_iの次数がn_iのときXの次数は\sum_{i=1}^r n_iである
M_n(F)
det(A) \neq 0
AB=1_n,CA=1_n
B\in M_n(F),C \in M_n(F)
A^{-1}
GL_n(F)=\{X \in M_n(F) | det(X) \neq 0 \}
X,Y\in M_n(F) \Longrightarrow XY \in GL_n(F), X^{-1} \in GL_n(F)
1_n \in GL_n(F)
SL_n(F)=\{X \in M_n(F) | det(X) =1 \}
SL_n(F) \subset GL_n(F)
X=diag\[X_1,X_2,...,X_r\]

7. テータ関数と保型関数 駆け足で読む『数学をいかに使うか』

  • 駆け足で読む『数学をいかに使うか』の目次はこちら
  • 正則でない楕円関数を正則な関数の積で表すやりかたとしてヤコビのテータ関数が登場
  • 本の流れとしては、複素関数によって説明される楕円関数とその関連関数としてのテータ関数、そしてモジュラー関数の説明がこの章の前半
  • ついで、その他の複素関数から続く関数論の特殊関数へと展開される
  • 「○○なときにfを\Gammaに関するモジュラー関数と言う」
  • 「○○なときに、××を満足するようなfを\Gammaに関する保型関数と言う
    • 両者の違いは、前者が離散(整数係数)、後者が連続(実数(複素数?)係数)
  • 特殊関数の説明には、群論の説明が付随して、解析と代数とが並走した書き方になっている

8. リーマンのテータ関数とデテキントの 駆け足で読む『数学をいかに使うか』

  • 駆け足で読む『数学をいかに使うか』の目次はこちら
  • 楕円関数は\mathbf{C}の中の格子\mathbf{L}を周期とする関数
  • これを\mathbf{C}^nの中の格子にするとリーマンのテータ関数
  • これに関連して「半整数」が出てくる

9. ルベーグ積分とフーリエ解析 駆け足で読む『数学をいかに使うか』

  • 駆け足で読む『数学をいかに使うか』の目次はこちら
  • もっとも一般的なところから話を始める
    • 実1次元空間でもなく
    • 実n次空間でもなく
    • 一般の測度空間で
  • ルベーグ積分のおかげでフーリエ解析の理論が簡単になったという
    • n次元格子とその格子を用いた周期性と関係するらしい(が詳細はわからない)
    • フーリエ変換はユニタリ作用素
    • 実数空間の中の整数格子は代数的にとらえることもできて、それともつながる
    • 格子〜離散〜ポアソンというつながりもある

10. フーリエ変換からメタプレクティック群へ 駆け足で読む『数学をいかに使うか』

  • 駆け足で読む『数学をいかに使うか』の目次はこちら
  • 斜交群(シンプレクティック群)(Wiki)
  • フーリエ変換から、斜交行列(Wiki)が出て、それが表している斜交群が出てくる
  • 理由はないけれど、シンプレククティック幾何・シンプレクティック多様体の生物学応用(が何かしらされているらしい)は面白うそうである
  • メタプレクティックというのは
    • "In differential geometry, a metaplectic structure is the symplectic analog of spin structure on orientable Riemannian manifolds."(Wiki)と説明されるが、これも。

3. ベクトル積から外積代数まで 駆け足で読む『数学をいかに使うか』

  • 駆け足で読む『数学をいかに使うか』の目次はこちら
  • 3次元ベクトル空間\mathbf{R}^3でのベクトル積(外積)は、a=(a_1,a_2,a_3),b=(b_1,b_2,b_3)に対して、a \times b = (|\begin{pmatrix} a_2 & a_3 \\ b_2 & b_3 \end{pmatrix}|,|\begin{pmatrix} a_3 & a_1 \\ b_3 & b_1 \end{pmatrix}|,|\begin{pmatrix} a_1 & a_2 \\ b_1 & b_2 \end{pmatrix}|) という\mathbf{R}^3のベクトル。
  • 他方、内積は[tex:=\sum_{i=1}^3 a_i b_i]
  • 内積の定義はn次元においてもそのまま通用するが、ベクトル積はそうはなっていない。その理由を含めて考えると、ベクトル積・外積代数というものが出てくる。それを以下に示す
  • n次元のベクトル積
    • n次元空間ベクトルがn-1個あったとき、そのベクトル積は、n次元ベクトルになる
    • 今、n-1個のベクトルをx_2,x_3,...,x_nとし、もう一つn次元ベクトルx_1を置く
    • x_1,...,x_nを行ベクトルとする行列Xを考えると、そのDeterminant(det(X))が算出できる
    • x_2,...,x_nのベクトル積はn次元ベクトルvであって、x_1vとの内積はXのDeterminantである([tex:=det(X)])という関係にある
  • それをRで書くと次のようになる
library(MCMCpack)
# 複素数行列のDeterminantの計算用関数
detComplex<-function(M){
	e.out<-eigen(M)
	prod(e.out[[1]])
}
# 外積計算用関数
ExteriorProduct<-function(V){
	ret<-rep(0,length(V[1,]))
	for(i in 1:length(ret)){
		ret[i]<-(-1)^(i+1)*detComplex(V[,-i])
	}
	ret
}
# 例えばn=7次でやってみる
n<-7
# 適当に複素数を要素とする正方行列を作る
X<-matrix(complex(real = rdirichlet(1,rep(1,n^2)), imaginary = rdirichlet(1,rep(1,n^2))),ncol=n)
# Hermite化する
X<-t(Conj(X))%*%X
# Determinantを計算する
detX<-detComplex(X)
detX
# n個のベクトルから適当にn-1個を選ぶ
s<-sample(1:n,(n-1))
# 選ばれたn-1個のベクトルについて外積を計算する
ep<-ExteriorProduct(X[s,])
# 外積は長さnのベクトルである
ep
# 選ばれなかったベクトルと、選ばれたn-1個のベクトルの外積との内積を計算すると
# 選ばれなかったベクトルと選ばれたベクトルとが作る行列のDeterminantになっていることが以下の計算でわかる
sum(X[-s,]*ep)
detComplex(X)
sum(X[-s,]*ep)-detComplex(X)
  • 長さnのベクトルn-1本から、長さnのベクトルが1本できた。これは、n次元空間をVとしてV^{n-1}からVへと写したもの
  • ベクトル積を一般次元に拡張する
  • ベクトル積はn次元ベクトルがn-1本集まったときに定義できた
  • n次元ベクトルがr([tex:r
  • それは、n-1個のベクトルが作る(n-1)\times n行列からn-2列を取り出したもの(n-1通りある)が作る(n-1)\times (n-1)行列のDeterminantに正負を考慮したものになっている
  • このベクトル積様なものの個数は、「組み合わせ」で決まるので、べき集合の要素数(n次元ベクトルn本に対して考えれば、2^n)になる
  • この2^n個の要素たちは「代数」的に完結するので、以下のように「外積代数」としてまとめられる(参考→こちら)
  • 外積代数はベクトル解析につながっている
    • 外積・微分形式・外微分…時空間軌道の解析から始まった「曲線」「曲面」「多様体」に関する話題の一端であるこの記事につながる
    • この先に関する若干の補足はこちら
  • 外積代数を用いて、微分形式・外微分などを用いることで積分に関する以下の公式がわかりやすくなる
  • Gauss-Stokesの公式(こちら)、「ベクトル場の回転を曲面上で面積分したものが、元のベクトル場を曲面の境界で線積分したものに一致する」
    • \int_{\partial S} \omega = \int_S d\omega
\int_{\partial S} \omega = \int_S d\omega
  • 自分なりに外積代数・微分形式・外微分・Gauss-Stokesの公式を書いてみる
    • n次元空間には、n個の線形独立なベクトルがおける。簡単に考えるなら、n本のベクトルからなる正規直交基底を考える
    • 外積代数
      • 外積代数では、1,2,...,nを要素とする集合のべき集合の要素である部分集合に対応したものを考える
      • そのような要素は2^n個ある
      • この2^n個は、部分集合であるが、部分集合としての要素数が、0,1,2,...,nのいずれかであって、それぞれの要素数は\begin{pmatrix} n \\ i \end{pmatrix};r=0,1,...nとなっている
      • それらは符号の取り方の工夫をすることで、あるルールづけがなされている
    • 微分形式
      • 外積代数では「単位ベクトル」を考えたが、こちらは微分なので、「微小ベクトル」を考える。微小ベクトルだが、方向については、「単位ベクトル」をそのままひきつぐ
      • 外積代数と同様に2^n種類あるそれぞれに、関数がある
        • f_{i}^r(x);r=0,1,...,n;i=1,2,...,\begin{pmatrix}n \\ r \end{pmatrix}
      • 外積代数では、対応する部分集合の要素数で0,1,...,n通りに分類できたが、この要素数rごとにw^r=\sum_{i=1}^{\begin{pmatrix}n \\ r \end{pmatrix}} f_{i}^r (x) G_i^rのようにG_i^r(部分集合として要素数rの外積代数の一つ)に関して足し合わせたものをr次の微分形式と呼ぶ
    • 外微分
      • r次の微分形式w^rの外微分dw^rを次のように定義する
      • dw^r=\sum_{i=1}^{\begin{pmatrix}n \\ r \end{pmatrix}} df_i^r G_i^r
      • ここで外積代数G_i^rの交代性が功を奏して、ぱたぱたと項が消える
    • Gauss-Stokesの公式
      • \int_{\partial S} \omega = \int_S d\omegawdwはこのようにして定めた微分形式と外微分であって、この表現法を使うと、r次の微分形式を境界に関して積分したものと、その外微分を領域全体について積分したものとが一致する、ということが導ける
      • これは、空間が1次元のときには、外微分を領域(ここからここまで)について積分したものと、微分形式を境界(1次元線分の境界は2点)について向き・正負に注意して積分したものに一致することに対応する
        • f(b)-f(a)=\int_a^b f'(x)dx
  • 外積代数の計算をRでやってみる
    • 次元nのとき、要素数は、nからi個を取り出して、その順列になる(それ以外は、0になる)から、\sum_{i=0}^n \begin{pmatrix} n \\ i \end{pmatrix} \times i!。それらが、2^nの基本要素で張られる
    • 以下のソースではelemListが基本要素、allElemがすべての要素。MはallElemの演算結果を基本要素数の長さのベクトルで表している。またM2は、基本要素のどれに相当するかを符号つきで表している
# 次元
n<-3
s<-1:n
# 順列・置換に関して、その符号を計算するには、置換を表す行列のdeterminantが使える
s2<-sample(s)
M<-diag(rep(1,n))[s2,]
det(M)
# それを使って、演算を、要素の組(集合)と符号とで表すことにする
# その関数
SignaturePermutation<-function(s){
	n<-length(s)
	sig<-1
	if(n>1){
		s2<-order(s)
		M<-diag(rep(1,n))[s2,]
		sig<-det(M)
	}
	list(set=as.set(s),sign=sig)

}
# 二つの要素を演算処理するとき、要素の重複があれば0になるので、それをする関数を作る
a<-sample(s,sample(0:n))
a
SignaturePermutation(a)
a2<-sample(s,sample(0:n))
a2
SignaturePermutation(a2)


Zerocheck<-function(s1,s2){
	ret<-TRUE
	if(length(set_intersection(as.set(s1),as.set(s2)))==0){
		ret<-FALSE
	}
	ret
}
Zerocheck(a,a2)


# 集合のパッケージ
library(sets)
library(gtools)
t<-as.set(s)
# 冪集合を作る
# これは、基本要素のセットとなる
pow.t<-set_power(t)

# 2^n個の基本要素をリストにする
# ID、要素数の等しいものごとに束ねたときの束内ID、集合
elemList<-list()
cnt<-1
numcnt<-1
cntINnumcnt<-1
currentn<-0
elemList[[1]]<-list()
for(i in pow.t){
	n<-length(i)
	print(n)
	print(i)
	if(n>currentn){
		cntINnumcnt<-1
		numcnt<-numcnt+1
		currentn<-n
		elemList[[numcnt]]<-list()
	}
	elemList[[numcnt]][[cntINnumcnt]]<-list(id=cnt,id2=cntINnumcnt,set=i,n=length(i))
	cntINnumcnt<-cntINnumcnt+1
	cnt<-cnt+1
}

# 演算順を自由にした、すべてについての情報をリストにする
allElem<-list()
cnt<-1
v<-c()
tmp<-SignaturePermutation(v)
allElem[[cnt]]<-list(id=cnt,v=v,set=tmp$set,sign=tmp$sign)
cnt<-cnt+1
for(i in 1:n){
	tmpperm<-permutations(n,i)
	for(j in 1:length(tmpperm[,1])){
		v<-tmpperm[j,]
		tmp<-SignaturePermutation(v)
		allElem[[cnt]]<-list(id=cnt,v=v,set=tmp$set,sign=tmp$sign)
		cnt<-cnt+1
	}
}
allElem

N<-length(allElem)

M<-array(0,c(N,N,2^n))
M2<-matrix(0,N,N)
for(i in 1:N){
	for(j in 1:N){
		vi<-allElem[[i]]$v
		vj<-allElem[[j]]$v
		#if(!(length(vi)==0 & length(vj)==0)){
			if(!Zerocheck(vi,vj)){
				tmpv<-c(vi,vj)
				tmpout<-SignaturePermutation(tmpv)
				print(tmpv)
				tmplen<-length(tmpv)
				for(k in 1:length(elemList[[tmplen+1]])){
					if(tmpout$set==elemList[[tmplen+1]][[k]]$set){
						print(elemList[[tmplen+1]][[k]])
						print(M[i,j,])
						M[i,j,elemList[[tmplen+1]][[k]]$id]<-tmpout$sign
						M2[i,j]<-elemList[[tmplen+1]][[k]]$id*tmpout$sign
						print(M[i,j,])
					}
				}
			}
		#}
	}
}
M2
    • n=3の場合
> M2
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15] [,16]
 [1,]    0    2    3    4    5    6   -5    7   -6    -7     8    -8    -8     8     8    -8
 [2,]    2    0    5    6    0    0    0    8    0    -8     0     0     0     0     0     0
 [3,]    3   -5    0    7    0   -8    0    0    8     0     0     0     0     0     0     0
 [4,]    4   -6   -7    0    8    0   -8    0    0     0     0     0     0     0     0     0
 [5,]    5    0    0    8    0    0    0    0    0     0     0     0     0     0     0     0
 [6,]    6    0   -8    0    0    0    0    0    0     0     0     0     0     0     0     0
 [7,]   -5    0    0   -8    0    0    0    0    0     0     0     0     0     0     0     0
 [8,]    7    8    0    0    0    0    0    0    0     0     0     0     0     0     0     0
 [9,]   -6    0    8    0    0    0    0    0    0     0     0     0     0     0     0     0
[10,]   -7   -8    0    0    0    0    0    0    0     0     0     0     0     0     0     0
[11,]    8    0    0    0    0    0    0    0    0     0     0     0     0     0     0     0
[12,]   -8    0    0    0    0    0    0    0    0     0     0     0     0     0     0     0
[13,]   -8    0    0    0    0    0    0    0    0     0     0     0     0     0     0     0
[14,]    8    0    0    0    0    0    0    0    0     0     0     0     0     0     0     0
[15,]    8    0    0    0    0    0    0    0    0     0     0     0     0     0     0     0
[16,]   -8    0    0    0    0    0    0    0    0     0     0     0     0     0     0     0

11. 代数で何を教えるべきか 駆け足で読む『数学をいかに使うか』

  • 駆け足で読む『数学をいかに使うか』の目次はこちら
  • (代数に限らず)成立過程で重要なことと、成立したり発展したりした後で重要なことは異なる。より見晴らしのよいところから、取捨選択して教える内容も定義するのが適当(実験して論文にするのも同じ)

1. 線形代数の使い方 駆け足で読む『数学をいかに使うか』

  • 駆け足で読む『数学をいかに使うか』の目次はこちら
  • 線形空間
  • 線形写像で次のものを考える
  • 多項式多項式環(こちら)について用いる
    • Ker(T)=\{0\}であるということは、x,y\in VについてTx=Ty \Longleftrightarrow x=y
  • 定理1.1.
    • 0 \le n \in \mathbf{Z}としてn+1個の互いに相違なる実数y_0,y_1,...,y_nを与え、そのほかにn+1個の実数b_0,b_1,...,b_nを取る。b_0,b_1,...,b_nの中には同じものがあってよい。このときn次以下の実数係数の多項式f(x)で、\forall i =0,1,...,n, f(y_i)=b_iとなるものがただ一つ存在する
    • これを証明するのに、多項式f\in Vに対してT(f)=(f(y_0),f(y_1),...,f(y_n))と置けば、TはVからWへの線形写像であるが、Ker(T)=\{0\}を示すであることが示せるので、それをもってする
    • これにより、複数の点を通る多項式を見つけることができる(多項式補完→こちら)
    • Rでは多項式のパッケージpolynomを使って、多項式補完することができる
library(polynom)
# y=0を通る点を指定
n<-5
xs<-sample(0:100,n)
pc.out<-poly.calc(xs)
summary(pc.out)
plot(pc.out)
abline(h=0,col=2)
abline(v=xs,col=3)
# (x,y)点を指定
xs<-sample(0:10,n)
ys<-sample(0:10,n)

pc.out2<-poly.calc(xs,ys)
plot(pc.out2)
abline(h=ys,col=2)
abline(v=xs,col=3)

  • 定理1.2.
    • 定理1.1. のy_i,b_iのほかにn+1個の実数c_0,c_1,...,c_nを取る。c_0,c_1,...,c_nの中には同じものがあってもよい。このとき、\forall i =0,1,...,n, f(y_i)=b_i,\forall i =0,1,...,n, f'(y_i)=c_iとなる2n+1次以下の実係数の多項式fがただ一つ存在する。ただし、f'(x)f導関数である
    • これを証明するには、T(f)=(f(y_0),...,f(y_n),f'(y_0),...,f'(y_n))を定めた上で、Ker(T)=\{0\}を示せばよい
    • 多項式補完の延長で言えば、複数の点を通り、かつその点での微分(差分?)を満足する多項式を見つけることができることになる
  • これらは、線形写像を行列で考えるとき、行列式が非0であることに引き写すこともできる(こちら)
Ker(T)=\{x\in T | T(x)=0 \}
T(V)=\{Tx| x \in V\}
dim(T(V))+dim(Ker(T))=dim(V)
Ker(T)=\{0\} \Longleftrightarrow T(V) = W
# 4x+3y+z=2
# 3x+2y-3z=5
# x-3y-2z=-2
a <- matrix(c(4,3,1,3,2,-3,1,-3,-2), 3,3)       
b <- matrix(c(2,5,-2))                      
solve(a,b)                                  

5. Clifford代数とスピン群 駆け足で読む『数学をいかに使うか』

  • 駆け足で読む『数学をいかに使うか』の目次はこちら
  • n次元線形空間Vに\phi(x,y)=\phi(y,x);x,y\in Vな関係を持たせる
    • Vの2要素の関係を問題にしている(線形であることも、2要素の足し算の話)
    • 要素のペアに関することは、行列で取り扱える
    • 行列で扱えば、\phi(x,y)=\phi(y,x);x,y\in Vは対称行列として現れる
    • Vを張る基ベクトルは次元の数nだけある
    • Vの要素のペアが作る「世界〜環」を張る基ベクトルは2^nになる
    • これは、Vの基ベクトルn個を0からn個、重複なしで選ぶ選び方に相当する
    • 選び方とするのは、交換してもよい\phi(x,y)=\phi(y,x);x,y\in Vから
      • すると、交換してはいけない場合には基ベクトルの数は無限になるということか…
  • このように2^nの基ベクトルを持つ代数がClifford 代数
    • (見方によっては)外積代数はClifford 代数の特別な場合
    • Clifford代数的な考え方とSNPはこちら
  • Clifford代数からClifford群へ話題は移って、そこから直交群(ノルムを変えない線形変換の行列がなす群)や特殊直交群(そのうちdeterminantが+1の方のみ)の話へ進み、いつの間にやら、Hermite行列のこととか、対角成分の\pm 1の話とかになって行ってしまっている
  • 幾何的には、ノルムを変えないということの他に対称性とかn-1次元超平面とかにつながって話が展開している
  • また、「二重被覆」(被覆はこちら)とかでスピン群との関係が登場する