行列式計算機

次へ

正方行列の行列式は、その行列が正則かどうか(行列式が0でない)、符号付きの体積をどれだけ拡大縮小するか、向きを反転させるかどうかを示す単一のスカラー値です。2×2から10×10までの行列を入力すると、小さな行列には完全な余因子展開、大きな行列にはLU分解の手順とともにdet(A)が返されるので、計算を1行ずつ追うことができます。

行列式の計算方法

  1. 1

    正方行列を入力する

    行数 = 列数。小数や負の数も入力できます。

  2. 2

    方法を選ぶ

    余因子展開(小さな行列向けで、仕組みがよくわかる)またはLU分解(大きな行列向けで高速)。

  3. 3

    行列式を読み取る

    符号付きのスカラー値の結果です。

  4. 4

    手順をたどる

    余因子展開では各小行列式とその符号が表示されます。LU分解では行基本変形の順序が表示されます。

行列式からわかること

  • 0でない: 行列は正則であり、列は線形独立で、全単射な線形写像を定義します。
  • 0: 行列は特異であり、列は線形従属で、写像は少なくとも1つの次元をつぶします。
  • 符号: 正なら線形写像は向きを保ち、負なら向きを反転します(鏡像のように)。
  • 大きさ: |det(A)|は、写像がn次元の体積を拡大縮小する倍率です。det=3の2×2行列は面積を3倍にし、det=−2は面積を2倍にして反転させます。

小さな場合:手計算で

2×2:

det([[a, b], [c, d]]) = a·d − b·c

3×3(サラスの規則):

[[a,b,c],[d,e,f],[g,h,i]] に対して det = a(ei − fh) − b(di − fg) + c(dh − eg)

大きな場合:LUを使う

4×4行列の行列式を余因子展開で手計算すると4! = 24回の乗算が必要です。6×6では720回になります。LU分解は計算量をO(n³)に減らします。A = LUと分解し、Lは対角成分が1の下三角行列、Uは上三角行列とすると、det(A) = det(L)·det(U) = ∏ u_iiとなります。

知っておきたい性質

  • det(AB) = det(A)·det(B)
  • det(A^T) = det(A)
  • det(A^−1) = 1 / det(A)
  • n×n行列に対して det(kA) = k^n · det(A)
  • 2つの行を入れ替えると行列式の符号が反転します。
  • ある行の定数倍を別の行に加えても行列式は変わりません。
  • どれかの行(または列)がすべて0なら、行列式は0です。

よくある間違い

  • 余因子展開で符号のパターンを忘れる+ − + − + − ...。(i,j)余因子は(−1)^(i+j)と小行列式の積です。
  • 3つの0がある行があるのに、0でない要素が多い行に沿って展開すること。計算を楽にするには、0が最も多い行または列を選びましょう。
  • det(A+B) = det(A) + det(B)だと思い込むこと。これは成り立ちません。行列式は加法的ではなく乗法的です。

よくある質問

線形写像が向きを保つかどうかを示します。行列式が正なら右手系の座標系は右手系のまま保たれ、負なら左手系になります(鏡映)。

いいえ。行列式は正方行列に対してのみ定義されます。正方行列でない場合、最も近い概念は特異値や部分行列のグラム行列式です。

2つの行を入れ替えると符号が反転します。ある行をk倍すると行列式もk倍になります。ある行の定数倍を別の行に加えても行列式は変わりません。LU分解はこの3番目の変形だけを使うため、簡約の間も行列式が保たれます。

基本的なLU分解は安定ではなく、ピボットが0になる行列では失敗します。部分ピボット選択付きのLU分解(この計算機の既定)は、極端に小さいピボットを避けるために行を入れ替えるため、ほとんどの実行列で安定です。

倍精度演算なので、有効数字はおよそ15〜16桁です。特異に近い行列(det ≈ 0)は誤差が蓄積します。絶対値が非常に小さい場合は、末尾の小数を信頼するより0に近いとみなすのが安全です。

関連ツール

このツールは他の言語でも利用できます