数式とソース表示には以下のライブラリを使用しています。

KaTeX ver.${katex.version}

tingle.js ver.${tingleVersion}

CtxMenu ver.${ctxMenuVersion}

👉はてなブログでの使用方法(基本、拡張) `); let contextMenu = CtxMenu(".katex"); contextMenu.addItem("Show TeX Commands", e => { let an = e.getElementsByTagName("annotation"); let text = an.length > 0 ? an[0].textContent : "???"; modal.getContent().firstChild.value = unescapeHTML(text.trim()); modal.open(); }); contextMenu.addItem("Show MathML Code", e => { let mathml = e.getElementsByClassName("katex-mathml"); modal.getContent().firstChild.value = mathml.length > 0 ? mathml[0].innerHTML : "???"; modal.open(); }); contextMenu.addSeperator(); contextMenu.addItem("About", () => about.open()); }); document.write('


🌟この記事は数式に KaTeX を使用しています。👉使用方法(基本、拡張)'); } function unescapeHTML(s) { return s .replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&") .replace(/&#x([0-9a-fA-F]+);/g, (_, p1) => String.fromCharCode(parseInt(p1, 16))); }

【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

メビウス変換の合成と行列の積

メビウス変換の合成が行列の積と同じ規則になることを、順を追って説明します。

目次

メビウス変換

メビウス変換は、複素数の分数の形で定義されます。

メビウス変換
f(z) = \frac{az + b}{cz + d}

ここで、$z, a, b, c, d$ は複素数であり、$ad - bc \neq 0$ です。この条件により、$f(z)$ が定数関数となったり、分母が $0$ となるケースを除外します。

条件

分母と分子が定数倍の関係となる条件を考えます。

定数を複素数 $x$ とすれば、$ax=c$ かつ $bx=d$ より $ad-bc=0$ となります。

分母と分子が定数倍の関係になれば、メビウス変換は定数関数 $f(z)=\dfrac1x$ となるため、引数の情報が失われて逆変換ができなくなります。

また、分母が $0$ となるケースは $x=0$ として含まれます。

同次座標

成分と除数をセットにした座標を同次座標と呼びます。

複素 1 次元の場合、単純に分子と分母に対応します。本記事では同次座標を縦ベクトルで表現します。

\frac{a}{b} \cong \begin{pmatrix}a \\ b\end{pmatrix}

分数形でない場合、除数を 1 とします。

z \cong \begin{pmatrix}z \\ 1\end{pmatrix}

同次座標は、除数を 0 とすることで無限遠点が表現できます。

∞ \cong \begin{pmatrix}1 \\ 0\end{pmatrix}

※ ここでは形式的に $∞$ と書いていますが、割り算として計算しているわけではありません。同次座標は割り算とは切り離して、単にそのような成分の座標として扱います。

行列表現

メビウス変換の右辺を同次座標でベクトル化すれば、係数を行列に分離できます。

f(z)=\frac{az + b}{cz + d}
\cong \begin{pmatrix}az + b \\ cz + d\end{pmatrix}
= \begin{pmatrix} a & b \\ c & d \end{pmatrix} \begin{pmatrix} z \\ 1 \end{pmatrix}

これにより、複素数平面上でのメビウス変換を線形代数の枠組みで捉えることができるようになります。

具体的には、メビウス変換に対応するのは係数を分離した行列の部分です。

\begin{pmatrix} a & b \\ c & d \end{pmatrix}

連続したメビウス変換は、行列の積によって合成できます。

f \circ f
\cong\begin{pmatrix} a & b \\ c & d \end{pmatrix}\begin{pmatrix} a & b \\ c & d \end{pmatrix}
=\begin{pmatrix}a^2+bc & ab+bd \\ ca+dc & cb+d^2\end{pmatrix}

複素数としての計算と結果が一致します。

(f \circ f)(z)
&=f(f(z)) \\
&=f\left(\frac{az + b}{cz + d}\right) \\
&=\frac{a\left(\dfrac{az + b}{cz + d}\right) + b}{c\left(\dfrac{az + b}{cz + d}\right) + d} \\
&=\frac{\dfrac{a(az + b) + b(cz + d)}{cz + d}}{\dfrac{c(az + b) + d(cz + d)}{cz + d}} \\
&=\frac{a^2z + ab + bcz + bd}{caz + cb + dcz + d^2} \\
&=\frac{(a^2+bc)z+(ab+bd)}{(ca+dc)z+(cb+d^2)} \\
&\cong\begin{pmatrix}a^2+bc & ab+bd \\ ca+dc & cb+d^2\end{pmatrix}\begin{pmatrix} z \\ 1 \end{pmatrix}

このように、行列の積として計算する方が見通しが良くて簡単です。

※ この結果は、結合法則 $A(BC)=(AB)C$ から理解できます。

\underbrace{\begin{pmatrix} a & b \\ c & d \end{pmatrix}\left\{\begin{pmatrix} a & b \\ c & d \end{pmatrix}\begin{pmatrix} z \\ 1 \end{pmatrix}\right\}}_{f(f(z))}
&=\underbrace{\left\{\begin{pmatrix} a & b \\ c & d \end{pmatrix}\begin{pmatrix} a & b \\ c & d \end{pmatrix}\right\}\begin{pmatrix} z \\ 1 \end{pmatrix}}_{(f \circ f)(z)}
\\
\underbrace{\begin{pmatrix} a & b \\ c & d \end{pmatrix}\begin{pmatrix}az + b \\ cz + d\end{pmatrix}}_{f\left(\frac{az + b}{cz + d}\right)}
&=\begin{pmatrix}a^2+bc & ab+bd \\ ca+dc & cb+d^2\end{pmatrix}\begin{pmatrix} z \\ 1 \end{pmatrix}

参考

メビウス変換(一次分数変換)が表す内容については、こちらのポストが簡潔にまとまっています。

※ 行列式が 0 ではない n 次の正方行列全体の集合を n 次の一般線型群 GL(n) と呼びます。GL(2,ℂ) は成分が複素数であることを表します。2 次正方行列の行列式は $ad-bc$ となり、0 でない条件がメビウス変換と一致するため、メビウス変換の行列表現は GL(2,ℂ) に属します。同次座標は $(a:b)\sim(ca:cb)$ のように比例関係を同一視しますが、これは原点を通る直線に対応します。これがメビウス変換によって別の直線に移されるということです。

本記事を公開した後、偶然同じ話題についてのポストを見掛けました。

本記事の執筆にあたって、Mistral と Grok の AI チャットの回答を参考にしました。

関連記事

同じことを DeepSeek-V3 にも聞いてみました。

通常の回答は簡潔ですが、分かりにくい部分があります。DeepThink の回答がバランスが取れているように思います。