トロピカル代数のためのメモ
- こちらの団代数の短い文書を読むときのメモ
- 半体
- 集合があって、2つの演算が定まっている
- 2つの演算は、積と和
- ただし、和については「加えることはできるがその逆である引くことはできない」
- 3つの半体を覚える
- 自明半体
- 要素は1だけ。1と1の積が1、1と1の和も1
- 普遍半体
- トロピカル半体
- n個の変数
- そのローラン単項式全体 を考える
- これは普遍半体での「0でない、非負整数係数多項式」の有理式として表される関数全体の集合に対応する
- 積は普通の積とする。これにより、変数ごとの次数は「普通の和(加算と減算)」に相当する
- 和は、変数ごとの「次数の最小値」とする
- これが半体となっており、積が(次数の)和になり、和が(次数の)最小を取る操作になっていることから、その性質がトロピカルだということでトロピカル半体と呼ばれる
- 自明半体
- 普遍半体のトロピカル写像
- 半体を用いた群環
- 半体は、群であって、不完全な体の性質を持っているので、群ではある。これをPと表すとする
- 群環は、群の要素に係数を掛けたものの線形結合。係数には体が使われる
- ただし、この群環に用いられる線形結合の加算は、トロピカル加算ではなくて、普通の加算
- いずれにしろ、半体を群として整数を係数とした群環が定義できる。これをZPとする
- さらに、そのような群環ZPの分数体も作れて、それをQPとする。これは体になっている
- 団代数
- 団代数では、変数の個数nを定め
- 半体Pを定める
- そのうえで、そのQPも現れて、説明される
- ランク n は変数の個数
- (B,x,y)をPに係数を持つ種子と言う
- nxn 反対称行列B
- 。ただし、はQPを係数とする有理関数体で、代数的に独立。団変数
- 。係数
- 種子には、n通りの変異が定まり、n変異種子は、種子としての性質を持つので、種子の集合はn正則グラフになっている
- ある種子を1個取ると、n正則木の全ノードに対応する種子が一意に定まる
- したがって、各種子のx (QPを係数とする有理関数体を要素とする、要素数nの集合)の集合がとれる
- xの要素は1変異につき、1要素が変化するが、こうして、xの要素として現れるQPを係数とする有理関数体の要素全体の部分集合は、FのZP部分代数になっている。これが初期種子によって定まる団代数であるとして、団代数が定義される。。。ZP部分代数のZがちょっとわかっていないが、n個のうちの第i番目の方向について1歩進む、2歩進む、1歩戻る、という動きがZ(整数)的、ということらしい
- xの変異は、i番目での変異のとき、i番以外の要素は変化せず、i番目が次のように変化する
- すごく小難しいが、Fの要素であるxに関する有理式であることがまずわかる
- また、xに関する部分以外が係数になるが、その係数は、半体Pの要素であるyに関する群環ZPの分数体であるQPになっていることもわかる
- したがって、xの変異に伴う変換は、QPを係数とする有理変換である、と読める
- つまり、初期種子のxから一意に決まるxの要素たちは、xのQP係数有理関数であることは、その式変形からわかっている
- 団代数として面白いのは、式変形からわかっている、この事実以上に制約が厳しい事実が潜んでいることである
- 団代数の特徴
- x変数はxのZP係数のLaurent多項式になる、というのが、その厳しい制約である
- この文書が強調したこと
- 何かうまいことを考えて、対象を変異で移り変わるn正則グラフに載せることができたなら、この強調点を応用できることになる
sagemath をcygwinで
- sagemathは数学のアプリケーション
- こちらからWindows用にダウンロードしてさくっと使えるのですが、追加のpython packageを入れようとすると:
- sagemathをcygwin環境に入れるとうまく行くかも、ということで、こちらに沿ってやってみる
curl -OL https://rawgit.com/transcode-open/apt-cyg/master/apt-cyg install apt-cyg /usr/local/bin rm -f apt-cyg
apt-cyg install make m4 flex git gcc-core gcc-g++ gcc-fortran diffutils \ liblapack0 liblapack-devel zlib-devel libreadline-devel \ libiconv-devel libcrypt-devel openssl-devel gettext-devel \ python ccache
apt-cyg install make m4 flex git gcc-core gcc-g++ gcc-fortran diffutils \ liblapack0 liblapack-devel zlib-devel libreadline-devel \ libiconv-devel libcrypt-devel openssl-devel gettext-devel \ python ccache
-
- とやるとうまく行くので、cygwinインストール解説のoptionalは飛ばして
git clone --branch develop git://trac.sagemath.org/sage.git cd sage
-
- (sagemathのページにはないが)
cd sage
make
-
- とする
- すると、configureしてからじゃなきゃだめ、とのメッセージが出るので、そりゃそうだ、と思い直して
./configure
-
- とし(こちら参照)、長い、ログ表示を待ち、再度
make
pythonのリストに複数の番地を指定して要素を取り出す
a = list([4,5,3,2,7]) banchi = [3,0] [a[i] for i in banchi]
- 3番地と0番地の値の2と4が返る
[2, 4]
pythonでigraphを使ってplotする
- igraphはRとpythonで使えるグラフ理論パッケージ
- python(python3)をanaconcaでwindowsに入れて pip install python-igraph したものの、プロット機能が使えなくて難航
- pycairoに依存しているということがわかり、そのためにcairoを入れる必要があったのでメモ
- こちら
- msysを入れて…とひと手間かけたが、結局、コマンドラインから
conda install pycairo
- とするだけでよいらしい
- 入れた結果
import igraph g = igraph.Graph() g.add_vertices(3) g.add_edges([(0,1),(1,2)]) adj = g.get_adjacency() g2 = igraph.Graph.Adjacency(adj.data) # adjはigraphパッケージ独特な Matrxiと言うクラスなので、そのデータ部分だけを取り出して、リストとした adj.dataをGraph.Adjacency()関数に渡す igraph.plot(g2) out = igraph.plot(g2) out.show() out.save(fname='out.pdf')
ガウシアンカーネルの無限次元性
- サポートベクターマシンではカーネル関数を使って、高次元空間に投げ上げて、そこでの内積を利用する
- 観測変数を組み合わせて新たな次元軸を作って、その増やした次元での内積を計算するときに、地道に計算してもよいけれど、うまい方法があるといいな、と。
- そのうまい方法を用いるのが「カーネル・トリック」を使う、という話
- この記事は解りやすい
- 手作業で新たな変数を作り出し、それに対する「トリック」を紹介してくれて、最終的に、ガウシアンカーネルを紹介し、それが「無限の変数」を作り出してその内積を計算してくれていることを紹介している
- 残念なのは、そのガウシアンカーネルが分解されて、無限次元に飛んでいるところの説明式の符号が間違っていること…。正しい式はこちらにあるように、以下の式
- これを展開すると
- 指数関数を使わず、ある程度の項数で近似するなら、内積だけ計算しておけばよいこともわかる
- 念のため、この展開の収束をRでやっておくと:
d <- 5 x1 <- rnorm(d) x2 <- rnorm(d) V <- exp(-sum((x1-x2)^2)/2) C <- exp(-sum(x1^2)/2) * exp(-sum(x2^2)/2) n <- 0:10 v <- rep(0,length(n)) v[1] <- C for(i in 2:length(n)){ #v[i] <- v[i-1] +C* sign(-1)^n[i] * sum(x1*x2)^n[i]/factorial(n[i]) v[i] <- v[i-1] +C * sum(x1*x2)^n[i]/factorial(n[i]) } plot(n,v) abline(h=V)
三角化・結び目・団代数・双曲幾何・確率論・量子確率論~たまった資料の整理をする
はじめに
- コロナ禍のため(?)に資料を読み捨てにして整理せずにいたら、収拾がつかなくなってきたので、いったん整理する
団代数
- Introduction to Cluster Algebras (名大) : 団代数と{半体、トロピカル半体、ローラン現象、ルート系}について簡潔にまとめてあり、整理に有用。式表現の探索・確認にも有用
- Cluster algebras, quiver representations and triangulated categories: 団代数の性質を説明するのが主眼の文書で、その説明に箙と三角化カテゴリが登場することで、箙・三角化を幾何学的な立場から考えて、それに団代数を持ち込みたいと考えた時、参考になる情報が多い → Calabi-Yau triangulated categories
三角化
- Cluster algebras and triangulated surfaces Part I;Cluster complex 曲面上の点集合に交わらないarcsを引いて三角化するとはどういうことか、という話から始まって、その表現をどうするか、その対称性はどうなっているか、などの話
- Cluster algebras and triangulated surfaces Part II ; Lambda lengths : 三角化はそれだけだと団代数の対称性を満足できないので、三角化にtagged arcを導入してその課題を克服する話。λ-length, shear-coordinates, Teichmuller spaceなどとの関連も詳述している
- A discrete uniformization theorem for polyhedral surfaces : 多面体を変化させる処理をTeichmuller spaceの座標付けとか、λ-lengthとかで説明し、一意化定理の多面体版として説明する
- Ideal Hyperbolic Polyhedra and Discrete Uniformization : 有限な双曲面で、punctured sphereと位相同型なものは、3次元双曲空間上のconvex ideal polyhedrontとして表せる話
結び目・結び目補空間・3-多様体
- 結び目の数学(鈴木咲衣先生) : 図を追って確認できる。ジョーンズ多項式、量子不変量など
- Hyperbolic knots : "Handbook of Knot Theory"の第1章。結び目補空間とその双曲幾何構造について短くまとまった文書
- Hyperbolic knot theory : 356ページの文書。結び目補空間とその取扱いに関する諸々について、大部なだけにどこかに出ている、と言う感じの文書。Alternating Knots and Linksにも章を割いている
- Hyperbolic 3-manifolods and Cluster Algebras : 3-多様体は特殊性を持つこともありいろいろな道具立てがある研究対象。結び目補空間は3-多様体なので、そういう意味でも興味深い。この文書は、そんな3-多様体の団代数。3-多様体は四面体分割して位相をとらえる(ことも多い)ので、その変異としての団代数とか
- Homotopy hyperbolic 3-manifolds are hyperbolic : 3-多様体に双曲幾何構造が張り付く話を100ページ近い文書で詳述
双曲幾何
- Flexibility of Entropy of Boundary Maps for Surfaces of Constant Negative Curvatures : 曲面を定負曲率面として見る話し。エントロピーという概念をトピックとして、関数表示などを確認できる
代数と幾何
- On Fuchsian loci of PSLn(R)-Hitchin components of a pair of pants : 表現多様体に代数的集合の構造が入る話とか、その商空間としての指標多様体の話がなされる。その中で、例としてTeichmuller spaceが登場し、双曲構造の話が出る。Teichmuller spaceを考えつつ、さらに一般的な枠組みでどういうとらえ方をするのか、とか、多様体(幾何的に考えてもよいし代数的に考えても良いのだろうが)と代数的集合の構造とのとらえ方の整理に。
- Symplectic Structure of Information Geometry: Fisher Metric and Euler-Poincare Equation of Souriau Lie Group Thermodynamics : 物理学的に解釈することも可能な微分と関連するSymplectic structureとその多様体の計量と、それを説明するLie群との話を情報幾何多様体で行う話。一連の三角化・双曲幾何構造云々を情報幾何と結びつけるための架橋か…
- Caley sum graph of ideals of commutative rings : 環とイデアルのことを考えつつ、その多様体としての構造を想起するときに、離散版としてのグラフを念頭において考えてみよう、というときの一例
Teichmuller space
- Trace Coordinates of Teichmuller space of Riemann Surfaces of Signature (0,4) : 特定の簡単な"four-holed spheres"について、群、行列表現、複素数・四元数表現、双曲空間モデル、双曲パンツなどを使って、丁寧に座標表現・式表現を説明した文書
- Toy Teichmuller spaces of real dimension 2: the pentagon and th epunctured triangle : 単純な例を用いて、2次元多様体のTeichmuller spaceの実例を説明した文書。一般的なTeichmuller spaceの文書について具体的なイメージがわかないときに読むなどの補助によい
- Symplectic Structures on Teichmuller Spaces T_(g,s,n) and Cluster Algebras : λ-lengthとかShear-coordinatesとかがわかった上で、物理現象を表す多様体であるSymplectic StructuresとかPoisson Structuresとかとの関連に視野を広げられる文書 -> Symplectic and Poisson Manifolds
- Shear coordinates on the Teichmuller space of real hyperbolic surfaces with holes : Shear coordinatesの何たるかについて、多少なりともイメージがあるときに、簡単な具体例に即して説明してもらって、理解を堅固にするのに向いている文書、かな
- Shift coordinates, stretch lines and polyhedral structures for Teichmuller space : 長めの文章で図も豊富。三角化・多面体とTeichmuller spaceとの関連を理解するためのイメージをつかむのに良い。teichmuller spaceの話を知らずにいきなりこの文書に入るのはちょっと難しいかもしれないが、Teichmuller spaceの一般論を先に読んでイメージをつかむことも難しいので、これを最初に浅く通読するのはありか…
- Penner coordinates for closed surface : Teichmuller space のPenner coordinatesを中心に書いた文書
- Lambda length by Penner : Pennerによるλ-length のオリジナル論文。オリジナルに戻って確認したいときに。100ページ近い
曲面解析・変形
- Hyperbolid Harmonic Mapping for Surface Registration : 曲面のハンドリング。{Ricci flow、双曲幾何構造分解としてのパンツ分解、等温座標系、共形変換} = {Discrete Hyperbolic Ricci Flow, Hyperbolic Pants Decomposition, Homotopy Class, Non-linear Heat Diffustion}
- Recent Advances in Computational Conformal Geometry(2009) : 曲面の共形変換の総説。Ricci flowベースで説明しつつ、Teichmuller spaceと言う単語への言及もある。Ricci flowで変形して、hyperbolic uniformization metricを計算することができる、その後、パンツ分解をすることで、Fenchel-Nielsen coordinatesを付与することによりTeichmuller spaceとつなげることができる
トロピカル代数・トロピカル幾何
- トロピカル幾何学入門(北大) : 区分的に線形な幾何学的対象を扱う科学がトロピカル幾何学。古典的幾何学では未解決な問題の突破口の可能性がある。そんな大事なトロピカル幾何学のさわりを短くまとめた資料
- Tropical Mathematics : トロピカル演算の基礎資料
- Introduction to tropical algebraic geometry : トロピカル代数幾何の基礎的文書
- Minimal external representations of tropical polyhedra : トロピカル多面体の説明。分数表現などが出てきて、有理性などについてイメージがわきやすい
- Ideals of polynomial semirings in tropical mathematics : トロピカル数学が織りなす多項式をイデアルで構造化する話
- Tropical Ideals : トロピカル・イデアルの話。グレブナー基底との関係なども出てくる
- Tropical Geometry of Deep Neural Networks : Deep leraningとトロピカル幾何 → Sum-Product Networks: A New Deep Architecture : 関係するっぽい
Circle packing, Sphere packing, Applonian circles
- Beyond the Descartes Circle Theorem : なる接しあう円・球の曲率が満足する式の話。ユークリッド幾何・球面幾何・双曲幾何とでそれぞれ説明があり、また、曲率が整数で埋め尽くされる話などもある
- Circle packing and discrete analytic function theory : 共役変換写像としてcircle packingできるだろうというThurston の予想に照らして、Circle packingについて論じている
- A linearized circle packing algorithm : Circle packingを地道にやって、閉曲面を球面に写像するのは理論的にはOKだが、実際は処理が重い。その処理の部分処理を線形化してみましたという話
行列に関すること
- Matrix Problems and their Relation to the Representation Theory of Quivers and Posets : 箙とポセットと行列問題。行列に関する問題を複数個挙げ、それに対してポセット表現を通じて解釈する章と箙表現を通じて解釈する章とを出して論じている。100ページ超
- Best Approximation in Riemannian Geodesic Submanifolds of Positive Definite Matrices : Positive Definite Matricesは行列式・小行列式が団代数になっているはず。それとのからみで、行列の代数幾何構造に関する調べ物をしたときに出てきた文書
量子確率論
- 量子確率論とその応用 : 日本語で読む量子確率論
- Quantum probability theory : 量子確率論を学ぶための文書。「解りやすく」という文書ではなく、「きちんと定式化して」と言うタイプの文書
- Computing large-scale graphs based on quantum probability theory : グラフ比較問題はグラフが大きくなると大変。そこに量子確率論が何かできるかと言う話
- Quantum chaos, random matrix theory, and the Riemann zeta-function : ランダム行列理論。それとリーマンのゼータ関数がどう関わるのか、という話。行列の固有値スペクトルとリーマンのゼータ関数のzerosとの関連
sagemath snappy のドッカーを使ってみる
- こちらにトポロジーツール"snappy"をsagemathと連携して使う環境づくりについて説明してある
- 結局、dockerで諸々を入れるのが良いということらしいのでdockerhubにあるcomputop/sageをドッカーで入れることにする
- そのためにまず(Windows環境で)dockerが使えるようにすることにする
- こちらからドッカー環境をローカルPCに作る
- Get dockerして、ダウンロードされたexeファイルを実行するだけ
- デスクトップにできたドッカーイメージをダブルクリックして開始。
- すると、Linux カーネル更新プログラム パッケージを入れろ、と言われるので、こちらのx64 マシン用の最新の WSL2 Linux カーネル更新プログラム パッケージをダウンロードしてください。をクリックして、言われるがままに実行する。
- そのうえで、Dockerを再起動すると、Docker環境らしきものが立ち上がり、右側にコマンドを打てる場所が現れる
- 今、使いたいsagemathとsnappyが連携している「もの」を入れるべく、このサイトのコマンドを、Docker内のコマンドプロンプトに打っていく
- そもそも、最初のコマンド(以下)にかかる時間が長い…sagemath本体を入れているからだろう…
docker pull computop/sage
- 引き続いて
docker run -it computop/sage
- とやると、どうやら、ドッカーイメージが「入った」ことになるらしい
- Dockerのアイコンをダブルクリックするとドッカーが立ち上がったよというメッセージが出るので、そうしたら、コマンドプロンプトで
docker run -it -p 127.0.0.1:8888:8888 computop/sage || -と打つ。その上で >|| $ sage --notebook
とすると
Starting up Sage Jupyter Notebook, viewable at http://localhost:8888
- と出るので、ブラウザにてhttp://localhost:8888を開くと、いわゆるJupyter notebookの画面となるから、そこでsagemathのノートを開く
Manifold? import snappy M = snappy.Manifold("m004") M.alexander_polynomial() D = M.dirichlet_domain() K1 = Link([[8,3,1,4],[2,6,3,5],[6,2,7,1],[4,7,5,8]])
- とか、する。
- お絵描きがまだうまく動かないのだが…