Lie-Poisson括弧

昔の記事
yuo1989.hatenadiary.com
を最近編集して,Casimirとかのことを触れたので,ついでにLie-Poisson(リー・ポアソン)括弧のことを触れておこうと思って投稿した.

設定

\(\mathfrak{g}\) をLie環,\(\mathfrak{g}^*\) をその双対Lie環とする.\(\mathfrak{g}\) のLie括弧を \([~,~]\),\(\mathfrak{g}\) と \(\mathfrak{g}^*\) の pairing を \( \langle~,~\rangle \) とする.
\(\mathfrak{g}^*\) 上の関数 \( f: \mathfrak{g}^* \to \mathbb{R} \)*1に対して,微分1形式 \( df \) を考える.すると,ある点 \( \mu \in \mathfrak{g}^* \) でのその値 \( df|_\mu \) は,その点での \( \mathfrak{g}^* \) の接ベクトルを実数にうつす関数 \( df|_\mu : T_\mu \mathfrak{g}^* \to \mathbb{R} \) となる.
ここで,接ベクトル空間 \( T_\mu \mathfrak{g}^* \) は,\( \mathfrak{g}^* \) 自身と同一視することができる.そのため,実は \( df|_\mu \) は \( \mathfrak{g}^* \to \mathbb{R} \) という,\( \mathfrak{g}^* \) 上の関数と同一視することができる.さらにこれは微分形式であったから線形になる.つまり,\( df|_\mu \) は \( (\mathfrak{g}^*)^* \cong \mathfrak{g} \) の元と同一視できる.その対応物を \( \partial f|_\mu \in \mathfrak{g} \) と書く*2.すると,\( \nu \in \mathfrak{g} \) に対して,\( df|_\mu (\nu) = \langle \nu, \partial f|_\mu \rangle \) となる.

Lie-Poisson括弧と具体例

Lie-Poisson括弧は,上記のような設定のもとで,\(\mathfrak{g}^*\) 上の関数 \( f,g\) に対して \[ \{f,g\}|_\mu = \langle \mu, [\partial f|_\mu, \partial g|_\mu] \rangle \]と定義される.
一番簡単な具体例を考えてみる.3次元ベクトル空間 \( \mathfrak{g} = \mathfrak{g}^* = \mathbb{R}^3 \) を考えると,Lie括弧は \( [\boldsymbol{x}, \boldsymbol{y}] = \boldsymbol{x} \times \boldsymbol{y} \), pairing はベクトルの内積,\( df \) や \( \partial f \) は \( \nabla f \) となる.そして,Lie-Poisson括弧は\[ \{f,g\}(\boldsymbol{x}) = \boldsymbol{x} \cdot (\nabla f \times \nabla g) \]となる.こうして,先の記事で示した Poisson 括弧が得られる.この例からもわかるように,Lie-Poisson括弧は必ず非正準となり,Casimir元をもつ.

*1:\(\mathbb{C}\) でもいいと思いますが細かいところを気にしたことがありませんのでとりあえず実関数にしておきます.

*2:\(\partial f\) でなくて \(\dfrac{\delta f}{\delta \mu}\) と書くことが多いが,この分母の \( \mu \) が紛らわしいのでこのような記法を使うことにする.

Railsの勉強中にひっかかったこと,それを解決するために参照したところ

後々のために,手順や参考にしたウェブページをメモしておく
随時更新する予定

Rubyのインストール

Rubyは,Homebrewを使ってrbenvを導入してインストールする.
普通にbrewでインストールするだけだが,一応次のウェブページをメモしておく.

qiita.com

$ brew install rbenv ruby-build
$ rbenv install -l

PATHに $HOME/.rbenv/bin:$PATH を追加したり,シェルのプロファイルに if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi を追加したりする.

$ rbenv install 2.4.1
$ rbenv global 2.4.1

この段階では2.4.1が最新版だったのでとりあえずそのままインストールする.これでrubyは使えるようになった.

Ruby on Railsのインストール

続いてRailsをインストールする.
先のウェブページにもインストール方法は書いてあるが,Bundlerの使い方・使う意味は次のWebページを参考にした.

qiita.com
qiita.com

ただし,Bundlerのインストールはそのままではうまくいかなかった.
Rubyのバージョンが不適切だというエラーメッセージがでてきたが,これはなぜかデフォルトでインストールされていたRubyがgemで使われていたのが原因らしい.
きちんとrbenvからインストールしたものを使うために,

