フォン・ノイマン環と射影行列

  • フォン・ノイマンVon Neumann algebra - Wikipediaを勉強していると、射影行列というものが出てくる。
  • その環の要素の説明に射影行列が出てくる。
  • E = EE (=E^2) = E^*であると言う。
    • これは、量子力学では状態の性質(観測すると0または1が得られる。0は存在しない、1は存在する)に対応する作用素。その固有値は0と1
  • 射影行列は線形回帰の文脈でも登場する。Projection matrix - Wikipedia
  • 最小2乗法により、観測値セットを表す点から、モデル部分空間への垂線の足が推測値セットを表す点になることを言っている。
  • WikipediaVon Neumann algebraの記事には、von Neumann algebraとProjectionsとの関連として、"they (projections) are exactly the operators which give an orthogonal projection of H onto some closed subspace."と記載されているように、射影行列は空間を亜空間に直交射影する。
  • 行列を考えているから、この射影は線形射影である。
  • 空間のすべての点が(線形)部分空間に射影されるから、射影行列を構成するベクトルは線形独立ではなく、固有値の中に0が含まれる~行列式は0である。
  • 2x2行列でE = EE (=E^2) = E^*なる行列がどうなるか考えてみる。
    • E=E^**は、共役転置のことなので、2x2行列は\begin{pmatrix} a, b + i c \\ b- ic, d \end{pmatrix},a,b,c,d \in Rのように、対角成分は実数、2つの非対角成分は相互に共役複素数となる。
    • これを書き換えると\begin{pmatrix} a, r e^{it} \\ r e^{-it}, d \end{pmatrix},a,d,r,t \in Rとなる。
    • E = EEという条件から、(\begin{pmatrix} a, r e^{it} \\ r e^{-it}, d \end{pmatrix})^2 = \begin{pmatrix} a^2 + r^2, (a+d)r e^{it} \\(a+d)r e^{-it}, d^2 + r^2 \end{pmatrix} = \begin{pmatrix} a, r e^{it} \\ r e^{-it}, d \end{pmatrix}となる。
    • r=0の場合には、a=d=1となり、E= I(単位行列)となる。
    • r\ne 0の場合には、(a+d)r e^{it} = r e^{it}から、a+d=1が得られる。また、a^2+r^2=aからr = \sqrt{a(1-a)}
      • ただし、a(1-a) > 0 のときはr = \sqrt{a(1-a)} \in Rとなるが、a(1-a) < 0のときは、r = \sqrt{a(1-a)} \in C(純虚数)になっていることに注意
    • したがって、\begin{pmatrix} a, \sqrt{a(1-a)} e^{it}\\ \sqrt{a(1-a)}e^{-it},1-a \end{pmatrix}, a,t \in Rとなる。
    • 固有値は、1と0になっている。
    • 固有値1に対応する固有ベクトルで、かつ、二乗ノルムが1なるベクトルは、e^{i \phi}(\sqrt{a} e^{it},\sqrt{1-a})を二乗ノルムが1になるように補正したベクトル、固有値0に対応する固有ベクトルe^{i \phi}(\sqrt{1-a}e^{it},\sqrt{a})を二乗ノルムが1になるように補正したベクトル
    • 0なる固有値があることが、2次元平面を直線につぶすことを意味し、1なる固有値があることが、固有値1に対応する固有ベクトルが表す直線上の点は動かないことを表しており、その直線と交叉し0なる固有値に対応する固有ベクトル方向の直線は、その交点につぶされることを意味する。
  • この射影行列が次のように分解されるという話がある。E  = u u^*。このとき、E= u u^*F=u^* uとはequivalentという話がある。これを2x2の場合について、a,tでパラメタライズした場合との関係を考えてみる。
    • 2x2複素行列をu = (r_{i,j} e^{i \theta_{i,j}} ), i,j \in \{1,2\}とする。
    • u u^* = \begin{pmatrix} r_{1,1}^2 + r_{1,2}^2, r_{1,1}r_{2,1} e^{i (\theta_{1,1}-\theta_{2,1})} + r_{1,2} r_{2,2} e^{i (\theta_{1,2} -\theta_{2,2})} \\ r_{1,1} r_{2,1} e^{-i (\theta_{1,1}-\theta_{2,1})} + r_{1,2} r_{2,2} e^{-i (\theta_{1,2} - \theta_{2,2})}, r_{2,1}^2 + r_{2,2}^2  \end{pmatrix}
    • u u^* = E = \begin{pmatrix} a, (a(1-a))^{0.5} e^{it} \\ (a(1-a))^{0.5} e^{-i t}, 1-a \end{pmatrix}であるから
    • r_{1,1}^2 + r_{1,2}^2 = a, r_{2,1}^2 + r_{2,2}^2 = 1-a
    •  ||r_{1,1}r_{2,1} e^{i (\theta_{1,1}-\theta_{2,1})} + r_{1,2} r_{2,2} e^{i (\theta_{1,2} -\theta_{2,2})}||^2 = a(1-a)
      • a(1-a) =(r_{1,1}^2 + r_{1,2}^2 )(r_{2,1}^2 + r_{2,2}^2) を右辺に代入して、式変形すると。。。
      • r_{1,1}^2 r_{2,2}^2 + r_{1,2}^2 r_{2,1}^2 - 2 r_{1,1} r_{1,2} r_{2,1} r_{2,2} \cos{\theta_{1,1} - \theta_{1,2}- \theta_{2,1} + \theta_{2,2}} = 0が得られる。さらに変形して
      •  (r_{1,1}r_{2,2} - r_{1,2} r_{2,1})^2 = 2 r_{1,1}r_{1,2}r_{2,1}r_{2,2} (\cos{\theta_{1,1} - \theta_{1,2}- \theta_{2,1} + \theta_{2,2}} - 1)となる。
      • ここから、r_{1,1}r_{2,2} - r_{1,2} r_{2,1} = 0, \theta_{1,1} - \theta_{1,2}- \theta_{2,1} + \theta_{2,2} = 0が得られる。
      • r\thetaとの制約は分離されていて次のような制約にまとめられる。
      • r_{1,2} = \pm (a- r_{1,1})^{0.5}, r_{2,1} = \pm ((1-a)/a)^{0.5} r_{1,1}, r_{2,2} = \frac{r_{1,2} r_{2,1}}{r_{1,1}}
      • \theta_{1,1} - \theta_{1,2}- \theta_{2,1} + \theta_{2,2} = 0
    • 射影行列のことを別の観点から考えてみる
      • 今、ある状態確率ベクトル\psi(複素ベクトルであって、その要素のModの二乗和が1)が存在しているとする。その状態の存否を0,1で判定したくなる
      • | \psi > < \psiなる行列は射影行列になっている。そして、その行列を状態ベクトル\psiに作用すると\psiになる(そして\psiと作用してできた\psiの積の二乗ノルムが1になるという意味で「存否=1」)。また、同じことだが、この射影行列の固有値は1と0で、固有値1に対する固有ベクトル\psiと(位相違いはあるが)同じベクトルになっている(こちらに、量子計算におけるProjectorオペレータの定義が出ている)
