#10 ふれてみよう高校数学 離散数学・数論
行列の基本——数値の表と線形変換の入り口
行列とは
「スーパーの売上表を思い浮かべてください」——月曜から日曜の7列、商品Aから商品Cの3行。このように数値を行と列に整然と並べた「表」が行列です。行列は「数の表」ですが、足し算・掛け算のルールを与えることで強力な道具になります。
行列(ぎょうれつ、matrix)とは、数を行(横)と列(縦)に矩形状に並べたものです。
これは 行 列の行列で、 行列と表記します。 成分( 行 列の要素)を と書きます。
上の例では (第1行第2列)、(第2行第3列)——「行が縦の番号、列が横の番号」。
なぜ行列が重要か
「行列は現代技術の縁の下の力持ち」——スマートフォンのゲーム画面が滑らかに動いたり、AIが画像を認識したりする裏側で、行列の計算が動いています:
- 線形変換:回転・拡大・せん断などの幾何変換
- 連立方程式:係数を行列にまとめて系統的に解く
- グラフ理論:隣接行列でグラフを表現
- 機械学習:ニューラルネットワークの重みは行列
- コンピュータグラフィクス:3D変換は 行列で実装
行列の視覚化
行列のグリッド表示: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(); 行列の型(形)
「行列にはさまざまな型がある」——それぞれ特別な名前と意味を持ちます:
| 型 | 条件 | 例 |
|---|---|---|
| 行列 | 行 列 | 一般の行列 |
| 正方行列 | ||
| 行ベクトル | ||
| 列ベクトル | ||
| 零行列 | 全成分が | — |
| 単位行列 | 対角が 、他が | — |
| 対角行列 | 非対角成分が | — |
行列の演算
スカラー倍
「表の全部の数を何倍かする」——全成分を同じ数で掛けるだけです。
全成分を 倍するだけです。
行列の和
「同じ型の表どうしを足す」——対応する位置の数を足すだけです。同じ型の行列どうしのみ可能——「行数と列数が同じでないと足せない」:
転置行列
「表の行と列を入れ替える」——縦横を反転した行列が転置行列 です:
特殊な正方行列
「正方行列には特別な種類がたくさんある」——それぞれ応用場面で重要な意味を持ちます:
| 名称 | 条件 |
|---|---|
| 対称行列 | () |
| 交代行列 | () |
| 直交行列 | (回転・反射) |
| 上三角行列 | のとき |
| 下三角行列 | のとき |
行列の加法の性質
「足し算のルールは普通の数と同じ」——行列でも交換・結合などの法則が成り立ちます:
| 性質 | 式 |
|---|---|
| 交換法則 | |
| 結合法則 | |
| 零行列 | |
| 逆行列(加法) | |
| スカラー分配 |
まとめ
- 行列:数を 行 列に並べたもの。 成分 ——「数の表」
- 零行列:全成分 。加法の単位元——「足しても変わらない表」
- 単位行列 :対角が 、他が 。乗法の単位元(次回)——「掛けても変わらない特別な行列」
- スカラー倍・加法:同型行列どうしで成分ごとに計算——「対応する場所の数を計算するだけ」
- 転置:行と列を入れ替える操作——「表を90度回転させるイメージ」
次回は行列の積——行列同士の掛け算と、なぜ なのかを学びます。