【LaTeX】行列の書き方まとめ|pmatrix・転置・逆行列・行列式をコピペ実例で解説

「LaTeX 行列」「tex 行列」で検索してこのページにたどり着いた方の多くは、レポートや論文・ブログで行列をきれいに書きたいけれど「括弧の種類はどう変えるのか」「転置の T はどう書くのが正しいのか」「大きな行列の省略記号(…)はどう打つのか」で手が止まっている、という状況ではないでしょうか。本記事はそうした疑問にコピペできる実例で一気に答えるリファレンスです。

行列の表記は、連立方程式の係数行列、座標変換の回転行列、機械学習の重み行列、制御工学の状態空間モデルなど、あらゆる理工系分野で登場します。書き方を一度マスターしておけば、レポート作成やブログ執筆のたびに調べ直す手間がなくなり、数式を本来考えたいことに集中できるようになります。

まずは結論を先に知りたい方のために、冒頭に逆引き早見表を置きました。やりたいことから必要なコマンドをすぐ引けます。そのあと、各環境の使い方・転置や逆行列の正しい書き方・大型行列の省略記号・ブロック行列・拡大係数行列・Pythonとの連携・KaTeX互換・よくあるエラーまで、順番に丁寧に解説していきます。

本記事の内容

  • やりたいことから引ける逆引き早見表
  • matrix系環境(pmatrix / bmatrix / vmatrix ほか)の使い分け
  • 転置・逆行列・行列式などの付随記号の正しい書き方
  • 大型行列の省略記法(\cdots / \vdots / \ddots
  • ブロック行列・拡大係数行列・インライン行列
  • PythonのSymPy/NumPyで計算した行列をLaTeXに出力する方法
  • KaTeX互換の注意点とよくあるエラーの対処

行列のコマンドは数が多く見えますが、覚えるべきことは「中身の書き方」と「括弧の選び方」の2つに分かれます。

LaTeXの行列は中身の書き方と括弧の選び方で決まる

左が中身の書き方で、& で列を区切り、\\ で行を改めます。これはどの環境でも共通です。右が括弧の選び方で、環境名を変えるだけで括弧の種類が切り替わります。つまり、中身を一度書いてしまえば、丸括弧を角括弧にしたいときは環境名の pb に変えるだけで済みます。この構造が分かっていれば、覚えるコマンドは実質「&\\」+「環境名5つ」だけです。

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

なお本記事のサンプルはすべて、Webで数式を表示するKaTeX、および一般的なLaTeX(amsmath環境)の両方で動作するように書いています。

逆引き早見表:やりたいことからコマンドを引く

細かい解説に入る前に、よく使うパターンを一覧にまとめます。「とりあえずこれをコピペしたい」という場合はこの表だけで用が足りることも多いはずです。各行の詳細は後続のセクションで解説します。

やりたいこと LaTeXコマンド 表示イメージ
丸括弧の行列 \begin{pmatrix} a & b \\ c & d \end{pmatrix} $\begin{pmatrix} a & b \\ c & d \end{pmatrix}$
角括弧の行列 \begin{bmatrix} a & b \\ c & d \end{bmatrix} $\begin{bmatrix} a & b \\ c & d \end{bmatrix}$
波括弧の行列 \begin{Bmatrix} a & b \\ c & d \end{Bmatrix} $\begin{Bmatrix} a & b \\ c & d \end{Bmatrix}$
行列式(縦線) \begin{vmatrix} a & b \\ c & d \end{vmatrix} $\begin{vmatrix} a & b \\ c & d \end{vmatrix}$
ノルム(二重縦線) \begin{Vmatrix} a & b \\ c & d \end{Vmatrix} $\begin{Vmatrix} a & b \\ c & d \end{Vmatrix}$
転置 \bm{A}^{\top} または \bm{A}^{\mathsf{T}} $\bm{A}^{\top}$
逆行列 \bm{A}^{-1} $\bm{A}^{-1}$
逆行列の転置 \bm{A}^{-\top} $\bm{A}^{-\top}$
共役転置(随伴) \bm{A}^{\dagger} / \bm{A}^{\mathsf{H}} $\bm{A}^{\dagger}$
行列式(関数形) \det(\bm{A}) $\det(\bm{A})$
トレース \operatorname{tr}(\bm{A}) $\operatorname{tr}(\bm{A})$
階数 \operatorname{rank}(\bm{A}) $\operatorname{rank}(\bm{A})$
サイズ表記 \bm{A} \in \mathbb{R}^{m\times n} $\bm{A}\in\mathbb{R}^{m\times n}$
横方向の省略 \cdots $\cdots$
縦方向の省略 \vdots $\vdots$
斜め方向の省略 \ddots $\ddots$
文中の小さな行列 \left(\begin{smallmatrix}...\end{smallmatrix}\right) $\left(\begin{smallmatrix} a & b \\ c & d \end{smallmatrix}\right)$
拡大係数行列 \left(\begin{array}{cc|c}...\end{array}\right) $\left(\begin{array}{cc\|c} a & b & e \\ c & d & f \end{array}\right)$

最初に押さえるべき共通ルールは2つだけです。列の区切りは &、行の区切りは \\。これはどの行列環境でも変わりません。逆に言えば、この2つさえ守れば、あとは括弧の種類を選ぶだけで行列が書けてしまいます。

それでは、この表の各項目を順番に詳しく見ていきましょう。まずは行列環境の土台となる matrix 環境からです。

行列の基本:matrix環境

最もシンプルな行列

LaTeXで行列を書くための最も基本的な環境が matrix 環境です。数学の教科書で行列を手書きするとき、要素を縦横に並べて括弧で囲みますが、LaTeXでもそれと同じ考え方です。行を \\ で改行し、列を & で区切ります。

ソースと出力の対応を見ておきましょう。

& は列の区切り、\\ は行の区切り

左のソースで 1 & 2 & 3 と書いた1行が、出力では行列の1行目になります。& が2個あるので列は3つ、\\ で改行しているので行は2つ、結果として $2 \times 3$ 行列になります。

ここで大事なのが、各行の & の個数を「列数 $-$ 1」で必ず揃えることです。ある行だけ & が足りないと、その行の要素が左に詰まってしまい、行列全体が崩れます。逆に多すぎるとエラーになる場合もあります。行数と列数を数えながら書く癖をつけておくと事故が減ります。

たとえば $2 \times 2$ の行列を書くには、次のようにします。

$$ \begin{matrix} a & b \\ c & d \end{matrix} $$

この matrix 環境だけでは括弧がつかないため、要素が裸のまま並んだ状態になります。実際の数学表記では括弧で囲むのが一般的ですから、通常は次に紹介する pmatrixbmatrix といった派生環境を使います。

LaTeXのソースコードは次のとおりです。

$$
\begin{matrix}
a & b \\
c & d
\end{matrix}
$$

ポイントは3つです。

  1. 列の区切り&(アンパサンド)を使います
  2. 行の区切り\\(バックスラッシュ2つ)を使います
  3. 環境全体を $$...$$ で囲んでブロック数式にします

この基本構造はすべての行列環境で共通ですので、しっかり覚えておきましょう。matrix で骨格を作り、頭文字を変えるだけで括弧の種類が切り替わる、と理解すると見通しが良くなります。

それでは、括弧の種類を変えた行列環境を見ていきましょう。

括弧の種類で使い分ける行列環境

実際の数式では、行列を何らかの括弧で囲みます。LaTeXでは括弧の種類ごとに専用の環境が用意されており、用途や分野の慣習に応じて使い分けます。覚え方のコツは、環境名の頭文字が括弧の形に対応していることです。p は paren(丸括弧)、b は bracket(角括弧)、B は Brace(波括弧)、v は vertical bar(縦線)、V は二重の縦線、と対応づけて覚えるとほとんど暗記不要になります。以下の表に主要な環境をまとめます。

環境名 括弧の形 主な用途 出力例
matrix なし 括弧を自分で指定したい場合 $\begin{matrix} a & b \\ c & d \end{matrix}$
pmatrix 丸括弧 ( ) 物理学、工学で多用 $\begin{pmatrix} a & b \\ c & d \end{pmatrix}$
bmatrix 角括弧 [ ] 線形代数の教科書で多用 $\begin{bmatrix} a & b \\ c & d \end{bmatrix}$
Bmatrix 波括弧 { } 集合や特殊な表記 $\begin{Bmatrix} a & b \\ c & d \end{Bmatrix}$
vmatrix 縦線 | | 行列式 $\begin{vmatrix} a & b \\ c & d \end{vmatrix}$
Vmatrix 二重縦線 ‖ ‖ ノルムなど $\begin{Vmatrix} a & b \\ c & d \end{Vmatrix}$

6つを並べると、違いは括弧だけだということがはっきりします。

6つの行列環境の比較

中身の 1 & 2 \\ 3 & 4 はすべて共通で、環境名だけが違います。用途の目安も添えました。pmatrix が汎用、bmatrix は工学・数値計算の慣習、vmatrix は行列式、Vmatrix はノルムというように、括弧の種類自体が意味を持つ場合がある点に注意してください。

特に vmatrix は「行列式」を意味してしまうので、単に縦に細い括弧が欲しいという理由で使うと誤読されます。行列そのものを書きたいなら pmatrixbmatrix を選びます。

pmatrix:丸括弧の行列

丸括弧で囲んだ行列は、物理学や工学の分野で最もよく使われる表記です。ベクトルを列ベクトルとして表すときにも頻繁に登場します。

$$ \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} $$

