#10 ふれてみよう高校数学 離散数学・数論

行列の基本——数値の表と線形変換の入り口

行列とは

「スーパーの売上表を思い浮かべてください」——月曜から日曜の7列、商品Aから商品Cの3行。このように数値を行と列に整然と並べた「表」が行列です。行列は「数の表」ですが、足し算・掛け算のルールを与えることで強力な道具になります。

行列(ぎょうれつ、matrix)とは、数を(横)と(縦)に矩形状に並べたものです。

A=(123456)A = \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{pmatrix}

これは 2233 列の行列で、2×32 \times 3 行列と表記します。(i,j)(i, j) 成分(iijj 列の要素)を aija_{ij} と書きます。

上の例では a12=2a_{12} = 2(第1行第2列)、a23=6a_{23} = 6(第2行第3列)——「行が縦の番号、列が横の番号」。


なぜ行列が重要か

「行列は現代技術の縁の下の力持ち」——スマートフォンのゲーム画面が滑らかに動いたり、AIが画像を認識したりする裏側で、行列の計算が動いています:

  • 線形変換:回転・拡大・せん断などの幾何変換
  • 連立方程式:係数を行列にまとめて系統的に解く
  • グラフ理論:隣接行列でグラフを表現
  • 機械学習:ニューラルネットワークの重みは行列
  • コンピュータグラフィクス:3D変換は 4×44 \times 4 行列で実装

行列の視覚化

行列のグリッド表示:3種類の行列を並べて比較しよう。左が一般の行列 A、中央が単位行列 I(対角成分だけが 1——掛け算の『1』の役割)、右が零行列 O(全部ゼロ——足し算の『0』の役割)。対角成分が黄色く光っているのが単位行列の特徴。
var i, j, cellW, cellH, ox, oy;

var matA = [
[2, -1, 3],
[0, 5, -2],
[4, 1, 7]
];

var matI = [
[1, 0, 0],
[0, 1, 0],
[0, 0, 1]
];

var matZ = [
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]
];

var t = 0;

function drawMatrix(mat, label, ox, oy, highlight) {
var cw = 50, ch = 44;
var mw = mat[0].length, mh = mat.length;

ctx.fillStyle = '#334155';
ctx.font = '13px monospace';
ctx.textAlign = 'center';
ctx.fillText(label, ox + (mw * cw) / 2, oy - 8);

// brackets
ctx.strokeStyle = '#60a5fa';
ctx.lineWidth = 2;
ctx.beginPath();
ctx.moveTo(ox + 5, oy); ctx.lineTo(ox, oy); ctx.lineTo(ox, oy + mh * ch); ctx.lineTo(ox + 5, oy + mh * ch);
ctx.moveTo(ox + mw*cw - 5, oy); ctx.lineTo(ox + mw*cw, oy); ctx.lineTo(ox + mw*cw, oy + mh*ch); ctx.lineTo(ox + mw*cw - 5, oy + mh*ch);
ctx.stroke();

for (i = 0; i < mh; i++) {
  for (j = 0; j < mw; j++) {
    var cx = ox + j * cw + cw/2;
    var cy = oy + i * ch + ch/2;
    var isHighlight = highlight && i === j;

    if (isHighlight) {
      var pulse = 0.5 + 0.5 * Math.sin(t * 0.05 + i * 0.8);
      ctx.fillStyle = 'rgba(251,191,36,' + (0.15 + pulse * 0.25) + ')';
      ctx.fillRect(ox + j*cw + 2, oy + i*ch + 2, cw - 4, ch - 4);
      ctx.fillStyle = '#fbbf24';
    } else {
      ctx.fillStyle = '#e2e8f0';
    }
    ctx.font = 'bold 16px monospace';
    ctx.textAlign = 'center';
    ctx.fillText(mat[i][j], cx, cy + 5);
  }
}
}