v <- runif(3) + 1i * runif(3)
v. <- v/sqrt(sum(Mod(v)^2))
sum(Mod(v.)^2) # 1
v.m <- matrix(v.,ncol=1)
p <- v.m %*% t(Conj(v.m))
eigen(p) -> eigen.out
v.m / eigen.out[[2]][,1]
v.m / eigen.out[[2]][,1] -> a
Mod(a[1])
p %*% v.m -> q
q/v.m
a <- 0.3
t <- 0.2
r <- sqrt(a*(1-a) + 0 * 1i)
M <- matrix(c(a, r * exp(1i * t), r * exp(-1i * t), 1-a),byrow=TRUE,2,2)
M

M %*% M
round(M%*% M - M) # 0

Conj(t(M))
round(Conj(t(M)) - M) # 0
eout <- eigen(M)
round(eout[[1]]) # 固有値は1と0

ev1 <- c((a+0*1i)^0.5 * exp(1i *t),(1-a+0*1i)^0.5)
ev2 <- c(-(1-a+0*1i)^0.5 * exp(1i * t), (a+0*1i)^0.5)

ev1 <- ev1 / sqrt(sum(Mod(ev1)^2))
ev2 <- ev2 / sqrt(sum(Mod(ev2)^2))

sum(Mod(ev1)^2)
sum(Mod(ev2)^2)
sum(Mod(eout[[2]][,1])^2)
sum(Mod(eout[[2]][,2])^2)
eout[[2]][,1]/ev1
Mod(eout[[2]][,1]/ev1)
cbind(ev1,ev2) / eout[[2]]
Mod(cbind(ev1,ev2) /eout[[2]])
> round(M%*% M - M) # 0
     [,1] [,2]
[1,] 0+0i 0+0i
[2,] 0+0i 0+0i
> round(Conj(t(M)) - M) # 0
     [,1] [,2]
