MatrixRank[m]
行列 m の階数を与える.
MatrixRank
MatrixRank[m]
行列 m の階数を与える.
詳細とオプション
- MatrixRankは数値行列と記号行列の両方に使える.
- 行列の階数は線形独立の行あるいは列の数である.
- MatrixRankは以下のオプションを取る.
-
Modulus 0 使用する素数の法 Tolerance Automatic 使用する数値許容範囲 ZeroTest Automatic 行列要素をゼロと見なすべきかどうかを判定する関数 - MatrixRank[m,Modulus->p]は,素数 p を法とする有理行列の階数を求める.p がゼロである場合には,通常の演算が用いられる. »
- MatrixRank[m,ZeroTest->test]は test[m[[i,j]]]を評価して行列の要素がゼロかどうかを決定する.デフォルト設定はZeroTest->Automaticである.
- MatrixRank[m,Tolerance->t]は,各要素が許容率 t でのみ正しいと仮定される数値行列の最低階数を与える. »
- MatrixRankは疎な配列および構造化配列に使うことができる.
例題
すべて開く すべて閉じる例 (3)
スコープ (12)
基本的な用法 (7)
MatrixRank[{{1.25, 3.2, 3.2}, {7.9, -1.4, 5.1}, {1.1, 2.5, -1.5}}]MatrixRank[{{1. + I, 2, 3 - 2 I}, {0, 4, 5I}, {1 + I, 6, 3 + 3I}}](m = {{2, 2, 3, 4}, {3, 2, 1, 3}})//MatrixFormMatrixRank[m](m = RandomReal[4, {5, 3}, WorkingPrecision -> 20])//MatrixFormMatrixRank[m]MatrixRank[{{a, b}, {2a, 2b}}]MatrixRankはすべての記号が独立であると仮定する:
MatrixRank[{{a, b}, {c, d}}]mat = RandomReal[{0, 10}, {800, 600}];MatrixRank[mat] //Timingℱ = FiniteField[29, 4];
MatrixRank[{{ℱ[12], ℱ[23], ℱ[34]}, {ℱ[45], ℱ[56], ℱ[67]}, {ℱ[101], ℱ[98], ℱ[240]}}]特殊行列 (5)
SparseArray[{{1, 3} -> 1, {2, 2} -> 2, {3, 1} -> 3}, {3, 4}]MatrixRank[%]QuantityArray[{{1, 2, 3}, {4, 5, 6}}, "Meters"]MatrixRank[%]SymmetrizedArray[{{1, 1} -> 3, {2, 2} -> 1, {3, 1} -> -5}, {3, 3}, Symmetric[All]]MatrixRank[%]IdentityMatrixは常に最大階数である:
MatrixRank[IdentityMatrix[3]]MatrixRank[IdentityMatrix[{4, 5}]]HilbertMatrixは常に最大階数である:
MatrixRank[HilbertMatrix[3]]rpoly[n_] := RandomInteger[{-2 ^ 10, 2 ^ 10}, {n + 1}].x ^ Range[0, n]
SeedRandom[1234];
m = Table[rpoly[100], {15}, {15}];MatrixRank[m]//AbsoluteTimingオプション (2)
Modulus (1)
Tolerance (1)
Toleranceの設定値は数値的な悪条件の行列の推定階数に影響することがある:
m = {{1, 1, 1}, {0, 10^-10, 0}, {0, 0, 10^-20}};MatrixRank[m]機械演算の場合,デフォルトで小さすぎる要素は零であるとみなされる:
MatrixRank[N[m]]MatrixRank[N[m], Tolerance -> 0]中央行の中心よりも許容率が大きい場合,最後の2行は零とみなされる:
MatrixRank[N[m], Tolerance -> 10^-8]アプリケーション (11)
スパンと線形独立 (5)
v1 = {1, 2, 3};v2 = {4, 5, 6};v3 = {7, 8, 9};
Solve[a v1 + b v2 == v3, {a, b}]MatrixRank[{v1, v2, v3}]v1 = {1, 2, 3};v2 = {4, 5, 6};v3 = {7, 8, 10};
Solve[a v1 + b v2 == v3, {a, b}]MatrixRank[{v1, v2, v3}]Subscript[v, 1] = {108, 90, 252, 186};
Subscript[v, 2] = {240, 260, 520, 420};
Subscript[v, 3] = {264, 340, 536, 468};
Subscript[v, 4] = {522, 705, 1038, 929};ベクトルで形成された行列の階数は4未満であるので,線形独立ではない:
MatrixRank[{Subscript[v, 1], Subscript[v, 2], Subscript[v, 3], Subscript[v, 4]}]a = (| | | | |
| - | -- | --- | -- |
| 1 | 4 | 2 | -9 |
| 4 | 12 | 2 | 5 |
| 6 | 7 | -11 | 9 |
| 5 | 15 | 10 | 12 |);MatrixRank[a]Subscript[v, 1] = {8, 8, 0, -4, 6};Subscript[v, 2] = {2, -2, -11, 1, 0};Subscript[v, 3] = {-4, -8, -12, 4, -4};Subscript[v, 4] = {8, 12, 14, -6, 6};Subscript[v, 5] = {4, 4, 6, -2, 0};ベクトルで形成される行列の階数は3なので,これが部分空間の次元である:
MatrixRank[{Subscript[v, 1], Subscript[v, 2], Subscript[v, 3], Subscript[v, 4], Subscript[v, 5]}]方程式の解法と可逆性 (6)
system = {2x + 3y + 5z == -2, -3x + 4y - z == 7, 4x + y - 6z == 3};a = {{2, 3, 5}, {-3, 4, -1}, {4, 1, -6}};
b = {-2, 7, 3};
system == Thread[ a.{x, y, z} == b]MatrixRank[a]Solveを使って結果を確かめる:
Solve[system, {x, y, z}]a = (| | | | |
| --- | --- | ---- | --- |
| 108 | 90 | 252 | 186 |
| 240 | 260 | 520 | 420 |
| 264 | 340 | 536 | 468 |
| 522 | 705 | 1038 | 929 |);MatrixRank[a]Inverseを使って結果を確かめる:
Inverse[a]a = (| | | | |
| - | -- | --- | -- |
| 1 | 4 | 2 | -9 |
| 4 | 12 | 2 | 5 |
| 6 | 7 | -11 | 9 |
| 5 | 15 | 10 | 12 |);この行列の階数は最大なので,その行列式は非零でなければならない:
MatrixRank[a]Detを使って結果を確認する:
Det[a]
が最大階数を持たないのなら
は
の固有値である.さらに,行列の固有値が
の階数と列数の差より大きい多重性を持つならその行列は不完全である.次の行列
の固有値が
であることを示す:
m = {{-8, -6, 9, 10}, {-6, -4, 0, 6}, {0, 0, -4, 0}, {-10, -6, 9, 12}};MatrixRank[m - (-4) IdentityMatrix[4]]Eigenvaluesを使って結果を確認する:
Eigenvalues[m]4 - MatrixRank[m - 2 IdentityMatrix[4]]Eigensystemで結果を確認すると,固有ベクトルのリストが0で充填されることで不完全性が示される:
Eigensystem[m]ほとんどの(しかしすべてではない)ランダムな10×10 0–1行列は非退化である:
Table[MatrixRank[RandomInteger[1, {10, 10}]], {20}]Block[{n = 10000}, N[Sum[MatrixRank[RandomInteger[1, {10, 10}]], {n}] / n]]m = Table[If[CoprimeQ[x, y], 1, 0], {x, 20}, {y, 20}];MatrixRank[m]ArrayPlot[m, PlotTheme -> "Marketing"]そのような配列の最初の50個を計算する.最初の3つしか最高の階数を持たない:
Table[MatrixRank[Table[If[CoprimeQ[x, y], 1, 0], {x, n}, {y, n}]], {n, 50}]ListLinePlot[%, Epilog -> Line[{{0, 0}, {50, 50}}], PlotRange -> {0, 50}]特性と関係 (9)
階数・退化次数の定理によって,MatrixRank[m]は列数引く零空間の次元である:
m = N[RandomInteger[1, {4, 4}]];{r, c} = Dimensions[m];ns = NullSpace[m]MatrixRank[m] == c - Length[ns]m = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};{MatrixRank[m], MatrixRank[m]}MatrixRank[m]はRowReduce[m]の非零の行の数に等しい:
m = {{1, 4, 6}, {3, 7, 0}, {9, 2, 3}, {2, 1, 8}, {7, 8, 10}};MatrixRank[m]RowReduce[m]//MatrixForm正方行列では,Det[m]!=0のときかつそのときに限って m は最高の階数を持つ:
m = RandomReal[{-1, 1}, {3, 3}];MatrixRank[m] == Length[m]Det[m] != 0正方行列では,零空間が空のときかつそのときに限って m は最高の階数を持つ:
m = RandomReal[{-1, 1}, {3, 3}];MatrixRank[m] == Length[m]NullSpace[m] === {}正方行列では,m が逆行列を持つときかつそのときに限って m は最高の階数を持つ:
m = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};MatrixRank[m] == Length[m]Inverse[m]正方行列では,LinearSolve[m,b]が一般的な b についての解を持つときかつそのときに限って m は最高の階数を持つ:
m = RandomReal[{-1, 1}, {3, 3}];MatrixRank[m] == Length[m]LinearSolve[m, {Subscript[b, x], Subscript[b, y], Subscript[b, z]}]MatrixRank[m]はLength[SingularValueList[m]]に等しい:
m = N[RandomInteger[1, {4, 4}]];SingularValueList[m]MatrixRank[m] == Length[%]v = RandomReal[1, 1000];MatrixRank[KroneckerProduct[v, v]]考えられる問題 (2)
MatrixRankは与えられた行列の精度に依存することがある:
m = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9 + 10^-20}};MatrixRank[m]MatrixRank[N[m]]MatrixRank[N[m, 24]]MatrixRankはすべてのシンボルが独立であると仮定する:
MatrixRank[{{1, 0}, {0, a}}]MatrixRank[{{1, 0}, {0, 0}}]テクニカルノート
履歴
2003 で導入 (5.0) | 2007 で更新 (6.0) ▪ 2014 (10.0) ▪ 2022 (13.2) ▪ 2024 (14.0)
テキスト
Wolfram Research (2003), MatrixRank, Wolfram言語関数, https://reference.wolfram.com/language/ref/MatrixRank.html (2024年に更新).
CMS
Wolfram Language. 2003. "MatrixRank." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/MatrixRank.html.
APA
Wolfram Language. (2003). MatrixRank. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/MatrixRank.html
BibTeX
@misc{reference.wolfram_2026_matrixrank, author="Wolfram Research", title="{MatrixRank}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/MatrixRank.html}", note=[Accessed: 04-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_matrixrank, organization={Wolfram Research}, title={MatrixRank}, year={2024}, url={https://reference.wolfram.com/language/ref/MatrixRank.html}, note=[Accessed: 04-November-2026]}