MatrixCalc

行列の掛け算の計算機

50×50 までの行列どうしの積を求め、各成分を内積として展開して表示します。加減算、スカラー倍、転置、整数乗にも対応します。

行列 A
: 3
: 3
行列 B
: 3
: 3
演算
結果
演算を選択するとここに結果が表示されます。エラーメッセージもここに表示されます。

ヒント: サイズを調整してください (最大 50×50)。A×B は Aの列数 = Bの行数が必要です。行列式/逆行列/トレース/べき乗は正方行列である必要があります。

React, Tailwind & shadcn/ui. No external math deps. — 日本語

上の欄に行列 A と B を入力し、A × B を押してください。大きさが合わないときはボタンが 無効になり、どの次元が一致すべきかが表示されます。計算過程を開けば、各成分が積の和として展開されて いる様子が見られます。手で書き下すときとまったく同じ形です。同じタブには加算・減算・転置もあり、スカラータブとべき乗タブが k·AAⁿ を 受け持ちます。以下ではそのすべてを説明します。

次元の規則

m×n の行列に n×p の行列を掛けるには、内側の二つの数が等しくなければ なりません。A の列数と B の行数です。結果は外側の二つの数をとって m×p になります。A × B が完全に成立する一方で B × A がそもそも定義されない、ということが 起きるのはこのためです。

行と列の規則

積の (i, j) 成分は、A の第 i 行と B の第 j 列の内積です。

c(i,j) = a(i,1)·b(1,j) + a(i,2)·b(2,j) + … + a(i,n)·b(n,j)

12
34
×
56
78
=
1922
4350

最初の成分を確かめてみましょう。1·5 + 2·7 = 19 です。四つの成分はそれぞれが小さな内積であり、計算機 は計算過程のパネルにその四つの展開をすべて書き出します。

AB は BA ではない

行列の積は可換ではありませんBA がそもそも定義されないことも多く、 両方が存在する場合でもたいてい別の行列になります。変換の積の順序を入れ替えれば、起きることは本当に 変わります。回転してから鏡映するのと、鏡映してから回転するのとは同じではありません。同じ組で両方の ボタンを押して比べてみてください。

もう一つ注意があります。A·B = 0 であっても A や B が零行列とは限りません。 行列には、普通の数と違って零因子があります。

それでも成り立つこと

  • 結合法則:(A·B)·C = A·(B·C)
  • 分配法則:A·(B + C) = A·B + A·C
  • 単位元:I·A = A·I = A
  • 転置は順序を逆にする:(A·B)ᵀ = Bᵀ·Aᵀ
  • 行列式は掛かる:det(A·B) = det(A)·det(B)
  • 階数は増えない:rank(A·B) ≤ min(rank(A), rank(B))

加算・減算・スカラー倍

加算と減算は、期待どおりに振る舞う演算です。成分ごとに行われ、意外なところはありません。二つの行列は 同じ大きさでなければならず——2×3 はほかの 2×3 としか足せません——結果もその大きさを保ちます。

12
34
+
56
78
=
68
1012

位置ごとに動くため、加算はすでに知っている算術をそのまま受け継ぎます。A + B = B + A であり、三つの和の まとめ方も結果に影響しません。ここが掛け算との本当の対比です。減算は逆元を足すことなので、A − B は A + (−1)·B であり、5 − 3 と 3 − 5 が違うのと同じ普通の意味で順序が効きます。

スカラー倍は各成分を同じ数で倍し、形についての制約はまったくありません。ここで一つ、ほとんどの人が 驚く帰結があります。行列を k 倍しても、行列式は k 倍になりません。n×n の行列では det(k·A) = kⁿ·det(A) です。n 行のそれぞれが倍されるので、行列式は行の数だけ掛かるから です。3×3 の行列を 2 倍すると、行列式は 8 倍になります。トレースは単なる和なので、予想どおりに 振る舞います。tr(k·A) = k·tr(A) です。

転置