$ rbenv exec gem install bundler

とする.バージョンに問題がなければrbenv execは除いてしまってかまわない(はず).

今は練習中なので,意味がきちんとわかるまではできるだけ復元しやすい状態にしておきたい.
そのため,Railsもローカルにインストールする.
次のWebページを参考にした.
qiita.com

プロジェクトのフォルダを作成後,そこへ移動して

$ rbenv exec bundle init

でGemfileが作成される.それを編集して(中にgem "rails"がコメントアウトされていると思うので,それを解除して)

$ bundle install --path vendor/bundle

Railsをインストールする.
※なかなか時間がかかるが,自分のネット環境のせいかもしれない
※先に述べたように,rbenv execはrubyのバージョンの問題だった.面倒なので以降では省略する.

Railsの使い方

新規にプロジェクトを作るには,

$ bundle exec rails new xxx --skip-bundle

とする.xxxにプロジェクト名を入れる.これでxxxというフォルダが作成される.
今はvender/bundleのなかにrailsが入っており,これを使うためにbundle execを最初につける.
同時に--skip-bundleをつけることで,installが実行されるのを防ぐ.

これでxxxというRailsプロジェクトができたので,ローカルにインストールしたRailsは不要になった.
それを消しておいてもよい.

$ rm -f Gemfile
$ rm -f Gemfile.lock
$ rm -rf .bundle
$ rm -rf vendor/bundle

続いて,

$ cd xxx
$ bundle install --path vendor/bundle
$ echo '/vendor/bundle' >> .gitignore

として,フォルダxxxの中に必要なGemをインストールする.
Gemfileは先のrails newコマンドで生成されているので,必要に応じて編集する.
最終行は,Gitで管理しなければ何の関係もないが,もし管理するならその対象からvendor/bundleを除くため.Gemfileが同期されれば問題なく環境も揃う.

ここまでがうまくいっていれば,

$ bundle exec rails server

Railsが起動する.Listening on tcp:...以降の部分をブラウザで表示して,きちんと Yay! You’re on Rails! という画面が表示されれば問題なし.

jfontmaps が見つからない(後継:ptex-fontmaps)

iMac (El Capitan) に TeX Live を再インストールしたらいくつかつまづいた部分があったので自分用にメモしておく.

まず brew cask から mactex の最新版をインストールして,そのあとに tlmgr update --self --all したらエラーが発生.
エラーメッセージに (not verified: gnupg not available) とでるが,brew から gnupg はインストールしてあったのでどういうことかとなった.
これは brew から gnupg2 をインストールして解決.
一応 gnupg を削除してからインストールしたが,削除の必要があるのか,1 と 2 の共存はできるのかなど疑問点はあるが今は無視.

次に TeX Wiki などに記載されている El Capitan 以降向けの案内に従って jfontmaps のバージョンを確認しようとするも,そもそもこいつが見つからない.
tlmgr info jfontmaps を実行すると

Packages containing `jfontmaps' in their title/description:
ptex-fontmaps - Font maps and configuration tools for Japanese/Chinese/Korean fonts with (u)ptex

Packages containing files matching `jfontmaps':
00texlive.image:
	tlpkg/tlpsrc/jfontmaps.tlpsrc

というメッセージが出た.
tlmgr info ptex-fontmaps を実行すると

package:     ptex-fontmaps
category:    Package
shortdesc:   Font maps and configuration tools for Japanese/Chinese/Korean fonts with (u)ptex
longdesc:    This package provides font maps and setup tools for Japanese, Korean, Traditional Chinese, and Simplified Chinese. It is the successor of the jfontmaps package. The files in this package contain font maps for dvipdfmx to make various Japanese/Chinese/Korean fonts available for (u)ptex and related programs and formats.
installed:   Yes
revision:    43012
sizes:       src: 1037k, doc: 53k, run: 757k, bin: 25k
relocatable: No
cat-version: 20170114.0
cat-date:    2017-01-16 04:30:56 +0100
cat-license: pdgpl3
cat-topics:  font-use japanese chinese korean
collection:  collection-langjapanese

と表示された.jfontmaps の後継で,中国語と韓国語も含まれているらしい.
ptex-fontmaps で検索したら
http://oku.edu.mie-u.ac.jp/tex/mod/forum/discuss.php?d=2123
https://okumuralab.org/bibun7/
が見つかった.きっとそのうち TeX Wiki も更新されるのだろう(人任せ).
しかし第7版が出る直前にこんな更新があったとは不運としかいいようがない(買ったわけじゃないけど).

