れおなちずむ

素粒子物理、量子計算、機械学習、計算機科学とかの話をします

テンソルの係数の関係

先日ツイッターでこんなことをつぶやいたのですが、 添字についての線形結合を展開すると楽だよというのを教えてもらいました。
つまり、2階反変テンソル

$$ A^{\mu\nu} = \frac{dx'^\mu}{dx^\rho} \frac{dx'^\nu}{dx^\lambda} A'^{\rho\lambda} $$

と変換するわけですが、これを、

$$ A^{\mu\nu} \sim A'^{\frac{dx'^\mu}{dx^\rho}\rho ~ \frac{dx'^\nu}{dx^\lambda} \lambda} $$

と書くと、上付きすなわち反変添字についても反変性が成り立っているとみることができます。
一方、2階の共変テンソルについても、

$$ A_{\mu\nu} = \frac{dx'^\rho}{dx^\mu} \frac{dx'^\lambda}{dx^\nu} A'_{\rho\lambda} \sim A'_{\frac{dx'^\rho}{dx^\mu} \rho \frac{dx'^\lambda}{dx^\nu} \lambda} $$

と書くことができて、下付きすなわち共変添字については共変性が成り立っているとみることができます。
なので、これを用いると普通のテンソルを複素変数で書き替えたいとき――例えば2次元のエネルギー運動量テンソルは、

$$ \begin{eqnarray} T_{zz} &= T_{\frac{1}{2}(1-i2) \frac{1}{2}(1-i2)} = \frac{1}{4}\left( T_{11} - T_{22} - 2i T_{12}\right) \\ T_{\bar{z}\bar{z}} &= T_{\frac{1}{2}(1+i2) \frac{1}{2}(1+i2)} = \frac{1}{4}\left( T_{11} - T_{22} + 2i T_{12}\right) \end{eqnarray} $$

となることがすぐにわかります。なぜなら、下付き添字は共変な、すなわち複素微分演算子

$$ \begin{eqnarray} \partial_z = \frac{1}{2}(\partial_1 - i\partial_2) \\ \partial_{\bar{z}} = \frac{1}{2}(\partial_1 + i\partial_2) \end{eqnarray} $$

と同じ変換性を持つオブジェクトとみることができるからです。 もちろんこれは一般の高階混合テンソルに対しても容易に一般化できます。

こんな感じで基本変数の変換性を添字に直接代入することで機械的に計算が実行できるので、テンソルの係数の変換がちょっと楽になるね~、というTipsでした😉✨

強化学習① - Markov決定過程

こんにちは~。
最近巷でホットな(深層)強化学習ですが、かくいう自分も1、2年前ぐらいにAlphaGoの熱に当てられて強化学習にハマりまして、そのときにちょっとした自分用のノートをつくりました。
その結果、ブラウザ上で深層強化学習をするAPIとかが生えたり生えなかったりした(これはまたいずれ別の機会にでも)のですが、ともかく折角書いたノートをこのまま腐らせておくのも勿体ないので、一連のノートを「週刊連載」で公開していきたいと思います(5回分ぐらいあります)。
今回はその一回目になります。 専門家でも何でもないですが、強化学習やってみたいけどよーわから~んっていう方々のお役に立てれば幸いです。

以下、本編です。

続きを読む

ミニマル物理エンジンをつくってみた

こんにちは、れおなちです🎉

ちょっと前に2Dの剛体物理エンジンを作ったのですが、完璧主義なところが祟って公開するようなことはしていませんでした。
折角作ったのにこのままお蔵入りにしておくのももったいないので、この度ポートフォリオがてらGitHubのほうに公開いたします。

ちょっとというかかなり前なので、自分で自分の実装内容を覚えていないんですが、一応物理エンジンとしての最小要件を満たしてます。
現段階では、衝突は総当たりで判定していて、剛体の形状も円しか用意しておらず、拘束の種類も多くないため、実用的とは言えないですが、今後また気が向いたら更新しようと思います。

ちなみに物理エンジン自体はHaxeという静的型付けのマルチプラットフォーム言語で書きました。自分はよくAltJSとしてHaxeを使っています😋

所感

物理学徒としての所感ですが、物理学を学ぶことと物理シミュレーションを実装することとは全く違うものなのだということを常に痛感させられます。
例えどんなに、素粒子物理学解析力学といった高度な物理を学んでいたとしても、残念ながら剛体物理シミュレーションにはあまり役に立ちません。
剛体物理シミュレーションにおいて本質的な話題となるのは、剛体同士の拘束をいかに高速かつ正確に検出して、いかに上手に解消するか、その一点だと思いました。
拘束の理論もそれなりに美しくて面白いと思うのですが、解を数値計算で求めるとなるとやはり厳しいものがあります。
いくらでも理想的な状況を考えられるのが基礎理論の美しくて面白いところですが、数値計算の前では全てが無力なのです。


これまでは物理の話ばかりしていたんですが、今後はちょくちょくプログラミングの話もしていこうと思います。
どうぞよしなに~😉

Lorentz群の表現論と場の量子論

ピノル表現

ピノルの概念を考えるうえではやはりLorentz群というものが重要になってきます。Lorentz群というのはLie群の一種で、よく知っている3次元空間の回転に、時間方向と空間方向のなす面上での「回転」(これはLorentz boostと呼ばれます)を加えた群です。時空の対称性であるLorentz群は物理では特に重要なLie群で、物理法則はこのような4次元時空を混ぜあわせるような回転変換についても不変であれ、というのが古典電磁気、ひいては相対論における要請なのです。
歴史的なあーだこーだは抜きにして、Lorentz群というのがポンッと与えられたわけですが、実はこのLorentz群というのが、とてもヤバ~い群なのです。
というのも、Lorentz群には空間回転だけでなく時間方向と空間方向の面上での「回転」を表すLorentz boostが含まれているのです。これはboostという名のごとく操作のイメージとしてはぶおおおおおん🚗💨💨💨💨💨💨💨💨💨💨💨💨💨💨💨という感じです。つまり3次元空間においては「有限」の範囲に閉じていた回転操作というものが、Lorentz boostを考えると、途端に「無限遠方」に行ってしまうようなそういう抽象操作が可能になってしまうのです。
こういうLie群をノンコンパクトLie群とよびます。Lie群多様体でもあるのでもちろんそこには位相構造が入っているのですが、そういう位相構造が有限区間で閉じていないがために、このLorentz群とやらは「ノンコンパクト」になってしまうのです。

続きを読む