[1,] 0+0i 0+0i
[2,] 0+0i 0+0i
> round(eout[[1]]) # 固有値は1と0
[1] 1 0
> sum(Mod(ev1)^2)
[1] 1
> sum(Mod(ev2)^2)
[1] 1
> sum(Mod(eout[[2]][,1])^2)
[1] 1
> sum(Mod(eout[[2]][,2])^2)
[1] 1
> eout[[2]][,1]/ev1
[1] -0.9800666+0.1986693i -0.9800666+0.1986693i
> Mod(eout[[2]][,1]/ev1)
[1] 1 1
> cbind(ev1,ev2) / eout[[2]]
                       ev1                  ev2
[1,] -0.9800666-0.1986693i 0.9800666+0.1986693i
[2,] -0.9800666-0.1986693i 0.9800666+0.1986693i
> Mod(cbind(ev1,ev2) /eout[[2]])
     ev1 ev2
[1,]   1   1
[2,]   1   1
a <- -0.3
t <- 0.2
r <- sqrt(a*(1-a) + 0 * 1i)
M <- matrix(c(a, r * exp(1i * t), r * exp(-1i * t), 1-a),byrow=TRUE,2,2)
M

M %*% M
round(M%*% M - M) # 0

Conj(t(M))
round(Conj(t(M)) - M) # 0
eout <- eigen(M)
round(eout[[1]]) # 固有値は1と0



ev1 <- c((a+0*1i)^0.5 * exp(1i *t),(1-a+0*1i)^0.5)
ev2 <- c(-(1-a+0*1i)^0.5 * exp(1i * t), (a+0*1i)^0.5)

ev1 <- ev1 / sqrt(sum(Mod(ev1)^2))
ev2 <- ev2 / sqrt(sum(Mod(ev2)^2))

sum(Mod(ev1)^2)
sum(Mod(ev2)^2)
sum(Mod(eout[[2]][,1])^2)
sum(Mod(eout[[2]][,2])^2)
eout[[2]][,1]/ev1
Mod(eout[[2]][,1]/ev1)
cbind(ev1,ev2) / eout[[2]]
Mod(cbind(ev1,ev2) /eout[[2]])
> round(M%*% M - M) # 0
     [,1] [,2]
[1,] 0+0i 0+0i
[2,] 0+0i 0+0i
> round(Conj(t(M)) - M) # 0
     [,1] [,2]
[1,] 0+0i 0-1i
[2,] 0-1i 0+0i
> round(eout[[1]]) # 固有値は1と0
[1]  1.000000e+00+0i -2.220446e-16+0i
> sum(Mod(ev1)^2)
[1] 1
> sum(Mod(ev2)^2)
[1] 1
> sum(Mod(eout[[2]][,1])^2)
[1] 1
> sum(Mod(eout[[2]][,2])^2)
[1] 1
> eout[[2]][,1]/ev1
[1] 1+0i 1+0i
> Mod(eout[[2]][,1]/ev1)
[1] 1 1
> cbind(ev1,ev2) / eout[[2]]
      ev1                   ev2
[1,] 1-0i -0.9800666-0.1986693i
[2,] 1+0i -0.9800666-0.1986693i
> Mod(cbind(ev1,ev2) /eout[[2]])
     ev1 ev2
[1,]   1   1
[2,]   1   1
  • p = u u^*の確認
a <- 0.25 + 0 * 1i
r1 <- rep(0.1 + 0 * 1i,4)

r2 <- c((a-r1^2)^0.5,(a-r1^2)^0.5,-(a-r1^2)^0.5,-(a-r1^2)^0.5)
r3 <- c(((1-a)/a)^0.5 * r1,-((1-a)/a)^0.5 * r1,((1-a)/a)^0.5 * r1,-((1-a)/a)^0.5 * r1)
r4 <- r2 * r3 / r1

theta1 <- runif(1)
theta2 <- runif(1)
theta3 <- runif(1)
theta4 <- theta2 + theta3 - theta1

for(i in 1:4){
	u <- matrix(c(r1[i] * exp(1i * theta1), r2[i] * exp(1i * theta2), r3[i] * exp(1i * theta3), r4[i] * exp(1i * theta4)), byrow=TRUE,2,2)

	ustar <- ustar <- t(Conj(u))

	p <- u %*% ustar

	q <- ustar %*% u

	print(p - t(Conj(p))) # 0 : p = p*
	print(round(p %*% p - p)) # 0 : p^2 = p
	print(q - t(Conj(q))) # 0 : q = q*
	print(round(q %*% q - q)) # 0 : q^2 = q

}