【解決】Windows10のbashでapt-get updateができない(+α)と思っていたらカスペルスキーのせいだった件

[10/26追記]
カスペルスキーの最新版(カスペルスキーセキュリティ2017)へ更新することで解決できます.以前のOSと異なり,リリースの1週間前にならないと入手できないのですぐに開発ができなかったとのこと.つまりカスペルスキーに限らず,使えなくなると困るソフトウェアがあるなら今後もすぐにはアップデートはしないほうがいいということですね.

ちなみに以前のカスペルスキーはアンインストールしてあったのですが,何かファイルが残っていたらしく,削除ツールで完全に削除しないとインストールに失敗しました.環境に依存すると思いますが.

カスペルスキー製品のWindows 10 Anniversary Update対応 | Kaspersky Daily - カスペルスキー公式ブログ

KarabinerがmacOSに対応していなかったり,最新版のOSはWindowsでもMacでも様子見が大事ですね.

[追記ここまで]


Let's note S10にWindows10をインストールしてノリノリでアップデートしてbashを使おうとしたのにドツボにハマったということ.
bashをインストール後にとりあえずapt-get updateで更新しようとするも,Connection failedが大量発生した.

ネットとか見てると/etc/resolv.confに nameserver 8.8.8.8 を追加しろとかそのやり方は古い(resolv.confは自動更新されるため)とかいろいろあるけど,うまくいかない.

カスペルスキーの保護を停止しても同じだったが,カスペルスキーを終了させると動いた.
調べてみると同様の現象が多々報告されているらしい.
さらには,bashをexitしてからまた起動しようとすると反応しなかったのだが(Bash on ...から起動すると黒い画面のみで,cmdからbashで起動すると反応無し),これもカスペルスキーのせいだったようだ.

Bash shell for Win 10, Linux Subsystem for Windows - Kaspersky Lab Forum
Bash.exe hangs and the bash is unusable · Issue #703 · Microsoft/BashOnWindows · GitHub
Black Screen when running Bash on Ubuntu on Windows · Issue #705 · Microsoft/BashOnWindows · GitHub

運動量写像

数式を使ってなにか書いてみようと思い,ちょうどいいので運動量写像について自分の理解をまとめてみることにした.数学の内容ではあるが,物理屋の言葉で補足するようにする.そのため逆に数学的な厳密さはほとんど考えていない.

基本ベクトル場

\( (P,\omega)\) をシンプレクティック多様体とする.Lie群 \(G\) がこれに作用しているとして,そのLie環を \(\mathfrak{g}\) と書く.
\(G\) の元 \(g\) は変換 \(P \times G \ni (x, g) \mapsto g \cdot x\) をもたらす(空間並進・空間回転など).\(\mathfrak{g}\) の元 \(\xi\) は無限小変換で,指数写像 \(\exp\) で撃ち出すことで \(G\) の元になる.
\(\xi \in \mathfrak{g}\) に対して,\(P\) 上の関数 \(f\) を同じく \(P\) 上の関数へ写すような,\[ (\xi_P f)(x) = \left. \dfrac{d}{dt} f(\exp(t \xi) \cdot x)\right|_{t=0} \]で定められるベクトル場 \(\xi_P\) を \(\xi\) の基本ベクトル場という*1.つまり,\(\xi\) という無限小変換が生成する \(P\) 上のベクトル場が基本ベクトル場である.

Hamiltonベクトル場

シンプレクティック多様体では,\(P\) 上の関数 \(f\) に対してHamiltonベクトル場 \(X_f = \{f, \cdot\}\) を作ることができる.物理屋にわかりやすいようにPoisson括弧で書いたが,シンプレクティック形式 \(\omega\) や内部積 \(i\) で書けば \(i(X_f)\omega = \omega(X_f, \cdot) = df\) となる.
(注:Poisson括弧の形で書くことの一つのメリットとして,シンプレクティック多様体を含んだ概念であるPoisson多様体に対しても適用できることがあると思っている.Poisson多様体に関してはこの記事の最後に少し補足している.)

運動量写像