転置は行列を主対角線で折り返す操作です。第 i 行第 j 列の成分が第 j 行第 i 列へ移ります。m×n は n×m に なるので、この演算はどんな形にも定義されています。列ベクトルは行ベクトルになり、内積を xᵀy と書くのが標準なのはそのためです。

123
456
ᵀ =
14
25
36

覚えておく価値のある等式が三つあります。二度転置すればもとに戻ります。(Aᵀ)ᵀ = A です。和の転置は 分配されます。(A + B)ᵀ = Aᵀ + Bᵀ です。しかし積の転置は順序を逆にします。 (A·B)ᵀ = Bᵀ·Aᵀ であって Aᵀ·Bᵀ ではありません。この逆転は形が強いるものです。A が 2×3、B が 3×4 なら、 Aᵀ は 3×2、Bᵀ は 4×3 となり、次元が合うのは Bᵀ·Aᵀ だけです。自分自身の転置と等しい行列は対称行列と呼ばれ、その性質は際立って良好です。固有値は必ず実数になり、コレスキー分解が適用できるのもこの種の行列です。

べき乗

Aⁿ は A を自分自身と n 回掛けることを意味し、正方行列にのみ意味を持ちます。A⁰ は零行列ではなく単位行列で、 は A そのものです。

11
01
² =
12
01
、一般に Aⁿ =
1n
01

2 乗は成分ごとの操作ではありません。右上の成分は 1² = 1 ではなく 1·1 + 1·1 = 2 です。計算機は繰り返し 2 乗によるべき乗を使うため、A¹⁶ は 15 回ではなく 4 回の掛け算で済みます。べき乗は過程が繰り返される ところならどこにでも現れます。マルコフ連鎖で P が 1 歩の推移確率を保持していれば、Pⁿ は n 歩の推移確率 を保持します。隣接行列では、Aⁿ の (i, j) 成分は頂点 i から j への長さ n の経路の数を数えています。 指数が非常に大きいときは対角化してください。A = P·D·P⁻¹ で D が対角なら Aⁿ = P·Dⁿ·P⁻¹ となり、これは固有値から始まります。

よくある誤り

  • 成分ごとに掛ける。行列の積は a(i,j)·b(i,j) ではありません。その演算はアダマール積として存在しますが、A × B が意味するものではありません。
  • AB = BA と思い込む。行列の積は可換ではありません。
  • 因子が零だと結論する。A·B = 0 は A や B が零行列であることを意味しません。
  • (A·B)ᵀ = Aᵀ·Bᵀ と書く。順序は逆になります。転置で最も多い取り違えです。
  • 各成分をべき乗する。A² は A·A であって、成分を 2 乗した行列ではありません。両者が一致するのは対角行列のときだけです。
  • 行列にスカラーを足す。A + 3 に意味はありません。対角に 3 を足したいなら 3·I を足してください。

よくある質問

二つの行列はどんなときに掛けられますか。
一つ目の列数と二つ目の行数が等しいときです。2×3 は 3×4 に掛けられ、結果は 2×4 になります。
なぜ A×B と B×A は違うのですか。
成分が一つ目の行と二つ目の列の組み合わせでできているからです。順序を入れ替えるとその組み合わせが変わり、しばしば結果のサイズまで変わります。
アダマール積とは何ですか。
同じサイズの行列どうしを成分ごとに掛ける演算です。行列の積とは別のもので、線形代数で掛け算といえば普通はこちらを指しません。
行列とベクトルはどう掛けますか。
列ベクトルは n×1 の行列です。B を 1 列に設定すれば、A×B で求める結果が得られます。
大きさの違う行列を足せますか。
足せません。加算と減算は位置ごとに行われ、どの位置も両方の行列に存在していなければならないため、次元が完全に一致している必要があります。
3×3 の行列を 2 倍したら行列式が 8 倍になったのはなぜですか。
スカラーが 3 行それぞれに掛かり、行列式は行の数だけ掛けられるからです。一般に det(k·A) = kⁿ·det(A) です。

ほかの計算機