function loop() {
ctx.clearRect(0, 0, W, H);
t++;

drawMatrix(matA, '行列 A(3×3)', 30, 60, false);
drawMatrix(matI, '単位行列 I₃', 230, 60, true);
drawMatrix(matZ, '零行列 O', 430, 60, false);

ctx.fillStyle = '#94a3b8';
ctx.font = '12px monospace';
ctx.textAlign = 'left';
ctx.fillText('単位行列:対角成分が 1、他が 0。A×I = I×A = A', 20, 280);
ctx.fillText('零行列:全成分が 0。A+O = A', 20, 298);
ctx.fillStyle = '#fbbf24';
ctx.fillText('★ 対角成分(i=j)', 20, 316);

requestAnimationFrame(loop);
}
loop();

行列の型(形)

「行列にはさまざまな型がある」——それぞれ特別な名前と意味を持ちます:

条件
m×nm \times n 行列mmnn一般の行列
正方行列m=nm = n3×33 \times 3
行ベクトルm=1m = 11×n1 \times n
列ベクトルn=1n = 1m×1m \times 1
零行列 OO全成分が 00
単位行列 InI_n対角が 11、他が 00
対角行列非対角成分が 00

行列の演算

スカラー倍

「表の全部の数を何倍かする」——全成分を同じ数で掛けるだけです。

cA=c(aij)=(caij)c \cdot A = c \cdot (a_{ij}) = (c \cdot a_{ij})

全成分を cc 倍するだけです。

3×(1234)=(36912)3 \times \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} = \begin{pmatrix} 3 & 6 \\ 9 & 12 \end{pmatrix}

行列の和

「同じ型の表どうしを足す」——対応する位置の数を足すだけです。同じ型の行列どうしのみ可能——「行数と列数が同じでないと足せない」:

A+B=(aij+bij)A + B = (a_{ij} + b_{ij})

(1234)+(5678)=(681012)\begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} + \begin{pmatrix} 5 & 6 \\ 7 & 8 \end{pmatrix} = \begin{pmatrix} 6 & 8 \\ 10 & 12 \end{pmatrix}

転置行列

「表の行と列を入れ替える」——縦横を反転した行列が転置行列 ATA^T です:

(AT)ij=Aji(A^T)_{ij} = A_{ji}

(123456)T=(142536)\begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{pmatrix}^T = \begin{pmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \end{pmatrix}


特殊な正方行列

「正方行列には特別な種類がたくさんある」——それぞれ応用場面で重要な意味を持ちます:

名称条件
対称行列AT=AA^T = Aaij=ajia_{ij} = a_{ji}
交代行列AT=AA^T = -Aaij=ajia_{ij} = -a_{ji}
直交行列ATA=IA^T A = I(回転・反射)
上三角行列i>ji > j のとき aij=0a_{ij} = 0
下三角行列i<ji < j のとき aij=0a_{ij} = 0

行列の加法の性質

「足し算のルールは普通の数と同じ」——行列でも交換・結合などの法則が成り立ちます:

性質
交換法則A+B=B+AA + B = B + A
結合法則(A+B)+C=A+(B+C)(A + B) + C = A + (B + C)
零行列A+O=AA + O = A
逆行列(加法)A+(A)=OA + (-A) = O
スカラー分配(c+d)A=cA+dA(c + d)A = cA + dA

まとめ

  • 行列:数を mmnn 列に並べたもの。(i,j)(i,j) 成分 aija_{ij}——「数の表」
  • 零行列:全成分 00。加法の単位元——「足しても変わらない表」
  • 単位行列 InI_n:対角が 11、他が 00。乗法の単位元(次回)——「掛けても変わらない特別な行列」
  • スカラー倍・加法:同型行列どうしで成分ごとに計算——「対応する場所の数を計算するだけ」
  • 転置:行と列を入れ替える操作——「表を90度回転させるイメージ」

次回は行列の積——行列同士の掛け算と、なぜ ABBAAB \neq BA なのかを学びます。