\(\xi \in \mathfrak{g}\) の生成する基本ベクトル場 \(\xi_P\) がHamiltonベクトル場 \(X_f\) になるような関数 \(f\) はもちろん存在するとは限らない.しかし仮に存在する場合を考え,それを \(J_\xi\) と書こう:\(\xi_P = X_{J_\xi}\).つまり,無限小変換を生み出すような関数=物理量のようなものである.この関数に \(P\) の元=系の状態 \(x\) を与えることで物理量の値 \(J_\xi(x)\) が得られる.
しかし,この関数 \(J_\xi\) には「無限小」という情報が入ってしまっており,物理量とは考えにくい.それをなくすために,Lie環 \(\mathfrak{g}\) とその双対 \(\mathfrak{g}^*\) の間の pairing \(\langle \cdot, \cdot \rangle\) を使って \(\langle J(x), \xi \rangle = J_\xi(x)\) となるような \(J : P \to \mathfrak{g}^*\) を構成しよう.この \(J\) を運動量写像と呼ぶ.

例:空間並進と運動量

シンプレクティック多様体に余接束 \(T^* \mathbb{R}\) を考える.物理の言葉で言えば,一般化座標と一般化運動量 \( x = (q, p)\) の属する相空間である.シンプレクティック形式はよく見かける  \omega = dp \wedge dq,Poisson括弧は物理屋には見慣れた \( \displaystyle \{f,g\} = \frac{\partial f}{\partial q} \frac{\partial g}{\partial p} - \frac{\partial f}{\partial p} \frac{\partial g}{\partial q} \) である.Lie群 \(G\) に空間並進を与える(\(q\) のみをずらし,\(p\) はそのまま)と,そのLie環 \(\mathfrak{g}\) の元 \(\xi\) の基本ベクトル場は,\(\xi\) がもたらす空間並進量を \(\xi_1\) とおいて\[
(\xi_P g)(x) = \left. \frac{d}{dt} g(\exp (t \xi) \cdot x) \right|_{t=0} = \lim_{t \to 0} \frac{g(q + t \xi_1, p) - g(q,p)}{t} = \xi_1 \frac{\partial g}{\partial q}
\]から\( \xi_P = \xi_1 \dfrac{\partial}{\partial q} \)となる.Poisson括弧から,\( \{J_\xi, \cdot\} = \xi_P \),つまり \( \{J_\xi, g\} = \xi_P g = \xi_1 \dfrac{\partial g}{\partial q} \)となるものを考えれば,\(J_\xi(q,p) = \xi_1 p\) であることがわかる.すなわち,\(\langle J(q,p), \xi \rangle = \xi_1 p \) となるので,運動量写像 \(J\) は一般化運動量になっている:\(J(q,p) = p\).

\( q\) が直交座標であれば \( p\) は通常の意味での運動量そのもので,角度であれば(\(G\) の作用は空間回転)\(p\) は角運動量である.

Poisson多様体に関する補足

Poisson多様体とはその名の通りPoisson括弧を持つ多様体であり,シンプレクティック多様体であれば必ずPoisson多様体でもあるが,その逆は成り立たない.成り立たないケースというのは,Poisson括弧に退化性=核の存在を許すPoisson多様体が存在する場合である.そのような場合では,Poisson括弧の核となる関数 \(C\) は,任意の関数 \(f\) に対して \(\{f,C\} = 0\)となるので,Hamiltonianがどのようなものであっても保存する.このような関数 \(C\) をCasimir不変量(Casimir元)という*2.そのような核があるPoisson括弧に対しては,シンプレクティック形式が定義できない(はず).そこで,Hamiltonベクトル場の定義などをPoisson括弧を使った表現にすることで,同じ議論がPoisson多様体に対して適用できるようになる.


〔2018/10/8更新〕
いつのまにか「運動量写像」でググるとこのページがトップに来るようになってしまった...
ふと見返していたら基本ベクトル場の定義にミスを見つけたので修正して,ついでにいくつか修正しました.また,Poisson多様体についてもついでに書いてみたくなったので,最後の節として追加しました.符号についてはいろいろミスをしている気がしてならないですが,文献によって符号が違うことが多い気がするので,いつかまとめてチェックしたいとは思っています(やるとはいっていない).

*1:(2018/10/8)基本ベクトル場の定義を \(\xi_P(x) = \left. \dfrac{d}{dt} \exp(t \xi) \cdot x\right|_{t=0}\) としていましたが,適切な表現ではありませんでした.まあ \(\xi_P\) の \(x\) での成分が…といえばいいんですが…

*2:典型例としては,3次元空間で \( \{f,g\} = \boldsymbol{x} \cdot (\nabla f \times \nabla g) \) というものがある.このとき,\( C = |\boldsymbol{x}|^2/2 \) とすればよい.Poisson括弧ではなくてLie括弧だが,量子力学で習う3次元回転群のLie環で,全角運動量がすべての角運動量と可換,つまり括弧に入れるとゼロになったことを思い起こされたい.