$$
\begin{pmatrix}
1 & 2 \\
3 & 4
\end{pmatrix}
$$

たとえば、2次元の回転行列は次のように書けます。

$$ \bm{R}(\theta) = \begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix} $$

このように、pmatrix は物理量の変換行列やベクトルの成分表示に適しています。列ベクトル $\bm{x} = \begin{pmatrix} x \\ y \\ z \end{pmatrix}$ のように、文中の縦ベクトルにもそのまま使えます。

bmatrix:角括弧の行列

角括弧(ブラケット)で囲んだ行列は、線形代数の教科書で特によく見る表記です。日本の大学で使われる線形代数のテキストでは、この表記が主流です。

$$ \bm{A} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} $$

$$
\bm{A} = \begin{bmatrix}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{bmatrix}
$$

上の例は $3 \times 3$ の単位行列 $\bm{I}$ です。対角成分がすべて1、非対角成分がすべて0であることが一目でわかります。pmatrixbmatrix は中身がまったく同じでも括弧の見た目だけが違うので、所属する研究室や投稿先のスタイルに合わせて統一するとよいでしょう。

Bmatrix:波括弧の行列

頭文字が大文字の Bmatrix は波括弧 { } で囲みます。連立方程式を1つの式としてまとめて示すときなどに使われます。

$$ \begin{Bmatrix} x \\ y \\ z \end{Bmatrix} $$

使用頻度は pmatrix / bmatrix ほど高くありませんが、頭文字の大文字・小文字で括弧が変わるという規則の好例なので覚えておきましょう。

vmatrix:行列式

行列式を表すときは vmatrix 環境を使います。行列式は行列の「大きさ」や「体積の拡大率」を表すスカラー量であり、縦線で囲んで表記するのが慣例です。

$$ \det(\bm{A}) = \begin{vmatrix} a & b \\ c & d \end{vmatrix} = ad – bc $$

$$
\det(\bm{A}) = \begin{vmatrix}
a & b \\
c & d
\end{vmatrix}
= ad - bc
$$