ぱらぱらめくる『作用素環の考え方』

  • 作用素環の考え方(PDF)
  • 作用素環とは「ヒルベルト空間全体で定義された有界作用素であって、自己共役演算に関して閉じているような作用素の集合であって、その集合が置かれているバナッハ空間の中で位相的に閉じているもののことである。そしてそれは完備にもなる。この位相的に閉じているというときの位相のとり方で異なる作用素環が作れる。代表例はC*環とフォン・ノイマン環」と言える。そのことが以下の手順で説明されている。
  • 作用素環論は代数でもあるが、関数解析
  • 代数の立場から:「なぜ、作用素の『環』を扱うのか」
    • 数を作用素に置き換えるという量子力学の要請
    • 線形作用素(行列)には、逆元を持たない元がたくさんあるので、「逆元を持たない元を体はただひとつ持つ」とは相容れようがない。。。体的に扱うのは諦めて、環で行くことにする
    • 量子力学に現れる作用素は非有界になりうるが、非有界を扱うと定義域で苦労することになる。それを回避するべく、「ヒルベルト空間全体で定義された有界作用素」に限定して環を考えることにする
  • さらに2つの条件を付けて考えることにする
    • 1つめ:「自己共役」
      • 量子力学では自己共役作用素が観測可能量を表すから、「自己共役性」についてうまくできた環がほしい
      • (自己共役作用素に限定するというのも作戦としてありかもしれないが)そうはせずに、「ヒルベルト空間全体で定義された有界作用素」であって「共役転置演算がうまくいく=無限次元版の共役転置演算で閉じている」ような環とすることにする。これで定まるのが*環
      • *演算を考えることができるためには、ヒルベルト空間が定める内積の存在が本質的
    • 2つめ:「完備性」
      • 関数解析の手法を使うとき、「完備性」を備えていることは重要。そのため、完備性を持った対象の環としたい
      • 完備性を持つということは、近似的に元を作る・定めることを可能にする
      • ヒルベルト空間上の有界作用素作用素環を考えるているとき、「ヒルベルト空間の上の有界線形作用素全体がバナッハ空間をなす」ことになっているので、このバナッハ空間の中で、扱う作用素が適当な位相で閉じているようにすれば、それが完備性を持たせることになるので、条件としては、バナッハ空間の中で位相的に閉じているという条件を付けることに相当する
  • 「完備性」〜「バナッハ空間の中で『適当な位相』で閉じている」
    • 位相のとり方に2種類ある
      • ノルム位相(ヒルベルト空間の単位球上の一様収束が定める位相)からできるのがC*環
      • 強収束の位相(ヒルベルト空間上の各点収束が定める位相)からできるのがフォン・ノイマン
        • 強収束の位相は、ノルム位相より弱い位相。位相が弱っちくても収束できる、ということは、収束するという性質がより強くないと行けないので、フォン・ノイマン環の収束性はC*環の収束性より強くなる。したがって、フォン・ノイマン環はC*環に含まれる
      • しかしながら、フォン・ノイマン環はC*環だとは言うものの、非典型的なC*環なので、C*環とフォン・ノイマン環は2つの別の環として説明することが便利らしい
  • 環と空間
    • 可換環と空間
      • 空間の上に関数を対応させると、その関数たちは環をなす。この環と可換環とが同型であるので、可換環と空間とは同じものと考える。空間より(可換)環のほうが実体と考えることもある
      • 可換C*環:コンパクトハウスドルフ空間上の複素数値連続関数環が対応する
      • 可換フォン・ノイマン環:測度空間上のL^\infty関数環が対応する
    • 可換環と空間
  • 作用素環を扱いやすく制限して考える〜従順性
    • 離散群があると群環を経由して作用素環が作れるという事実がある
    • 離散群はいくらでも変なものが作れることで有名であることからも分かる通り、作用素環にもいくらでも変なものが作れてしまい、分類しにくい〜分類の役に立つような不変量が定まらない
    • 作用素環に条件をつけて不変量が取れるようにするという作戦もあり
      • 実際、非可換幾何のA. コンヌは、解析的に良い条件を仮定した作用素環には、簡単な不変量が完全不変量となることを示した
      • このような条件を満たすことを「従順」と言う
      • 従順なC*環は完全不変量を持つはずで、それによる分類定理を得ようとしているのがElliot program
    • 従順でない作用素環は分類しがたいが、従順でないフォン・ノイマン環について「違う作り方をしたフォン・ノイマン環は本当に違う」というような理解の仕方でそれなりの分類的考え方が導入されている
  • これ以降は、物理っぽいので割愛

自然数から整数を作る、グロタンディーク

整数 - Wikipedia

  • 非可換幾何をやっていると、順序群を整数に対応付ける話が出てくる
  • その際、非負整数から整数を構成する、という話が出てくる
  • このようにして出来上がった、整数と非負整数のペアによって、整数全体の順序が定まるという話がある
  • そんな話が、Wikipedia