Computer Modern絡みのエラーが起こったので解決を試みた

Windows 7TeXをアップデートしようと思っていつものようにTeXインストーラ 3で更新したらcmr関連のフォントエラーが発生しまくった.
具体的には,cmr10.tfmが見つからないといったもの.しかもamssymb.styも見つからないとのたまう.

原因を探していると,どうやら元々はあったはずのcmr10.tfmやamssymb.styがたしかに消えている.
AMS本家(http://www.ams.org/publicatins/authors/tex/amsfonts)からダウンロードして突っ込んでもあまりうまくいかない.

引き続き探していると

といった情報を発見した.
要するに必要なファイルがきちんとダウンロードされていないということ.

しかし2番目のウェブサイトでTeXのダウンロード先に指定されている
http://eplang.jp/w32tex/archive/2014/07/01/current/
は既に空.

ここでよく調べてみると,web2c-lib.tar.xz自体はダウンロードされていてC:\w32tex\downloadに存在していた.
こいつを解凍してみると,中身はtexmf-distだった(知らなかった...).
というわけでそのまますでにあるtexmf-distへ統合コピーすると,結構な割合が重複せずコピーされていった.
(半分くらいは同名ファイルが存在すると言われた)

これでコンパイルすると上手くPDFが作れた.

結論としては,web2c-lib.tar.xzのダウンロードをしているくせに解凍・コピーができていなかったのだろう.
そのうち忘れそうなのでここに書いておくことにした.

WindowsとMacでファイルを共有するときの注意

あけましておめでとうございます.

今までの記事を見返してみると「です・ます」と「である」が入り混じっていますが,その場の気分で書いているのでとくに修正しない予定です.

新年明けましたが相変わらずMacを購入したことによって起きた問題です.

最近ではDropbox,OneDrive,GoogleDriveなどのクラウドサービスを使っている人が多いと思いますが,この類のサービスを使うときに(USBメモリでファイルを移動させるときも同じかもしれませんが)文字コードの違いが原因でトラブルが発生しました.

日本語での「が」などの濁点が付いている場合に,Windows(やLinux)では「が」で1文字とするのですが,どうやらMacでは「か」+「゛」と分割した文字を結合させて表示しているのです.
他にはドイツ語などのウムラウトや,ハングル文字でも同様の問題が起こるようです.
これはWindowsMacで採用している「Unicode正規化」の手法が異なるのが原因のようです.

WindowsではNFC (Normalization Form Canonical Composition),MacではNFD (Normalization Form Canonical Decomposition)の変種を使っているとのことです.
前者がComposition=結合,後者がDecomposition=分解なので先の事例と
詳しいことはWikipedia (Unicode正規化 - Wikipedia)や少し検索するとヒットする他のブログなどを見てください(他人任せ).

上に挙げた3つのクラウドサービスでは,WindowsではNFCで処理し,MacではNFD(もどき)で処理しているようで,普通に使っていて特に問題は起こりませんでした.(Copyなど他のサービスは使っていないのでわかりません.)
ですが私はこれらの無料サービスでは容量が足りず,かと言って定期的にお金をとられるのも嫌だったので自前でQNAPというメーカーのNASを購入し,それのサービスの1つであるQsyncというソフトウェアを使ってきました.
www.qnap.com

速度は正直遅いものの,モバイル端末でもアクセスできるので非常に重宝していたのですが,これが上記のUnicode正規化の処理をきちんとしてくれませんでした.
起こる現象は以下のような流れです.

・まず,私は元々Windowsを使っていたところにMacを追加しました.
・すると,Macにファイルがコピーされていきます.
・ところが,このファイルは名前がNFDもどきで保存されるため,Qsyncは別のファイルが作られたとしてコピーします.
・最終的にWindows上にもNFDもどきで名付けられたファイルがコピーされます.
エクスプローラーでは見分けがつかないので,一見すると同じ名前のファイルが2つできます.
コマンドプロンプトで確認すると濁点が1文字として表示され,またバックスペースでは濁点だけが先に削除されます)

幾つか検索してみても解決策は見当たらず,ファイル名を英語に整えたり,エンコードを変更しようにもファイルが多すぎで途中で挫折したという話でした.

未解決のことばかり書き連ねていますが,ちゃんと解決したらまた書きますよ.きっと.