行列そのもの(bmatrixpmatrix)と行列式(vmatrix)を混同しないよう注意しましょう。行列はベクトルの集まりであり、行列式はそこから計算されるスカラー値です。この区別は表記レベルでも重要で、$\bm{A}$(括弧つき)と $|\bm{A}|$(縦線)はまったく別の意味になります。

なお $3 \times 3$ 行列の行列式は、サラスの公式を使って次のように展開できます。

$$ \begin{vmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{vmatrix} = a_{11}a_{22}a_{33} + a_{12}a_{23}a_{31} + a_{13}a_{21}a_{32} – a_{13}a_{22}a_{31} – a_{11}a_{23}a_{32} – a_{12}a_{21}a_{33} $$

vmatrix の中に普通の数式を並べるだけで、このような展開式も自然に書けます。

Vmatrix:二重縦線

Vmatrix は二重の縦線で囲む環境です。ノルムの表記など、特殊な場面で使用されることがあります。

$$ \begin{Vmatrix} a & b \\ c & d \end{Vmatrix} $$

使用頻度は他の環境に比べて低いですが、論文のスタイルによっては必要になる場合があります。なお、ベクトルのノルム $\|\bm{x}\|$ を単独で書くだけなら \|\bm{x}\| で十分で、Vmatrix を持ち出す必要はありません。

ここまでで括弧の種類による行列環境の使い分けを理解しました。検索でこのページに来た方が最も知りたい項目の一つが「転置の書き方」です。次は、行列に付随する記号——転置・逆行列・行列式・トレースなどの正しい書き方をまとめて解説します。

行列に付随する記号:転置・逆行列・行列式

行列を扱う際には、転置、逆行列、随伴行列などの記号を付けることがよくあります。ここでは、それぞれの書き方と「どれを使うべきか」の指針を紹介します。

転置行列の書き方(latex 転置)

「latex 転置」で調べると、$\bm{A}^T$ を出す方法として複数の流儀が見つかり、どれを使うべきか迷いがちです。代表的な4つの書き方を比較します。

書き方 LaTeX 表示 コメント
専用記号 \bm{A}^{\top} $\bm{A}^{\top}$ 最も推奨。常に立体で、添字とも揃いやすい
サンセリフ立体 \bm{A}^{\mathsf{T}} $\bm{A}^{\mathsf{T}}$ 工学・統計で人気。Tがきれいに立つ
ローマン体 \bm{A}^{\mathrm{T}} $\bm{A}^{\mathrm{T}}$ 教科書的。可もなく不可もなく
素のT(非推奨) \bm{A}^T $\bm{A}^T$ 斜体のため変数 $T$ と紛らわしい

代表的な3つを拡大して並べると、違いがはっきり見えます。

転置の書き方3種

一番左の A^T は $T$ が斜体で組まれるため、「$T$ という変数の $A$ 乗」や「時刻 $T$ での値」と読まれる余地が残ります。真ん中の \top は転置専用の記号で、常に立体・一定の高さで組まれるので誤読されません。右の \mathsf{T} はサンセリフの立体で、統計や制御の論文誌でよく見かけます。

迷ったら \top を選んでおけば間違いありません。特に $T$ を周期や時定数として使っている文書では、素の ^T は本当に紛らわしくなるので避けるべきです。

ところで、転置が何をする操作だったかも図で確認しておきます。

転置は行と列を入れ替える

$2 \times 3$ の行列 $A$ を転置すると $3 \times 2$ になります。シアンで示した $A$ の1行目 $(1, 2, 3)$ が、転置後は $A^\top$ の1列目に縦に並び、アンバーの2行目 $(4, 5, 6)$ が2列目になります。成分で書けば $(A^\top)_{ij} = A_{ji}$ で、添字を入れ替えるだけです。

サイズが $m \times n$ から $n \times m$ に入れ替わるので、$A^\top A$ は $n \times n$、$A A^\top$ は $m \times m$ と、掛ける順序で結果のサイズが変わります。これは最小二乗法や共分散行列の式を読むときに効いてくる区別です。

最後の \bm{A}^T は手軽ですが、$T$ が斜体になってしまい、変数の $T$(温度や周期など)と見分けがつきにくくなります。論文やレポートでは、転置であることが明確になる \top\mathsf{T}\mathrm{T} のいずれかを使うのが望ましいです。

$$ \bm{A}^{\top}, \quad \bm{A}^{\mathsf{T}}, \quad \bm{A}^{\mathrm{T}} $$

$$
\bm{A}^{\top}, \quad \bm{A}^{\mathsf{T}}, \quad \bm{A}^{\mathrm{T}}
$$

転置の具体例も挙げておきましょう。$2 \times 3$ 行列を転置すると、行と列が入れ替わって $3 \times 2$ 行列になります。

$$ \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{pmatrix}^{\top} = \begin{pmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \end{pmatrix} $$

$$
\begin{pmatrix}
1 & 2 & 3 \\
4 & 5 & 6
\end{pmatrix}^{\top}
=
\begin{pmatrix}
1 & 4 \\
2 & 5 \\
3 & 6
\end{pmatrix}
$$

ここでのポイントは、\end{pmatrix} の直後に ^{\top} を付けるだけで行列全体の転置が表せることです。波括弧 {}\top を囲んでおくと、後で ^{-\top}(逆行列の転置)のように複数記号を上付きにしたいときも崩れません。

行ベクトルと列ベクトルの変換も転置でよく書きます。

$$ \bm{x} = (x_1, x_2, \dots, x_n)^{\top} $$

これは「$\bm{x}$ は $x_1$ から $x_n$ を並べた列ベクトルである」という意味で、横長に書きつつ実体は縦ベクトルであることを示す定番の表記です。

逆行列

逆行列は上付き文字の $-1$ で表します。

$$ \bm{A}^{-1} $$

$$
\bm{A}^{-1}
$$

波括弧 {}-1 を囲むことで、上付き文字全体として扱われます。\bm{A}^-1 のように波括弧を省略すると、$-$ だけが上付きになり $1$ が本文サイズに落ちてレイアウトが崩れるので注意してください。

$2 \times 2$ 行列の逆行列は公式が単純なので、pmatrix の前に分数 \frac を置く形でそのまま書けます。

$$ \bm{A}^{-1} = \frac{1}{ad – bc} \begin{pmatrix} d & -b \\ -c & a \end{pmatrix} $$

$$
\bm{A}^{-1} = \frac{1}{ad - bc}
\begin{pmatrix}
d & -b \\
-c & a
\end{pmatrix}
$$

ここで分母の $ad – bc$ はまさに行列式 $\det(\bm{A})$ です。つまり行列式が0だと逆行列は存在しないことが、この式から視覚的に読み取れます。逆行列・転置・行列式が記号として互いに関係していることが、表記を通じても見えてくるわけです。

「逆行列の転置」や「転置の逆行列」はしばしば $\bm{A}^{-\top}$ と略記されます。両者は一致する($(\bm{A}^{-1})^{\top} = (\bm{A}^{\top})^{-1}$)ので、この簡潔な記法が使えます。

$$ \bm{A}^{-\top} = (\bm{A}^{-1})^{\top} = (\bm{A}^{\top})^{-1} $$

エルミート転置(随伴行列)

複素行列の場合、エルミート転置(共役転置)を使います。これは転置に加えて各成分の複素共役を取る操作で、記号としては $\dagger$ やアスタリスク $*$、$\mathrm{H}$ が使われます。

$$ \bm{A}^{\dagger}, \quad \bm{A}^{*}, \quad \bm{A}^{\mathsf{H}} $$

$$
\bm{A}^{\dagger}, \quad \bm{A}^{*}, \quad \bm{A}^{\mathsf{H}}
$$

量子力学では $\dagger$(ダガー)が標準的ですが、信号処理や統計などの工学分野では $\mathrm{H}$(Hermitian の頭文字)が使われることもあります。実数行列では複素共役が効かないため、エルミート転置は単なる転置 $\bm{A}^{\top}$ と一致します。

行列の諸量(行列式・トレース・階数)

行列に関連するよく使う記号をまとめます。関数名は \operatorname{...} を使うと、立体かつ前後に適切なスペースが入ってきれいに表示されます。

記号 LaTeX 説明
$\det(\bm{A})$ \det(\bm{A}) 行列式
$\operatorname{tr}(\bm{A})$ \operatorname{tr}(\bm{A}) トレース(対角和)
$\operatorname{rank}(\bm{A})$ \operatorname{rank}(\bm{A}) 階数(ランク)
$\bm{A}^{-1}$ \bm{A}^{-1} 逆行列
$\bm{A}^{\top}$ \bm{A}^{\top} 転置行列
$\bm{A}^{\dagger}$ \bm{A}^{\dagger} 共役転置
$\|\bm{A}\|_F$ \|\bm{A}\|_F フロベニウスノルム

\det はLaTeXに最初から用意された演算子なので \operatorname を使わなくても立体で表示されますが、trrank は標準では用意されていないため \operatorname{tr} のように指定する点に注意してください(素の tr だと $t$ と $r$ の積のように斜体で出てしまいます)。

要点だけを図にまとめておきます。

行列に付随する量の書き方

注意点の列に書いたとおり、事故が起きやすいのは2か所です。ひとつは逆行列の A^{-1} で、波括弧を省いて A^-1 と書くと $A^-1$ という意味不明な出力になります。上付き文字が2文字以上のときは必ず {} で囲みます。

もうひとつが関数名の組み方です。\det は最初から立体の演算子として定義されていますが、trrank は定義されていないため、素で書くと変数の積として斜体で組まれてしまいます。\operatorname{tr} と書けば立体になり、前後のスペースも自動で調整されます。

これらの記号は線形代数の記事や論文で頻出するので、すぐに書けるようにしておくと効率が上がります。次は、行列のサイズが大きくなったときに省略記号を使って表現する方法を見ていきましょう。

大型行列の省略記法(latex 行列 省略)

実際の数学では $n \times n$ のような一般的なサイズの行列を扱うことが多く、すべての要素を書き出すわけにはいきません。そのような場合には省略記号(ドット記号)を使って行列の構造を表現します。

省略記号の種類

LaTeXには3種類のドット記号が用意されています。それぞれの特徴と用途は以下のとおりです。

コマンド 表示 方向 用途
\cdots $\cdots$ 水平(中央) 行方向の省略
\vdots $\vdots$ 垂直 列方向の省略
\ddots $\ddots$ 斜め 対角方向の省略

似たコマンドに \ldots($\ldots$、ベースライン上のドット)がありますが、行列の要素は中央揃えで並ぶため、水平方向の省略には中央に点が来る \cdots を使うのが基本です。

一般の $m \times n$ 行列で、3種類のドットがどこに入るかを見てみましょう。

省略記号の使い分け

横方向の省略には \cdots、縦方向には \vdots、そして左上から右下へ向かう対角方向には \ddots を使います。$3 \times 3$ の位置に \ddots を置くことで、「行も列も省略されている」ことを一目で示せるのがポイントです。

右側に並べた \dots\ldots)はベースライン上に点が並ぶので、$1, 2, \dots, n$ のような数の列には向いていますが、行列の中では他の要素と高さが揃わず沈んで見えます。行列の中では \cdots を使うと覚えておけば十分です。

一般的な $m \times n$ 行列

これら3つのドット記号を組み合わせると、一般的な $m \times n$ 行列を次のように表現できます。

$$ \bm{A} = \begin{pmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{pmatrix} $$

$$
\bm{A} = \begin{pmatrix}
a_{11} & a_{12} & \cdots & a_{1n} \\
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{m1} & a_{m2} & \cdots & a_{mn}
\end{pmatrix}
$$

ここでのポイントは、\ddots(斜めのドット)を対角方向に配置することです。これにより「同じパターンが対角方向に続く」ことが視覚的に伝わります。特に対角行列や単位行列を一般化して書く場合には、この斜めのドットが欠かせません。

対角行列

対角行列は対角成分以外がすべて0の行列です。省略記号を活用して簡潔に書けます。

$$ \bm{D} = \begin{pmatrix} d_1 & 0 & \cdots & 0 \\ 0 & d_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & d_n \end{pmatrix} $$

$$
\bm{D} = \begin{pmatrix}
d_1 & 0 & \cdots & 0 \\
0 & d_2 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & d_n
\end{pmatrix}
$$

対角行列は固有値分解、特異値分解、正規化など多くの場面で登場するため、この書き方は頻繁に使うことになります。\operatorname{diag}(d_1, \dots, d_n) と略記する流儀もあわせて覚えておくと便利です。

帯行列(三重対角行列)

数値解析でよく現れる三重対角行列(tridiagonal matrix)も、省略記号を工夫して表現できます。

$$ \bm{T} = \begin{pmatrix} b_1 & c_1 & & & 0 \\ a_2 & b_2 & c_2 & & \\ & a_3 & b_3 & \ddots & \\ & & \ddots & \ddots & c_{n-1} \\ 0 & & & a_n & b_n \end{pmatrix} $$

$$
\bm{T} = \begin{pmatrix}
b_1 & c_1 & & & 0 \\
a_2 & b_2 & c_2 & & \\
& a_3 & b_3 & \ddots & \\
& & \ddots & \ddots & c_{n-1} \\
0 & & & a_n & b_n
\end{pmatrix}
$$

空のセル(& だけで要素を書かない部分)は0を意味します。行列の左下と右上に明示的に $0$ を書いておくと、読者にとってわかりやすくなります。\ddots を2つ斜めに重ねることで、副対角線(対角の1つ上と1つ下)に沿って成分が並ぶ帯構造を表現できている点に注目してください。

こうした「非ゼロ要素の位置に規則がある行列」を、実際に非ゼロ成分の分布として描くと、省略記号が何を伝えようとしているのかが分かります。

対角行列・帯行列・三角行列の構造

明るいところが非ゼロ、暗いところがゼロです。左の対角行列は対角線上の1本だけ、中央の三重対角行列は対角とその両隣の3本、右の上三角行列は右上の三角領域が埋まっています。

省略記号の役割は、この「模様」を数式の紙面上で再現することにあります。対角行列なら \ddots を1本、三重対角なら \ddots を3本ずらして並べ、三角行列なら空いた側に大きな $0$ をひとつ置く——というように、図の模様と記法が対応しています。数値解析で扱う行列の多くはこのような構造を持つので、書き方を押さえておくと論文やレポートで役立ちます。

省略記号を使いこなせば、どんな大きさの行列でも構造を明確に伝えることができます。次は、行列をブロックに分けて書く方法を見ていきましょう。

ブロック行列の書き方

大きな行列は、小さな行列(ブロック)の組み合わせとして表現することがよくあります。たとえば、状態空間モデルや制御工学では、システム行列をブロック行列として書くのが一般的です。

ブロック行列の考え方

左が $2 \times 2$ のブロック行列で、各要素 $A, B, C, D$ 自体が行列です。右はそれを成分レベルまで展開したもので、色がどのブロックに由来するかを示しています。$A$ が $2\times2$、$B$ が $2\times1$、$C$ が $1\times2$、$D$ が $1\times1$ なら、全体は $3\times3$ になります。

ブロックに分けて書く利点は、サイズの大きな行列でも構造が読めることです。たとえば $\begin{pmatrix} A & 0 \\ 0 & D \end{pmatrix}$ というブロック対角の形を見れば、2つの独立な系が並んでいるだけだと即座に分かります。図の破線は説明のために引いたもので、通常は描きません(引きたい場合は後述の array 環境を使います)。

基本的なブロック行列

ブロック行列は、太字の行列記号を要素として配置するだけで表現できます。

$$ \bm{M} = \begin{pmatrix} \bm{A} & \bm{B} \\ \bm{C} & \bm{D} \end{pmatrix} $$

$$
\bm{M} = \begin{pmatrix}
\bm{A} & \bm{B} \\
\bm{C} & \bm{D}
\end{pmatrix}
$$

各ブロック $\bm{A}, \bm{B}, \bm{C}, \bm{D}$ はそれぞれ行列であり、全体として1つの大きな行列 $\bm{M}$ を構成しています。

具体的な応用:状態空間モデル

制御工学における状態空間モデルでは、次のようなブロック行列が登場します。

$$ \begin{pmatrix} \dot{\bm{x}} \\ \bm{y} \end{pmatrix} = \begin{pmatrix} \bm{A} & \bm{B} \\ \bm{C} & \bm{D} \end{pmatrix} \begin{pmatrix} \bm{x} \\ \bm{u} \end{pmatrix} $$

$$
\begin{pmatrix}
\dot{\bm{x}} \\
\bm{y}
\end{pmatrix}
=
\begin{pmatrix}
\bm{A} & \bm{B} \\
\bm{C} & \bm{D}
\end{pmatrix}
\begin{pmatrix}
\bm{x} \\
\bm{u}
\end{pmatrix}
$$

このように、ブロック行列を使うことでシステムの構造が視覚的にわかりやすくなります。

零行列と単位行列を含むブロック行列

ブロック行列の中に零行列 $\bm{O}$ や単位行列 $\bm{I}$ を含める書き方もよく使います。

$$ \begin{pmatrix} \bm{I} & \bm{O} \\ \bm{O} & \bm{A} \end{pmatrix} $$

このような構造は、行列の直和(direct sum)を表す場面などで頻出します。

区切り線つきのブロック行列

ブロックの境界に区切り線を入れたい場合は、後述する array 環境を使います。たとえば $2\times2$ のブロック構造を縦横の線で明示すると、次のようになります。

$$ \left(\begin{array}{cc|c} a_{11} & a_{12} & b_1 \\ a_{21} & a_{22} & b_2 \\ \hline c_1 & c_2 & d \end{array}\right) $$

$$
\left(\begin{array}{cc|c}
a_{11} & a_{12} & b_1 \\
a_{21} & a_{22} & b_2 \\
\hline
c_1 & c_2 & d
\end{array}\right)
$$

縦線は列指定の {cc|c}| で、横線は行の間に置いた \hline で引いています。区切り線つきブロック行列は、まさに次に説明する拡大係数行列と同じ仕組みです。

ブロック行列の書き方がわかったところで、次は連立方程式を解くときに使う拡大係数行列の書き方を紹介します。

拡大係数行列(augmented matrix)

連立一次方程式をガウスの消去法で解くとき、係数行列と右辺ベクトルを1つにまとめた「拡大係数行列」を使います。拡大係数行列では、係数部分と右辺部分を縦線(パーティション)で区切って表記します。

拡大係数行列と掃き出し

左の連立方程式 $2x + y = 5$, $x – 3y = -1$ を、係数と右辺だけ抜き出して行列にしたのが中央です。縦線の左が係数行列、右が右辺ベクトルで、この線があることで「どこまでが係数か」が読み手に伝わります。

右は掃き出し(行基本変形)を進めて左半分を単位行列にした簡約形で、そのまま $x = 2$, $y = 1$ と読めます。実際に代入すると $2\cdot2 + 1 = 5$、$2 – 3\cdot1 = -1$ となり、元の方程式を満たしています。

なお pmatrixbmatrix には縦線を入れる機能がないので、拡大係数行列を書くには次に説明する array 環境を使います。

array環境を使った方法

拡大係数行列を書く最も確実な方法は、array 環境を使うことです。列の区切りに | を入れることで縦線を引くことができます。

$$ \left(\begin{array}{ccc|c} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 \end{array}\right) $$

$$
\left(\begin{array}{ccc|c}
1 & 2 & 3 & 4 \\
5 & 6 & 7 & 8 \\
9 & 10 & 11 & 12
\end{array}\right)
$$

ここでの {ccc|c} は「中央揃え(center)の列が3つ、縦線、中央揃えの列が1つ」を意味しています。\left(\right) で括弧のサイズを自動調整しています。角括弧で囲みたい場合は \left[\right] に変えるだけです。

行の簡約操作の表記

ガウスの消去法では、行の操作を右側に注釈として書くことがあります。

$$ \left(\begin{array}{ccc|c} 1 & 2 & 3 & 4 \\ 0 & -4 & -8 & -12 \\ 0 & -8 & -16 & -24 \end{array}\right) $$

2行目は「$R_2 \leftarrow R_2 – 5R_1$」、3行目は「$R_3 \leftarrow R_3 – 9R_1$」のように行操作を示します。簡約の過程を複数の行列を矢印 \to でつないで並べると、計算の流れが読者に伝わりやすくなります。

$$ \left(\begin{array}{cc|c} 1 & 2 & 5 \\ 3 & 4 & 6 \end{array}\right) \to \left(\begin{array}{cc|c} 1 & 2 & 5 \\ 0 & -2 & -9 \end{array}\right) $$

拡大係数行列は線形代数の基礎で頻出する表記ですので、しっかり書けるようにしておきましょう。次に、行列をインライン(文中)で書く方法について解説します。

インライン行列:smallmatrix

文章の中に小さな行列を埋め込みたい場合があります。通常の pmatrix 環境を文中で使うと行間が大きく広がってしまうため、smallmatrix 環境を使います。

たとえば、「行列 $\left(\begin{smallmatrix} a & b \\ c & d \end{smallmatrix}\right)$ の行列式は $ad – bc$ である」のように、文中に自然に行列を挿入できます。

行列 $\left(\begin{smallmatrix} a & b \\ c & d \end{smallmatrix}\right)$ の行列式は $ad - bc$ である。

smallmatrix は要素のサイズが小さくなり、行間も詰まるため、本文の流れを崩しません。ただし smallmatrix 自体は括弧を持たないため、\left( \right) などで自分で括弧を補う必要がある点に注意してください。要素が多い行列をインラインで書くと見づらくなるため、$2 \times 2$ や $3 \times 1$ 程度の小さな行列に限定するのがよいでしょう。

インライン行列の使い方を押さえたところで、次はPythonで計算した行列をそのままLaTeXに貼り付ける方法を見ていきます。

Pythonで計算した行列をLaTeXに変換する

ここまでは「人が手で行列を書く」話でしたが、実務では「Pythonで計算した結果の行列を、そのままレポートやスライドのLaTeXに貼りたい」という場面が非常に多くあります。要素を一つずつ手打ちするとミスの温床になるので、ツールに任せてしまうのが賢明です。

SymPyで latex() を使う

SymPyの latex() 関数を使うと、行列オブジェクトをLaTeXソースに変換できます。まずは次のコードを実行してみましょう。

import sympy as sp

# シンボリックな2x2行列を作る
a, b, c, d = sp.symbols('a b c d')
A = sp.Matrix([[a, b],
               [c, d]])

# 行列・逆行列・行列式をLaTeXソースに変換
print("A      =", sp.latex(A))
print("A^{-1} =", sp.latex(A.inv()))
print("det A  =", sp.latex(A.det()))

このコードを実行すると、次のようなLaTeXソースが文字列として出力されます。

A      = \left[\begin{matrix}a & b\\c & d\end{matrix}\right]
A^{-1} = \left[\begin{matrix}\frac{d}{a d - b c} & - \frac{b}{a d - b c}\\- \frac{c}{a d - b c} & \frac{a}{a d - b c}\end{matrix}\right]
det A  = a d - b c

出力から、A.inv() が逆行列の公式(各成分を $ad-bc$ で割った形)をきちんと展開してくれていること、A.det() が $ad-bc$ というおなじみの行列式を返していることが読み取れます。この文字列を $$ ... $$ で囲んでそのまま記事や論文に貼れば、手打ちなしで正確な行列が表示できるわけです。括弧の種類を角括弧から丸括弧に変えたいときは、出力の \left[ ... \right]\left( ... \right) に置換すればよいだけです。

NumPyの数値行列をLaTeXの表に整形する

数値計算の結果(NumPy配列)をLaTeXの bmatrix に整形したい場合は、簡単なヘルパー関数を書くと便利です。

import numpy as np

def to_bmatrix(M, fmt="{:.2f}"):
    """NumPy配列をLaTeXのbmatrix文字列に変換する"""
    rows = [" & ".join(fmt.format(x) for x in row) for row in M]
    body = " \\\\\n".join(rows)
    return "\\begin{bmatrix}\n" + body + "\n\\end{bmatrix}"

# 例: 回転行列(30度)を生成して変換
theta = np.deg2rad(30)
R = np.array([[np.cos(theta), -np.sin(theta)],
              [np.sin(theta),  np.cos(theta)]])
print(to_bmatrix(R))

実行すると、次のようなLaTeXソースが得られます。

\begin{bmatrix}
0.87 & -0.50 \\
0.50 & 0.87
\end{bmatrix}

出力から、$\cos 30^\circ \approx 0.87$、$\sin 30^\circ = 0.50$ が正しく行列の各成分に入っていることが確認できます。小数点以下の桁数は fmt 引数で調整できるので、レポートの体裁に合わせて "{:.4f}" などに変えれば桁数を増やせます。手作業のコピペで桁を打ち間違えるリスクがなくなるのが、この方法の最大の利点です。

行列を図として可視化する

行列の「中身」を数値で見るだけでなく、ヒートマップとして可視化すると構造が直感的に把握できます。スパース行列や対角優位な行列では特に有効です。

import numpy as np
import matplotlib.pyplot as plt

# 三重対角行列を作る(数値解析で頻出)
n = 8
T = np.diag(2.0 * np.ones(n)) \
    + np.diag(-1.0 * np.ones(n - 1), k=1) \
    + np.diag(-1.0 * np.ones(n - 1), k=-1)

plt.figure(figsize=(5, 5))
plt.imshow(T, cmap="coolwarm")
plt.colorbar(label="value")
plt.title("Tridiagonal matrix (heatmap)")
plt.xlabel("column index")
plt.ylabel("row index")
plt.tight_layout()
plt.show()

このヒートマップを見ると、対角成分(値 $2$)が赤く、その両隣の副対角成分(値 $-1$)が青く帯状に並び、それ以外はすべて0で白くなっていることが一目でわかります。先ほどLaTeXの省略記号で書いた三重対角行列 $\bm{T}$ の「帯構造」が、数値の世界でも同じ形で現れていることが確認できます。LaTeXで構造を記述し、Pythonで構造を可視化する——この両輪で行列を扱えるようになると、理論と実装の橋渡しがぐっとスムーズになります。

PythonとLaTeXの連携を押さえたところで、Webで数式を表示する際に重要なKaTeXとの互換性について確認しておきましょう。

LaTeX と KaTeX の互換性に関する注意点

本ブログではKaTeX(LaTeXのサブセットをブラウザ上でレンダリングするライブラリ)を使用しています。行列環境に関して、KaTeXはほぼすべての主要な機能をサポートしていますが、いくつか注意点があります。

サポートされている環境

以下の行列環境はKaTeXで問題なく使用できます。

  • matrix, pmatrix, bmatrix, Bmatrix, vmatrix, Vmatrix
  • smallmatrix
  • array(縦線 |、横線 \hline ともに利用可)

注意が必要な点

  1. \bordermatrix: 行列の行や列にラベルを付ける \bordermatrix コマンドは、KaTeXではサポートされていません。代わりに array 環境で行・列のラベル列を自作して工夫する必要があります。

  2. amsmath パッケージ: LaTeXでは \usepackage{amsmath} が必要ですが、KaTeXではこのパッケージの機能がデフォルトで利用可能です。特別な読み込みは不要です。

  3. \hdotsfor: 複数列にまたがるドットを表す \hdotsfor コマンドは、KaTeXではサポートされていない場合があります。代わりに \cdots を適切なセルに配置しましょう。

  4. 太字ベクトル \bm: 本ブログでは \bm{x} で太字ベクトル・行列を表しますが、環境によっては \boldsymbol{x} を使う必要があります。表示が崩れる場合は \boldsymbol への置き換えを試してください。

ブログやWebサイトでKaTeXを使う場合は、上記の点に気をつければ、本記事で紹介した行列の書き方はほぼそのまま使えます。

では最後に、行列をLaTeXで書くときによくある間違いとその対処法を紹介します。

よくある間違いとTips

つまずきやすい4点を先に並べておきます。

行列でよくある4つの間違い

上2つは行列の構造にかかわるもの、下2つは組版の細部にかかわるものです。特に3番目の「最終行に \\ が残る」は、コンパイルは通るのに行列の下に余分な空行ができるという、気づきにくいタイプの不具合です。以下、それぞれを詳しく見ていきます。

間違い1:列の区切りを間違える

行列環境で最もよくある間違いは、列の区切りにカンマやスペースを使ってしまうことです。

% NG: カンマ区切り
\begin{pmatrix}
1, 2 \\
3, 4
\end{pmatrix}

% OK: & 区切り
\begin{pmatrix}
1 & 2 \\
3 & 4
\end{pmatrix}

行列環境では必ず & で列を区切りましょう。

間違い2:行数と列数の不一致

行ごとに & の数が異なると、コンパイルエラーが発生します。

% NG: 1行目は2列、2行目は3列
\begin{pmatrix}
1 & 2 \\
3 & 4 & 5
\end{pmatrix}

% OK: すべての行で列数を揃える
\begin{pmatrix}
1 & 2 & 0 \\
3 & 4 & 5
\end{pmatrix}

すべての行で & の数を揃えるように気をつけてください。KaTeXでは列数が合わないと数式全体が赤字のエラー表示になるので、すぐに気づけます。

間違い3:最終行に \\ を付ける

行列の最後の行には \\ を付けないのが基本です。付けると余分な空行が入ったり、環境によってはエラーになることがあります。

% 非推奨: 最終行に \\ がある
\begin{pmatrix}
1 & 2 \\
3 & 4 \\
\end{pmatrix}

% 推奨: 最終行に \\ はなし
\begin{pmatrix}
1 & 2 \\
3 & 4
\end{pmatrix}

間違い4:上付き文字の波括弧を省略する

転置や逆行列の上付き文字で波括弧を省略すると、意図しない表示になります。

% NG: 1がベースラインに落ちる
\bm{A}^-1

% OK: 波括弧で囲む
\bm{A}^{-1}

上付き・下付きに2文字以上を載せるときは、必ず {} でまとめる、と覚えておきましょう。

Tips1:行列の要素に数式を入れる

行列の各要素には、単なる数値だけでなく数式も書けます。

$$ \bm{J} = \begin{pmatrix} \dfrac{\partial f_1}{\partial x_1} & \dfrac{\partial f_1}{\partial x_2} \\[6pt] \dfrac{\partial f_2}{\partial x_1} & \dfrac{\partial f_2}{\partial x_2} \end{pmatrix} $$

この例はヤコビ行列(Jacobian matrix)で、各要素が偏微分になっています。分数を含む行列は行間が窮屈になりがちなので、\\[6pt] のように改行に高さを指定すると見やすくなります。また分数には \frac より大きく表示される \dfrac を使うと、要素として読みやすくなります。

Tips2:行列の積を並べて書く

複数の行列の積を1行で書くこともよくあります。

$$ \bm{C} = \bm{A}\bm{B} = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} \begin{pmatrix} 5 & 6 \\ 7 & 8 \end{pmatrix} = \begin{pmatrix} 19 & 22 \\ 43 & 50 \end{pmatrix} $$

$$
\bm{C} = \bm{A}\bm{B} =
\begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}
\begin{pmatrix} 5 & 6 \\ 7 & 8 \end{pmatrix}
= \begin{pmatrix} 19 & 22 \\ 43 & 50 \end{pmatrix}
$$

