ユニタリ行列のオイラー角分解

HPCI戦略プログラム分野5では素粒子・原子核・宇宙分野の研究者、計算機科学の研究者らからなるユーザー支援チームを組織し、分野内の情報共有、計算の並列化や最適化に関するユーザーへのアドバイス、ユーザー支援を行なっています。最新のユーザー支援事例報告をご紹介いたします。

計算の概略 ユニタリ行列のオイラー角分解
応用としては格子QCDコードのメモリ量/帯域ないし演算負荷の軽減を考えていますが、割と基礎的な内容の数学の質問となります
使用言語 c, c++, N=2,3ではMaximaを使ってEuler角から合成はしてみましたが、分解まではできていません
問題 UをU(N)ないしSU(N)のNxN複素行列とします。
このとき、次のような分解が可能であるように思えます。
U = ADB,ただしA, BはSO(N)の実回転行列、Dはexp(i diag(φ_1, φ_2,…,φ_N))となるような複素対角行列で、UがSU(N)のときはφ_iの総和は0とします。
A, D, B ∈ U(N) or SU(N)なのは明らかなのでこれらの積もU(N) or SU(N)になります。
自由度を数えるとA, BについてはN(N-1)/2、DについてはN or N-1で、合わせてN^2 or N^2 -1で、数合わせの上ではこれでよいように見えます。肝心の質問ですが
・このような分解は常に可能か、可能ならABの符号を除いて一意か?
・このような分解をするには、実際にどんな計算をすればよいのか?
です。
使用する計算機(予定も含む):「京」、その他B/Fの低い計算機全般。
解決法、参考情報 詳しくはこちらをご覧ください(PDF)

コメントや質問がありましたら、 jicfus-support-at-ccs.tsukuba.ac.jp (-at-を@にして下さい)までお送りください。

カテゴリー: 分野5ユーザー支援情報   パーマリンク