グロタンディーク群 - Wikipedia
では「グロタンディーク群(英: Grothendieck group)とは、可換なモノイドから最も普遍的な方法で構成されるアーベル群である」と書かれ、それが"自然数から整数を構成する標準的な方法"の一般化として説明されている

  • 冒頭のリンクのWikipedia記事「整数」の「厳密な構成」で説明されている通り、まず、非負整数(自然数)を用意する
  • これは、加法は閉じているが減法は閉じていない
  • 今、非負整数のペアを考え、(a,b) \sim (c,d)なる同値関係をa+d=b+cで定める
    • 例えば、a=1,b=2,c=2,d=3a+d=1+3=4,b+c=2+2=4なので、(a,b) \sim (c,d)となる
  • こうすると、非負整数の二次元空間のグリッド点(非負整数のペア(x1,x2))について、たとえば、(1,2)という格子点と(2,3)という格子点とを通る直線上の格子点が同一視される
  • y = x + kなる直線が同値類を表す
  • 各同値類の代表グリッド点を(m+1,1),(1,m+1)として取ると、(m+1,1)は正整数、(1,m+1)は負整数のように振る舞う

ペンローズタイリングからの非可換幾何

  • この記事では、ペンローズタイリングを例に、非可換幾何の道具立ての流れをなるべく簡潔に示し、その各ステップを理解するための周辺知識は後回しにすることを目指す
  • ペンローズタイリングは、あるタイプのタイリング(敷き詰め)パターンの集合。幾何学的でとらえどころがない
  • 順次、異なる数学対象に対応付けて行き、特徴を取り出しやすくする(数学対象を切り替えて計算しやすくして特徴づける。この計算しやすい特徴づけ〜同型判定の道具を不変量という(不変量 - Wikipedia)
  • その数学対象の切り替えは以下のようになる
  • ペンローズタイリングパターンを01無限列の同値類に対応付ける。タイリングの集合 → 01無限列同値類の集合
  • 同値類集合という空間を考える代わりに、その上の代数(の構造)を考える。無限次元複素行列であって、ある制約の入ったものがその代数。01無限列同値類の集合 → C*-代数=ある制約を持つ無限次元複素行列集合(無限次元複素行列集合の部分集合であって、C*-代数になっているもの)
  • C*-代数〜制約付き無限次元複素行列集合〜の空間を順序群に対応付ける
    • この対応付けに、K-理論を用いている
    • K-理論は、大きな行列の集合が空間になっているようなときに、その空間を分類(特徴づけ)る理論。より扱いやすい数学対象に対応付ける方法を提供する理論。異なる数学対象に対応付けるものが圏論では「関手」なので、「K-理論は関手の族を構成する」と説明されるK理論 - Wikipedia
  • 順序群は群そのものと、その正錐とのペアで定まる
  • 無限次元複素正方行列の部分集合(C*-代数)が、有限なそれ(有限次元複素正方行列の部分集合)の極限として定められたので、有限な順序群の極限としてとる
    • 無限次元極限を取る操作には、2つの低次元複素正方行列(2つの部分代数)の直和を取るので、極限としての無限次元複素正方行列の部分集合(無限次元C*-代数)は、2つの低次の複素正方行列(2つの部分代数)がそれぞれ対応する順序群の直和として表現される
  • 有限次元の順序群は、群そのものが整数に対応付けられ、正錐が非負整数に対応付けられる
  • 順序群のペアとして構成する順序群は、群そのものに対応する「整数の直和」の「極限」と、「非負整数の直和」の「極限」として特徴づけられる
  • ペンローズタイリングの場合、対応する順序群の群そのものに対応する「整数の直和」の「極限」は「整数の直和」となり、「非負整数の直和」の「極限」は、\{(a,b) \ in \mathcal{Z}^2; (1+\sqrt{5})/2 a + b \ge 0\}になる
    • これはどういうことかというと、2次元格子点(a,b)に、行列\begin{pmatrix}1 1 \\ 1 0 \end{pmatrix}を次々に掛けていくと、(a,b) -> (a1,b1) -> (a2,b2) ...と格子点が推移していく。\begin{pmatrix}1 1 \\ 1 0 \end{pmatrix}固有値黄金比rが現れるのだが、平面上の点(a,b)y = - r xより上にある点はy=1/r x上であって、x>0,y>0の点に収束する。y=-rxより下にある点は、同じ直線のx<0,y<0の点に収束する。その線上の点は、原点に向かって振動しながら収束していく。極限にて\mathcal{Z}^ \oplus \mathcal{Z}^+なる点に収束するようなオリジナルの格子点(a,b)は、y=-rxより上にある格子点であって、これが「極限としての非負整数直和」の条件。ちなみに、原点に「収束する点が、y=-rxの直線上を原点をまたいで振動しながら収束するので、n=1,2,...のいずれにおいても、非負整数直和になるようなオリジナル格子点はもう少し制約が強そうだ。。。その条件が\{(a,b) \in \mathcal{Z}^2 | 0 \le rx + y \le r+1\}なのかとも思ったが違いそうだ。この両側を不等式で挟んだ制約はhttps://www224.math.arizona.edu/~ura-reports/043/McMurdie.Christopher/Final.pdfこのPDFのp22の記載による
  • ペンローズタイリングの集合が、「整数の直和」と\{(a,b) \ in \mathcal{Z}^2; (1+\sqrt{5})/2 a + b \ge 0\}とのペアとしての順序群に対応付けられた
  • この最後の順序群の情報は、ペンローズタイリングの集合を切り換えて得られた数学対象であって、同型判定する能力があり計算が簡単なので、不変量と言える
  • W = \{\mathbf{w} =  (w_0,...,w_\infty) , w_i \in  \{0,1\}\}
    • 0,1で作る無限列の集合
  • K =\{\mathbf{z} = (z_0,...,z_\infty) \in W |  \forall i  z_i  z_{i+1} \in  \{00,01,10\}\}
    • 1の後は必ず0、というルールでできるWの部分集合K
  • R = \{(\mathbf{z},\mathbf{z'}) | \mathbf{z},\mathbf{z'} \in K \exists z_j = z'_j \forall j \ge n\}
    • Kの2要素の同一視ルール
  • X = K/R
    • Rという同一視ルールによるKの商空間がX
  • t, t' \in x \Longleftrightarrow (z^t,z^{t'}) \in R
    • x \in Xは(無限に広がる)ペンローズタイリングの1パターン
    • t \in xペンローズタイリングの1パターンxのタイルの一枚
    • tにはz^tが対応する
    • zが決まると(そのタイルを初期タイルとして)ペンローズタイリングが作れる
    • (z,z') \in Rのとき、別の初期タイルからz'によりペンローズタイリングが作られるが、それは同じタイリングになる
  • A := C*-algebra on X
  • a = (a_{z,z'}) \in M(\mathcal{C})_\infty, a \in A
    • Aの要素aは無限サイズ正方行列表現を持つ。その行列の行は(すべての)z、列は(すべての)z'、要素は(z,z')というペアによって番地指定される
  • \mathbf{\xi} = a(x) \mathbf{\zeta} = \begin{pmatrix} \xi_1 \\ \xi_2 \\ ... \\ \xi_\infty \end{pmatrix} = (\xi_z) = \sum_{z'} a_{z,z'} \zeta_{z'}, \forall \mathbf{\xi},\mathbf{\zeta} \in l^2_{x}
    • aはあるxを決めると、xに含まれる同一視zたちが張る無限次元ヒルベルト空間l^2_{x}のベクトル\mathbf{\zeta}に作用する作用素a(x)となる
    • a(x) \in L(l^2_x), \forall x \in X... ヒルベルト空間上の有界作用素全体がバナッハ空間をなすので、a(x)はl^2(x)というヒルベルト空間を考えたときにL(l^2_x)というバナッハ空間にある、という意味
    • (\lambda a + \mu b)(x) = \lambda a(x) + \mu b(x)
    • (ab)(x) = a(x) b(x)
    • \forall a,b \in A, \lambda,\mu \in \mathcal{C}, x \in X
  • K = K_\infty = \lim_{n \to \infty; \text{projective limit}} K_n
    • K_n =\{\mathbf{z} = (z_0,...,z_n) |  \forall i  z_i  z_{i+1} \in  \{00,01,10\}\}:長さn+1の有限列の集合
    • K_{n+1} \to K_nというprojectionがある
  • 1. いろいろなペンローズタイリングが点として存在する空間Xを作る
  • 2. 空間の上に関数を乗せて、その変化具合を考えるのが常道なのだが、このXは変な空間になっているので、Xに乗せた空間の様子表す関数も変。この関数(空間X上の点xを取る作用素)a,b,がC*-代数Aになっている(a,b \in A)
  • 3. a,b,...\in Aは無限次元正方複素行列の形をしている(複素行列はC*-代数の好例)。ただし、Xの構造・制約を反映して、一定の制約のある行列になっている。行列の行と列とは、Kの要素になっているので、行列の行zと列z’とに対応する要素をa_{z,z'}と書く。i行 j列の成分を使ってm = (m_{i,j})と行列を表すように、zに相当する行、z'に相当する列の成分を使ってa = (a_{z,z'})と書く
  • 4. Aの順序群(K_0(A),K_0^+(A))について考えたい。Aは無限サイズ行列の代数だが、それを考えるにあたって、有限版を構成し、その極限を考えるのだが、行列サイズを大きくするときに、z,z'の長さを1ずつ大きくすると、行列サイズがフィボナッチ数列的に大きくなる。今、有限長で考えると、Aの有限サイズ版A_nのサイズはfib_{n+2} \times fib_{n+2} = (fib_{n+1}+fib_{n}) \times (fib_{n+1} + fib_{n}); fib_0=1,fib_1=1となる。そして、それは、M(C)_{fib_{n+1}} \oplus M(C)_{fib_{n}}のように、2つの正方行列の直和の形(2つの正方行列を対角に並べたブロック対角行列)になる。これは、ある有限サイズのC*-代数A_nが2つの行列代数の直和になっていることを意味する
  • 5. C*-代数Aには不変量を計算することができて、色々な定義の分類を適用することができる。その不変量計算のやり方に、G. Elliottの方法があり、そこではAに順序群を見出して不変量を得る。この順序群をK_0(A)と書く。不変量を使うのがK-理論の基本的アプローチであるが、そのK-理論の道具がこのK_0(A)である。ここにvon Neumann環と射影作用素・射影行列が絡む
  • 6. 順序群は(Z,Z^+)という群Zとその部分群Z^+とのペアとして「順序構造を強調して」表現できる。Z^+とは、Zの要素のうち、非負に相当する要素の部分集合のことである。この部分集合を正錐という。この表現にならって(K_0(A),K_0^+(A))がAからできる順序群をその順序構造を強調した記載法である
  • 7. 順序群を考えるときには、Aの要素ペアに順序が定まる必要がある。2つの正方行列に順序を入れるときにProjection(射影行列)が登場する
  • 8. 代数A_nは2つの行列代数の直和になっているが、それぞれの行列代数は順序群になっているので、それぞれの行列代数を整数Zに対応付けることができるから(準同型、かな?)、A_nに対応する順序群はK_0(A_n)=Z \oplus ZのようにZの直和が対応する。正錐K_0(A_n)の方には同様にK_0(A_n) = Z^+ \oplus Z^+が対応する
  • 9. nの極限を取りたい。K_0(A)の方はK_0(A_n)=Z^2の極限がZ^2になるが、K_0^+(A)の方は、K_0^+(A_n)=Z^+ \oplus Z^+の極限がZ^+ \oplus Z^+にならず、K_0^+(A) =   \{(a,b) \in Z^2; (1+\sqrt{5}+2)a +b \ge 0\}になる
  • 上記、9. を中心に未消化だが、ひとまず、メモしておく
  • 以下、細かいことをメモしていきたい。。。
  • {0,1}を要素とする無限長列の集合F={00000...,1000000,...}を考える
  • Fに制約を入れて、Kという無限長列の集合を作る
    • その制約とは、1の次は0、というもの。したがって、0110....  \notin K
  • Kの要素に次のような同一視ルールRを入れて、その商空間X=K/Rを考える
    • 2つの無限長01列が、n番目以降、すべて同じであるなら、その2つの無限長列は同一視する
    • z \sim z' \Longleftrightarrow \exists n \text{ such that } z_j = z'_j \; \forall j \ge n
    • R = \{(z,z') _in K \times K ; \exists n \text{ such that } z_j = z'_j \; \forall j \ge n \} と同一視ルールを書く
    • 同一視される無限長列は無限個ある。それらをZ=\{z_1,...,\}とし、Zの2つの要素を考えるときは、z,z'のように書くことにする
  • この商空間X=K/Rの要素の一つ一つが、色々なペンローズタイリングの一つ一つを表す(一つ一つのペンローズタイリングは2種類のタイルで敷き詰められており、無限に広がっているパターンのこと)

python cairo でペンローズタイリングお絵描き

  • cairoというお絵描き仕様がある
    • pythonにもあって、それ以外でも使われている
    • 特徴は、ベクター仕様でのお絵描きであること。ラスター画像ではないということ
    • 画面をピクセルに分けて、そこを何色にするか、というラスター画像では、拡縮をしたときにいちいち滑らかさの調整をしないといけないが、ベクター仕様では、そうならない
    • SVGとかがその方法をとっているが、それ以外にもPDFなどでも
    • 例えば線分の指定では、始点と終点とを指定することでベクトルを与える。そのうえで、そのベクトルは、座標変換(平行移動、回転、拡縮など)をして、描図オブジェクトすべてを一括変換することもできる
    • こちらにその解説がある

magazine.rubyist.net

  • さて。このcairoだが、pythonで使おうとおもったら、インストールに難航した
    • PC環境に、所謂pythonが入っていて、Anacondaも別途に入れてあって

、sagemathのダウンロードによりそれ専用のpython環境もあって、そのどこでcairoが使いたいのかが自分でもぼんやりとしていたことが難航の原因

    • pipは普通のpython環境、condaを使ったパッケージインストールはanaconda環境、sagemathのpython環境はsageでのpipを使わないといけない

www.python.jp

    • また、sagemath下でのpythonパッケージ導入は、めんどうくさいらしく、結局pycairoについては断念。。。
    • 参考サイトを一応、挙げておく

sonickun.hatenablog.com

ask.sagemath.org

  • 基本的には、pipもcondaも環境を最新版に上げ続けるのが吉。pythonも更新しておくほうが良い
    • Anacondaは、面倒くさいので一旦全部削除して入れ直すほうが速そう

Anacondaのアンインストールからの再インストール | Udemyのセールを活用してほしかったあのスキルを手に入れよう!【非公式】

  • その他としてはjupyter notebook でcairoの画像をinlineに出すにはさらに工夫が必要
    • こちらのサイトを参考に、cairoが作ったベクター形式の画像の元情報を、pngファイルに書き出す関数を作った上で、inline にださせるという作戦

qiita.com

  • これらを経て作ったjupyter notebookが以下:

github.com

sagemathをMacBookに入れる、Jupyterで立ち上げる

-
hackmd.io

  • こちらのサイトを参考に、sagemathのサイトに行き、ダウンロードサイトに進む。日本、RIKEN、intelCPUに進むとここに来る

ftp.riken.jp

  • 一番上の圧縮ファイルをダウンロードする(それなりに時間がかかる)
  • ダウンロードしたら解凍する
  • 解凍したら、そのフォルダ SageMathの下に色々あるのでそこに行って
./sage
  • と叩くと、インターラクティブな処理ができるようになる(ターミナルで)
./sage -n jupyter
  • と叩くとJupyter notebookを立ち上げるブラウザが出て、そこにはすでにsagemathをカーネルとして選べるようになっている
  • sagemathでのpython package
    • sagemathの世界はpythonをコンピュータ上のほかのところとは別に持って管理しているので。。。
sh sage
  • と、sage置き場にて、sage用のシェルを立ち上げた上で pip install hogeする

sonickun.hatenablog.com

ペンローズタイリングから非可換幾何へ

  • こちらの記事ペンローズタイリングを0,1の列で表現すること、個々のペンローズタイリングには、たくさんの0,1列が対応するので、ペンローズタイリングのすべてを納めた空間は、0,1の列全体の空間を、「同一のタイリングに対応する0,1列を同一視」した空間とみることができることについて、自分なりに書いた
  • ただし、0,1の列ではあるが、まったく自由ではなく、0の次は必ず1という制約が入ることは、ペンローズタイリングのピースの関係から要請されている
  • A. Connesの非可換幾何学入門

による、ペンローズタイリングを C*代数に持ち込む部分を読んで、なんとか、何を言っているのかを理解したい

  • C*代数では複素行列がその良い例になっている(*演算は共役複素数とかそういう計算を抽象化したもの、みたいな意味で)
  • また、「作用素」として考えるとき、無限次元行列を考えるが、この無限次元が、ペンローズタイリングの0,1列の無限長と相性がよいのだろう
  • また、\begin{pmatrix}1,1\\1,0\end{pmatrix}という行列が登場する
  • \begin{pmatrix}1,1\\1,0 \end{pmatrix} \begin{pmatrix} A_n \\ B_n \end{pmatrix} = \begin{pmatrix} A_n + B_n \\ A_n \end{pmatrix} = \begin{pmatrix} A_{n+1} \\ B_{n+1} \end{pmatrix}という式を見よう
  • これは、ペンローズタイリングで、タイルのピースをだんだん大きくするべく、辺を除去する作業でのピースの関係によく似ている。A_nB_nとを合併して新たなA_{n+1}とし、残るA_nは、B_{n+1}に見直す、というのは、まさに、Kite and Dartのタイリングの逐次処理と同じである
  • この2x2行列の固有値の1つは\frac{1+\sqrt{5}}{2}。。。黄金数である。
  • これが、同書の説明で、(いきなり)黄金数が出てくる理由らしい
> m
     [,1] [,2]
[1,]    1    1
[2,]    1    0
> eigen(m)
eigen() decomposition
$values
[1]  1.618034 -0.618034

$vectors
           [,1]       [,2]
[1,] -0.8506508  0.5257311
[2,] -0.5257311 -0.8506508

> (1+sqrt(5))/2
[1] 1.618034