Skip to content

Instantly share code, notes, and snippets.

@t3tra-dev
Created March 28, 2025 11:00
Show Gist options
  • Save t3tra-dev/d2b0913d12ae4cb885d5b002de41c3c8 to your computer and use it in GitHub Desktop.
Save t3tra-dev/d2b0913d12ae4cb885d5b002de41c3c8 to your computer and use it in GitHub Desktop.
離散フーリエ変換で $A = {{x,y,z},{z,x,y},{y,z,x}}$ 時の $A^{-1}$ を求めるやつ

1. DFT行列による対角化

循環行列

$$ A = \begin{pmatrix} x & y & z \\ z & x & y \\ y & z & x \end{pmatrix} $$

を考える。3次元の離散フーリエ変換(DFT)を表す行列 $F$

$$ F = \begin{pmatrix} 1 & 1 & 1 \\ 1 & \omega & \omega^2 \\ 1 & \omega^2 & \omega \end{pmatrix}, \quad \omega = e^{2\pi i/3}=-\tfrac12 +\tfrac{\sqrt{3}}{2}, i, \omega^3=1. $$

この $F$ には

$$ F^{-1}= \frac{1}{3} \begin{pmatrix} 1 & 1 & 1 \\ 1 & \omega^2 & \omega \\ 1 & \omega & \omega^2 \end{pmatrix} $$

が存在し,循環行列 $A$

$$ A = F^{-1} \begin{pmatrix} \lambda_0 & 0 & 0 \\ 0 & \lambda_1 & 0 \\ 0 & 0 & \lambda_2 \end{pmatrix} F $$

という形に 対角化 される。ここで $\lambda_0,\lambda_1,\lambda_2$$A$ の固有値で,具体的には

$$ \lambda_0 = x + y + z, \qquad \lambda_1 = x + \omega,y + \omega^2,z, \qquad \lambda_2 = x + \omega^2,y + \omega,z. $$

2. 逆行列の導出

上記の形から,

$$ A^{-1}= F^{-1} \begin{pmatrix} \frac{1}{\lambda_0} & 0 & 0 \\ 0 & \frac{1}{\lambda_1} & 0 \\ 0 & 0 & \frac{1}{\lambda_2} \end{pmatrix} F $$

と書ける。すなわち「固有値をとりあえず3つ計算し、その逆数を取ってDFT行列を使って戻す」というのが、循環行列を対角化する際の定石となる。 これにより計算手順自体は一貫して単純になり、各成分がどこから出てきているのか明確になる。

3. 実数表示へ戻す

ただし、この形を実際に「成分表示(実数多項式)」で書き下す段になると、

  • $\omega^k$ の実部・虚部を展開して整理する
  • 分母として $(x + \omega y + \omega^2 z),(x + \omega^2 y + \omega z),\dots$ が現れる
  • そして最終的に $\omega,\omega^2$ を消去する

... と進めることになる。結果、行列の各成分に「ずらされた形」 $(x^2 - yz)$, $(y^2 - xz)$, $(z^2 - xy)$ が並ぶ。

4. まとめ

  • 3次の循環行列の場合、DFT(離散フーリエ変換)による対角化は定石であり、固有値 -> 対角行列の逆数 -> 逆行列 という手順でスマートに計算できる。
  • ただし実数多項式表現に戻すと複素数の消去が必要になり、結果の見た目は先に示した循環構造の形に落ち着く
  • 一見「もっときれいに約分できそう」に見えても、実際には循環形故に上手く纏まらない。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment