Det[m]
正方行列 m の行列式を返す.
Det
Det[m]
正方行列 m の行列式を返す.
例題
すべて開く すべて閉じる例 (2)
スコープ (13)
基本的な用法 (8)
MachinePrecision行列の行列式を求める:
Det[{{1.7, 7.1, -2.7}, {2.2, 8.7, 3.2}, {3.2, -9.2, 1.2}}]Det[{{1. + I, 2, 3 - 2 I}, {0, 4 π, 5I}, {3, 0, 6}}]Det[{{1, 2, 4}, {5, 4, 5}, {9, 2, 7}}]Det[RandomReal[2, {3, 3}, WorkingPrecision -> 20]]Det[{{a, b, c}, {d, e, f}, {g, h, i}}]mat = BlockRandom[RandomReal[3, {1500, 1500}], RandomSeeding -> 1234];Det[mat]//TimingDivide[Abs[Last[%]], $MaxMachineNumber]ℱ = FiniteField[17, 3];
Det[{{ℱ[12], ℱ[23], ℱ[34]}, {ℱ[45], ℱ[56], ℱ[67]}, {ℱ[78], ℱ[89], ℱ[90]}}]CenteredInterval行列の行列式:
(m = Map[CenteredInterval, RandomReal[{-10, 10}, {3, 3}, WorkingPrecision -> 10], {2}])//MatrixFormmdet = Det[m]ranrep[e_CenteredInterval] := e["Center"] + RandomInteger[{-1000, 1000}] / 1000 e["Radius"]
(mrep = Map[ranrep, m, {2}])//MatrixFormIntervalMemberQ[mdet, Det[mrep]]特殊行列 (5)
SparseArray[{{1, 3} -> 2, {2, 2} -> 3, {3, 1} -> 1, {4, 2} -> 5}, {4, 4}]Det[%]SparseArray[{{x_, y_} /; Abs[x - y] < 3 -> 1}, {10, 10}]Det[%]SymmetrizedArray[{{1, 1} -> 2, {1, 2} -> 1}, {2, 2}, Symmetric[All]]Det[%]QuantityArray[{{1, 2}, {3, 4}}, {"Meters", "Seconds"}]Det[%]IdentityMatrixは常に単位行列式を持つ:
Det[IdentityMatrix[22]]HilbertMatrixの行列式:
HilbertMatrix[9]//Detrpoly[n_] := RandomInteger[{-2 ^ 10, 2 ^ 10}, {n + 1}].x ^ Range[0, n]
SeedRandom[1234];
m = Table[rpoly[100], {10}, {10}];Det[m]//Short//AbsoluteTimingオプション (1)
Modulus (1)
m = RandomInteger[46, {100, 100}];Det[m, Modulus -> 47]//AbsoluteTimingこれは,Mod[Det[m],47]を計算するよりも速い:
Mod[Det[m], 47]//AbsoluteTimingアプリケーション (19)
面積と体積 (6)
Detを使って
と
にまたがる平行四辺形の面積を求める:
v = {1, 4};
w = {-5, 2};p = Parallelogram[{0, 0}, {v, w}];
Graphics[p, Axes -> True]Abs[Det[{v, w}]]Areaが与える結果と比較する:
Area[p]Detを使って
,
,
にまたがる平行六面体の体積を求める:
{Subscript[v, 1], Subscript[v, 2], Subscript[v, 3]} = {{1, 4, 3}, {-2, -5, 2}, {-1, 2, -2}};p = Parallelepiped[{0, 0, 0}, {Subscript[v, 1], Subscript[v, 2], Subscript[v, 3]}];
Graphics3D[p, Axes -> True]Abs[Det[{Subscript[v, 1], Subscript[v, 2], Subscript[v, 3]}]]Volumeを使った直接計算と比較する:
Volume[p]Detを使って以下のベクトルにまたがる超平行六面体の超体積を求める:
{v1, v2, v3, v4} = {{6, -6, -1, 6}, {10, -1, 0, -7}, {3, -2, -9, -3}, {4, 5, 6, -3}}Abs[Det[{v1, v2, v3, v4}]]RegionMeasureが与える結果と比較する:
RegionMeasure[Parallelepiped[{0, 0, 0, 0}, {v1, v2, v3, v4}]]Det[{v1, v2, v3, v4}]単に任意の2つのベクトル(例えば真ん中の2つ)の順序を変えるだけで右手系の集合が与えられる:
Det[{v1, v3, v2, v4}]行列
に関連付けられた線形変換の下で単位円板
の画像の面積を求める:
m = {{7, -3}, {5, 7}, {-10, 4}};
m//MatrixFormπSqrt[Det[Transpose[m].m]]f𝔻 = ParametricRegion[ {m.{x, y}, {x, y}∈Disk[]}, {x, y}];
Area[f𝔻]Region[f𝔻, PlotTheme -> "Scientific"]デカルト座標と球座標間の変数変換公式
中の体積係数
を求める.極座標からデカルト座標への写像は以下で与えられる:
polar[r_, θ_] := {r Cos[θ], r Sin[θ]}Gradを使って写像のヤコビアンを計算する:
jac = Grad[polar[r, θ], {r, θ}]Simplify[Abs[Det[jac]], r > 0]CoordinateChartDataが与える結果と比較する:
CoordinateChartData["Polar", "VolumeFactor", {r, θ}]例えば球座標のように任意の座標系で同じ操作を行うことができる:
spherical[r_, θ_, φ_] := {r Sin[θ]Cos[φ], r Sin[θ]Sin[φ], r Cos[θ]}
Simplify[Abs[Det[Grad[spherical[r, θ, φ], {r, θ, φ}]]], r > 0 && 0 <= θ <= π]CoordinateChartData["Spherical", "VolumeFactor", {r, θ, φ}]変数変換定理を使って
を計算する.ただし,
は以下の領域である:
𝔻 = ImplicitRegion[x > 0 && y > 0 && 1 <= x^2 - y^2 ≤ 9 && 2 <= x y <= 4, {x, y}];
RegionPlot[𝔻]hyper[x_, y_] := {x^2 - y^2, x y}領域
は明らかに
かつ
に対応する.変数変換公式によって
である.傾きは以下で与えられる:
Grad[hyper[x, y], {x, y}]Det[%]Subsuperscript[∫, 2, 4]Subsuperscript[∫, 1, 9](1/2)ⅆuⅆvSubscript[∫, {x, y}∈𝔻](x^2 + y^2)向きと回転 (5)
{b1, b2, b3} = {{1, 0, 1}, {0, 1, 1}, {1, 0, 0}};この基底によって形成される行列の行列式は負であるので,これは右手系ではない:
Det[{b1, b2, b3}]
に対応する線形変換が,向きを保つものかあるいは向きを逆にするものかを判断する:
m = {{-8, 10, -7, -10}, {2, 6, -7, -9}, {6, 2, 4, -10}, {-7, -4, -3, -10}};Det[m]m = {{0.969655, -0.170187, -0.0303448, -0.170187, -0.0303448}, {0.170187, 0.254483, 0.170187, -0.0455171, 0.170187}, {-0.0303448, -0.170187, 0.969655, -0.170187, -0.0303448}, {0.170187, -0.0455171, 0.170187, 0.954483, 0.170187}, {-0.0303448, -0.170187, -0.0303448, -0.170187, 0.969655}};回転行列はどれも単位行列式を持つ.
なので,これは回転行列ではありえない:
Det[m]行列
が直交行列であることを示し,これが回転行列であるか,あるいは鏡映を含むかどうかを判断する:
m = {{-0.969655, -0.170187, -0.0303448, -0.170187, -0.0303448}, {-0.170187, 0.954483, 0.170187, -0.0455171, 0.170187}, {0.0303448, -0.170187, 0.969655, -0.170187, -0.0303448}, {-0.170187, -0.0455171, 0.170187, 0.954483, 0.170187}, {0.0303448, -0.170187, -0.0303448, -0.170187, 0.969655}};入力の精度まで
であるが,これは
が直交行列であることを示している:
Chop[Transpose[m].m, 10 ^ -6]//MatrixForm直交行列はどれも
であるが,回転は
である.
なので
には鏡映が含まれる:
Det[m]複素ベクトル空間への回転行列の一般化は,ユニタリで単位行列式を持つ特殊ユニタリ行列である.次の行列が特殊ユニタリ行列であることを示す:
u = (1/Sqrt[Cosh[2 Im[α]]])(| | |
| ------------- | ------------- |
| Cosh[Im[α]] | I Sinh[Im[α]] |
| I Sinh[Im[α]] | Cosh[Im[α]] |);ConjugateTranspose[u].u//Simplifyこれは単位行列式を持つので,実際に特殊ユニタリ群
の元である:
Det[u]//Simplify線形代数と抽象代数 (8)
系
,
が一意解を持つパラメータ
の値を定義し,その解を説明する.まず,係数行列
と定数ベクトル
を形成する:
a = (| | |
| -- | -- |
| 2s | 1 |
| 3s | 6s |);b = (| |
| - |
| 1 |
| 2 |);bDet[a] != 0Reduce[%, s, Reals]この行列は
のこれらの値について可逆なので,解は単に
である:
Inverse[a].b//SimplifySimplify[2 s x + y == 1 && 3 s x + 6 s y == 2 /. Thread[{x, y} -> %]]クラメール(Cramer)の規則を使って方程式系
,
,
を解く.まず,係数行列
と定数ベクトル
を形成する:
a = {{6, 9, 0}, {-7, 0, 3}, {0, 5, 9}};
b = {11, -12, -9};
{a//MatrixForm, b//MatrixForm}3つの行列
を形成する.ただし,
は対応する
の列を置換する:
{dx, dy, dz} = Table[ReplacePart[a, {j_, i} :> b[[j]]], {i, 3}];
{dx//MatrixForm, dy//MatrixForm, dz//MatrixForm}({Det[dx], Det[dy], Det[dz]}/Det[a])a.% == b線形系 m.x=b を解くためのクラメールの公式を実装する関数を書く:
crule[m_, b_] := Module[{d = Det[m], a},
Table[a = m;a[[All, k]] = b;Det[a] / d, {k, Length[m]}]]m = {{1, 2, 3}, {1, 4, 9}, {1, 8, 27}};
b = {4, 16, 46};x = crule[m, {4, 16, 46}]m.x == b数値系では, LinearSolveの方がずっと速くかつ正確である:
n = 500;
m = RandomReal[1, {n, n}];
x = ConstantArray[1, n];
b = m.x;AbsoluteTiming[Norm[crule[m, b] - x]]AbsoluteTiming[Norm[LinearSolve[m, b] - x]]行列
が自明ではないカーネル(零空間)を持つかどうか判断する:
a = {{-10, -7, -7, 8, -1}, {5, 0, 2, 0, -8}, {7, -4, -2, -10, 1}, {-5, 7, 10, 0, 3}, {-8, -5, -4, 1, -2}};Det[a]NullSpaceを使って結果を確認する:
NullSpace[a]a = {{3, 1, 1}, {2, -5, 3}, {1, -11, 5}};Det[a]FunctionInjectiveを使って結果を確認する:
f[x_, y_, z_] := a.{x, y, z}FunctionInjective[f[x, y, z], {x, y, z}]
が線形関数
を定義するので,単射ではないという事実は全射でもないことを暗示している:
FunctionSurjective[f[x, y, z], {x, y, z}]行列
が自己同型写像(全単射線形写像)を定義するかどうかを判断する:
a = RandomInteger[{-10, 10}, {3, 3}]Det[a]FunctionBijectiveを使って結果を確かめる:
f[x_, y_, z_] := a.{x, y, z}FunctionBijective[f[x, y, z], {x, y, z}]行 i と列 j を除去することで入手した余因子を計算する:
cofactor[m_, {i_Integer, j_Integer}] := (-1) ^ (i + j)Det[Drop[m, {i}, {j}]]cofactor[{{1, 2, 3, 4}, {5, 6, 7, 8}, {8, 7, 6, 4}, {5, 3, 2, 1}}, {3, 2}](-1) ^ (3 + 2)Det[{{1, 3, 4}, {5, 7, 8}, {5, 2, 1}}]a = {{12, 13}, {14, 15}};d1 = Det[a, Modulus -> 5]d2 = Det[a, Modulus -> 7]ChineseRemainder[{d1, d2}, {5, 7}]Mod[33, 5 7, (-5 7 + 1) / 2]Det[a]特性と関係 (15)
m = RandomReal[1, {100, 100}];Det[m]Apply[Times, Eigenvalues[m]] Detは
を満足する.ただし,
はすべて
-順列で
はSignatureである:
a = {{-4, 8, -5, 6, -3}, {10, 2, -5, -4, 8}, {8, 8, -1, 8, 0}, {-7, -6, -4, -5, 2}, {8, -7, -6, -7, 10}};s5 = Permutations[Range[5]];Det[a] == Underoverscript[∑, σ, s5]Signature[σ]Underoverscript[∏, i, 5]a[[i, σ[[i]]]]行列式Det[m]は,m の行または列をLevi–Civitaテンソルへ縮約したものである:
m = Array[μ, {3, 3}];
Det[m] === TensorContract[m[[1]]m[[2]]m[[3]]LeviCivitaTensor[3, List], {{1, 4}, {2, 5}, {3, 6}}]効率のためにInactive[TensorProduct]を用いて高次元に一般化する:
det[m_] := With[{n = Length[m]},
Activate[TensorContract[Inactive[TensorProduct]@@Append[m, LeviCivitaTensor[n]], Table[{k, k + n}, {k, n}]]]];m = Array[μ, {6, 6}];
Det[m] == det[m]//SimplifyDetは任意の行に沿って余因子展開を介して繰り返し計算できる:
m = RandomReal[1, {5, 5}];
Block[{n = Length[m], i = RandomInteger[{1, Length[m]}]},
Sum[(-1)^i + km[[i, k]]Det[Drop[m, {i}, {k}]], {k, n}] == Det[m]]Block[{n = Length[m], j = RandomInteger[{1, Length[m]}]},
Sum[(-1)^j + km[[k, j]]Det[Drop[m, {k}, {j}]], {k, n}] == Det[m]]行列式は,その行によって生成された平行六面体の符号付き体積である:
m = {{1, 2, 3}, {-1, 1, 0}, {3, 2, 1}};Det[m]Volume[Parallelepiped[{0, 0, 0}, m]]正方行列は,その行列式が非零のときかつそのときに限って逆行列を持つ:
m = {{1, 2, 1}, {1, 0, 2}, {-1, 2, -3}};Det[m]Inverse[m]MatrixForm[m = SparseArray[{i_, j_} /; i ≥ j :> RandomReal[], {5, 5}]]Det[m]Apply[Times, Diagonal[m]]{a, b} = RandomReal[1, {2, 100, 100}];Det[a.b]Det[a]Det[b]m = (| | | |
| :---- | :---- | :---- |
| a1, 1 | a1, 2 | a1, 3 |
| a2, 1 | a2, 2 | a2, 3 |
| a3, 1 | a3, 2 | a3, 3 |);Det[Inverse[m]]//Simplify1 / Det[m]%% == %//Simplifym = RandomReal[1, {5, 5}];
Det[m] == Det[Transpose[m]]m = RandomReal[1, {10, 10}, WorkingPrecision -> $MachinePrecision];Det[MatrixExp[m]] == Exp[Tr[m]]CharacteristicPolynomial[m]は
に等しい:
m = RandomInteger[9, {3, 3}];Det[m - λ IdentityMatrix[3]]CharacteristicPolynomial[m, λ]Det[m]はLUDecomposition[m]から計算できる:
m = RandomInteger[9, {5, 5}];
{l, u, p, c} = LUDecomposition[m];
Det[m] == Signature[p["PermutationList"]]Times@@Diagonal[u]
と
がどちらも正方行列であるような2つの矩形行列
と
について考える:
a = RandomReal[1, {5, 3}];b = RandomReal[1, {3, 5}];シルヴェスター(Sylvester)の行列式定理には
とある.ただし,
は合致する恒等行列である:
Det[IdentityMatrix[5] + a.b] == Det[IdentityMatrix[3] + b.a]行列
が2つのベクトル
と
のTensorProductなら,
である:
{u, v} = RandomReal[1, {2, 5}];Det[IdentityMatrix[5] + uv] == 1 + u.v上記はKroneckerProductを使っても同様に表現できる:
Det[IdentityMatrix[5] + KroneckerProduct[u, v]] == 1 + u.vこれは,対応する行行列と列行列についてのシルベスターの行列定理に従っている:
c = List /@ u;r = {v};{Det[IdentityMatrix[5] + c.r] == Det[IdentityMatrix[1] + r.c], r.c == {{u.v}}}おもしろい例題 (1)
tridiagonal[n_] := SparseArray[{Band[{2, 1}] -> a, Band[{1, 1}] -> b, Band[{1, 2}] -> c}, {n, n}]tridiagonal[5]//MatrixFormTable[Det[tridiagonal[n]], {n, 2, 12}]//TableForm% == Table[(a c) ^ (n / 2) ChebyshevU[n, b / (2 Sqrt[a c])]//Simplify, {n, 2, 12}]テクニカルノート
履歴
1988 で導入 (1.0) | 2022 で更新 (13.2) ▪ 2024 (14.0)
テキスト
Wolfram Research (1988), Det, Wolfram言語関数, https://reference.wolfram.com/language/ref/Det.html (2024年に更新).
CMS
Wolfram Language. 1988. "Det." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/Det.html.
APA
Wolfram Language. (1988). Det. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Det.html
BibTeX
@misc{reference.wolfram_2026_det, author="Wolfram Research", title="{Det}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/Det.html}", note=[Accessed: 02-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_det, organization={Wolfram Research}, title={Det}, year={2024}, url={https://reference.wolfram.com/language/ref/Det.html}, note=[Accessed: 02-August-2026]}