フォン・ノイマン環と射影行列
- フォン・ノイマン環 Von Neumann algebra - Wikipediaを勉強していると、射影行列というものが出てくる。
- その環の要素の説明に射影行列が出てくる。
- であると言う。
- 射影行列は線形回帰の文脈でも登場する。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行列でなる行列がどうなるか考えてみる。
- :は、共役転置のことなので、2x2行列はのように、対角成分は実数、2つの非対角成分は相互に共役複素数となる。
- これを書き換えるととなる。
- という条件から、となる。
- の場合には、となり、(単位行列)となる。
- の場合には、から、が得られる。また、から。
- ただし、のときはとなるが、のときは、(純虚数)になっていることに注意
- したがって、となる。
- 固有値は、1と0になっている。
- 固有値1に対応する固有ベクトルで、かつ、二乗ノルムが1なるベクトルは、を二乗ノルムが1になるように補正したベクトル、固有値0に対応する固有ベクトルはを二乗ノルムが1になるように補正したベクトル
- 0なる固有値があることが、2次元平面を直線につぶすことを意味し、1なる固有値があることが、固有値1に対応する固有ベクトルが表す直線上の点は動かないことを表しており、その直線と交叉し0なる固有値に対応する固有ベクトル方向の直線は、その交点につぶされることを意味する。
- この射影行列が次のように分解されるという話がある。。このとき、ととはequivalentという話がある。これを2x2の場合について、a,tでパラメタライズした場合との関係を考えてみる。
- 2x2複素行列をとする。
- であるから
-
- を右辺に代入して、式変形すると。。。
- が得られる。さらに変形して
- となる。
- ここから、, が得られる。
- ととの制約は分離されていて次のような制約にまとめられる。
- , ,
- 射影行列のことを別の観点から考えてみる
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
- の確認
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つめ:「完備性」
- 「完備性」〜「バナッハ空間の中で『適当な位相』で閉じている」
- 環と空間
- 作用素環を扱いやすく制限して考える〜従順性
- 離散群があると群環を経由して作用素環が作れるという事実がある
- 離散群はいくらでも変なものが作れることで有名であることからも分かる通り、作用素環にもいくらでも変なものが作れてしまい、分類しにくい〜分類の役に立つような不変量が定まらない
- 作用素環に条件をつけて不変量が取れるようにするという作戦もあり
- 実際、非可換幾何のA. コンヌは、解析的に良い条件を仮定した作用素環には、簡単な不変量が完全不変量となることを示した
- このような条件を満たすことを「従順」と言う
- 従順なC*環は完全不変量を持つはずで、それによる分類定理を得ようとしているのがElliot program
- 従順でない作用素環は分類しがたいが、従順でないフォン・ノイマン環について「違う作り方をしたフォン・ノイマン環は本当に違う」というような理解の仕方でそれなりの分類的考え方が導入されている
- これ以降は、物理っぽいので割愛
自然数から整数を作る、グロタンディーク
- 非可換幾何をやっていると、順序群を整数に対応付ける話が出てくる
- その際、非負整数から整数を構成する、という話が出てくる
- このようにして出来上がった、整数と非負整数のペアによって、整数全体の順序が定まるという話がある
- そんな話が、Wikipediaの
グロタンディーク群 - Wikipediaに
では「グロタンディーク群(英: Grothendieck group)とは、可換なモノイドから最も普遍的な方法で構成されるアーベル群である」と書かれ、それが"自然数から整数を構成する標準的な方法"の一般化として説明されている
ペンローズタイリングからの非可換幾何
- この記事では、ペンローズタイリングを例に、非可換幾何の道具立ての流れをなるべく簡潔に示し、その各ステップを理解するための周辺知識は後回しにすることを目指す
- ペンローズタイリングは、あるタイプのタイリング(敷き詰め)パターンの集合。幾何学的でとらえどころがない
- 順次、異なる数学対象に対応付けて行き、特徴を取り出しやすくする(数学対象を切り替えて計算しやすくして特徴づける。この計算しやすい特徴づけ〜同型判定の道具を不変量という(不変量 - Wikipedia)
- その数学対象の切り替えは以下のようになる
- ペンローズタイリングパターンを01無限列の同値類に対応付ける。タイリングの集合 → 01無限列同値類の集合
- 同値類集合という空間を考える代わりに、その上の代数(の構造)を考える。無限次元複素行列であって、ある制約の入ったものがその代数。01無限列同値類の集合 → C*-代数=ある制約を持つ無限次元複素行列集合(無限次元複素行列集合の部分集合であって、C*-代数になっているもの)
- C*-代数〜制約付き無限次元複素行列集合〜の空間を順序群に対応付ける
- この対応付けに、K-理論を用いている
- K-理論は、大きな行列の集合が空間になっているようなときに、その空間を分類(特徴づけ)る理論。より扱いやすい数学対象に対応付ける方法を提供する理論。異なる数学対象に対応付けるものが圏論では「関手」なので、「K-理論は関手の族を構成する」と説明されるK理論 - Wikipedia
- 順序群は群そのものと、その正錐とのペアで定まる
- 無限次元複素正方行列の部分集合(C*-代数)が、有限なそれ(有限次元複素正方行列の部分集合)の極限として定められたので、有限な順序群の極限としてとる
- 無限次元極限を取る操作には、2つの低次元複素正方行列(2つの部分代数)の直和を取るので、極限としての無限次元複素正方行列の部分集合(無限次元C*-代数)は、2つの低次の複素正方行列(2つの部分代数)がそれぞれ対応する順序群の直和として表現される
- 有限次元の順序群は、群そのものが整数に対応付けられ、正錐が非負整数に対応付けられる
- この話は非負である整数から、非負整数のペアによって負の要素も持つ整数が構成される、という話(グロタンディーク)とつながる。その話はこちら:自然数から整数を作る、グロタンディーク - ryamadaのコンピュータ・数学メモ
- 順序群のペアとして構成する順序群は、群そのものに対応する「整数の直和」の「極限」と、「非負整数の直和」の「極限」として特徴づけられる
- ペンローズタイリングの場合、対応する順序群の群そのものに対応する「整数の直和」の「極限」は「整数の直和」となり、「非負整数の直和」の「極限」は、になる
- これはどういうことかというと、2次元格子点に、行列を次々に掛けていくと、(a,b) -> (a1,b1) -> (a2,b2) ...と格子点が推移していく。の固有値に黄金比が現れるのだが、平面上の点はより上にある点は上であって、の点に収束する。より下にある点は、同じ直線のの点に収束する。その線上の点は、原点に向かって振動しながら収束していく。極限にてなる点に収束するようなオリジナルの格子点(a,b)は、より上にある格子点であって、これが「極限としての非負整数直和」の条件。ちなみに、原点に「収束する点が、の直線上を原点をまたいで振動しながら収束するので、n=1,2,...のいずれにおいても、非負整数直和になるようなオリジナル格子点はもう少し制約が強そうだ。。。その条件がなのかとも思ったが違いそうだ。この両側を不等式で挟んだ制約はhttps://www224.math.arizona.edu/~ura-reports/043/McMurdie.Christopher/Final.pdfこのPDFのp22の記載による
- ペンローズタイリングの集合が、「整数の直和」ととのペアとしての順序群に対応付けられた
- この最後の順序群の情報は、ペンローズタイリングの集合を切り換えて得られた数学対象であって、同型判定する能力があり計算が簡単なので、不変量と言える
-
- 0,1で作る無限列の集合
-
- 1の後は必ず0、というルールでできるWの部分集合K
-
- Kの2要素の同一視ルール
-
- Rという同一視ルールによるKの商空間がX
- -algebra on X
- ,
- の要素は無限サイズ正方行列表現を持つ。その行列の行は(すべての)、列は(すべての)、要素はというペアによって番地指定される
-
- :長さn+1の有限列の集合
- というprojectionがある
- 1. いろいろなペンローズタイリングが点として存在する空間Xを作る
- 2. 空間の上に関数を乗せて、その変化具合を考えるのが常道なのだが、このXは変な空間になっているので、Xに乗せた空間の様子表す関数も変。この関数(空間X上の点xを取る作用素)a,b,がC*-代数Aになっている()
- 3. は無限次元正方複素行列の形をしている(複素行列はC*-代数の好例)。ただし、Xの構造・制約を反映して、一定の制約のある行列になっている。行列の行と列とは、Kの要素になっているので、行列の行zと列z’とに対応する要素をと書く。i行 j列の成分を使ってと行列を表すように、zに相当する行、z'に相当する列の成分を使ってと書く
- 4. Aの順序群について考えたい。Aは無限サイズ行列の代数だが、それを考えるにあたって、有限版を構成し、その極限を考えるのだが、行列サイズを大きくするときに、z,z'の長さを1ずつ大きくすると、行列サイズがフィボナッチ数列的に大きくなる。今、有限長で考えると、Aの有限サイズ版のサイズはとなる。そして、それは、のように、2つの正方行列の直和の形(2つの正方行列を対角に並べたブロック対角行列)になる。これは、ある有限サイズのC*-代数が2つの行列代数の直和になっていることを意味する
- 5. C*-代数Aには不変量を計算することができて、色々な定義の分類を適用することができる。その不変量計算のやり方に、G. Elliottの方法があり、そこではAに順序群を見出して不変量を得る。この順序群をと書く。不変量を使うのがK-理論の基本的アプローチであるが、そのK-理論の道具がこのである。ここにvon Neumann環と射影作用素・射影行列が絡む
- 6. 順序群はという群とその部分群とのペアとして「順序構造を強調して」表現できる。とは、Zの要素のうち、非負に相当する要素の部分集合のことである。この部分集合を正錐という。この表現にならってがAからできる順序群をその順序構造を強調した記載法である
- 7. 順序群を考えるときには、Aの要素ペアに順序が定まる必要がある。2つの正方行列に順序を入れるときにProjection(射影行列)が登場する
- 8. 代数は2つの行列代数の直和になっているが、それぞれの行列代数は順序群になっているので、それぞれの行列代数を整数に対応付けることができるから(準同型、かな?)、に対応する順序群はのようにの直和が対応する。正錐の方には同様にが対応する
- 9. の極限を取りたい。の方はの極限がになるが、の方は、の極限がにならず、になる
- 上記、9. を中心に未消化だが、ひとまず、メモしておく
- 以下、細かいことをメモしていきたい。。。
- {0,1}を要素とする無限長列の集合F={00000...,1000000,...}を考える
- Fに制約を入れて、Kという無限長列の集合を作る
- その制約とは、1の次は0、というもの。したがって、
- Kの要素に次のような同一視ルールRを入れて、その商空間X=K/Rを考える
- 2つの無限長01列が、n番目以降、すべて同じであるなら、その2つの無限長列は同一視する
- と同一視ルールを書く
- 同一視される無限長列は無限個ある。それらをとし、の2つの要素を考えるときは、のように書くことにする
- この商空間X=K/Rの要素の一つ一つが、色々なペンローズタイリングの一つ一つを表す(一つ一つのペンローズタイリングは2種類のタイルで敷き詰められており、無限に広がっているパターンのこと)
- 一つ一つのペンローズタイリングには、無限個のタイルがあるが、それぞれのタイルには、あるルールにより、無限長01列が対応付けられる。その話は長くなるので、ペンローズタイリングを数列表現すること、そして非可換幾何へ - ryamadaのコンピュータ・数学メモを参照
python cairo でペンローズタイリングお絵描き
- cairoというお絵描き仕様がある
、sagemathのダウンロードによりそれ専用のpython環境もあって、そのどこでcairoが使いたいのかが自分でもぼんやりとしていたことが難航の原因
-
- また、sagemath下でのpythonパッケージ導入は、めんどうくさいらしく、結局pycairoについては断念。。。
- 参考サイトを一応、挙げておく
- 基本的には、pipもcondaも環境を最新版に上げ続けるのが吉。pythonも更新しておくほうが良い
- Anacondaは、面倒くさいので一旦全部削除して入れ直すほうが速そう
Anacondaのアンインストールからの再インストール | Udemyのセールを活用してほしかったあのスキルを手に入れよう!【非公式】
- その他としてはjupyter notebook でcairoの画像をinlineに出すにはさらに工夫が必要
- これらを経て作ったjupyter notebookが以下:
sagemathをMacBookに入れる、Jupyterで立ち上げる
- こちらのサイトを参考に、sagemathのサイトに行き、ダウンロードサイトに進む。日本、RIKEN、intelCPUに進むとここに来る
- 一番上の圧縮ファイルをダウンロードする(それなりに時間がかかる)
- ダウンロードしたら解凍する
- 解凍したら、そのフォルダ SageMathの下に色々あるのでそこに行って
./sage
- と叩くと、インターラクティブな処理ができるようになる(ターミナルで)
./sage -n jupyter
- と叩くとJupyter notebookを立ち上げるブラウザが出て、そこにはすでにsagemathをカーネルとして選べるようになっている
- sagemathでのpython package
- sagemathの世界はpythonをコンピュータ上のほかのところとは別に持って管理しているので。。。
sh sage
- と、sage置き場にて、sage用のシェルを立ち上げた上で pip install hogeする
ペンローズタイリングから非可換幾何へ
- こちらの記事でペンローズタイリングを0,1の列で表現すること、個々のペンローズタイリングには、たくさんの0,1列が対応するので、ペンローズタイリングのすべてを納めた空間は、0,1の列全体の空間を、「同一のタイリングに対応する0,1列を同一視」した空間とみることができることについて、自分なりに書いた
- ただし、0,1の列ではあるが、まったく自由ではなく、0の次は必ず1という制約が入ることは、ペンローズタイリングのピースの関係から要請されている
- A. Connesの非可換幾何学入門
- 価格: 7040 円
- 楽天で詳細を見る
- C*代数では複素行列がその良い例になっている(*演算は共役複素数とかそういう計算を抽象化したもの、みたいな意味で)
- また、「作用素」として考えるとき、無限次元行列を考えるが、この無限次元が、ペンローズタイリングの0,1列の無限長と相性がよいのだろう
- また、という行列が登場する
- という式を見よう
- これは、ペンローズタイリングで、タイルのピースをだんだん大きくするべく、辺を除去する作業でのピースの関係によく似ている。ととを合併して新たなとし、残るは、に見直す、というのは、まさに、Kite and Dartのタイリングの逐次処理と同じである
- この2x2行列の固有値の1つは。。。黄金数である。
- これが、同書の説明で、(いきなり)黄金数が出てくる理由らしい
> 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