行列の積を視覚的に示す場合には、このように計算結果まで並べて書くとわかりやすくなります。

Tips3:行列のサイズ表記

行列のサイズを明示するときは、下付き文字や集合の記号を使います。

$$ \bm{A}_{m \times n}, \quad \bm{A} \in \mathbb{R}^{m \times n} $$

$$
\bm{A}_{m \times n}, \quad \bm{A} \in \mathbb{R}^{m \times n}
$$

$\mathbb{R}^{m \times n}$ は「$m \times n$ の実数行列全体の集合」を意味し、行列の定義域を明示するときに使います。複素行列なら $\mathbb{C}^{m\times n}$ とします。掛け算記号は *x ではなく \times($\times$)を使う点に注意してください。

まとめ

本記事では、LaTeXで行列を書くための方法を、検索でよくある疑問(行列・転置・行列式・逆行列の書き方)に答える形で基本から応用まで解説しました。

  • 共通ルールは「列は &、行は \\」の2つだけ。あとは括弧を選ぶだけ
  • matrix系環境matrix, pmatrix, bmatrix, vmatrix 等)で括弧の種類を使い分ける
  • 転置\bm{A}^{\top}\bm{A}^{\mathsf{T}} が推奨。素の ^T は斜体になり変数と紛らわしい
  • 逆行列\bm{A}^{-1}行列式\detvmatrixトレース\operatorname{tr}
  • 省略記号\cdots, \vdots, \ddots)で大型行列を簡潔に表現する
  • array環境で拡大係数行列の縦線・横線を引く
  • smallmatrixで文中に小さな行列を埋め込む
  • SymPy/NumPyを使えば計算済みの行列を手打ちなしでLaTeXに変換できる

行列の表記は線形代数をはじめ、制御工学、機械学習、数値解析など幅広い分野で必要になります。本記事の逆引き早見表と実例を手元に置いておけば、ほとんどの場面に対応できるでしょう。

次のステップとして、以下の記事も参考にしてください。

関連記事:LaTeX数式記法シリーズ

LaTeX数式記法 完全ガイド(実用チートシート)
記号・環境・コマンドを一覧で引けるチートシート
画像なし
LaTeXで太字ベクトル(bm・boldsymbol・vec)
bm・boldsymbol・mathbfの違いと使い分け
画像なし
LaTeXで内積・外積(langle・cdot・times)
3大内積記法と分野別の使い分けを網羅
画像なし
LaTeXで絶対値・ノルム(|x|・lVert)
縦線1本と2本の使い分けとサイズ調整
LaTeXで勾配∇・ベクトル解析記号
nabla・発散・回転・ラプラシアンの書き方