RowReduce[m]
行列 m に掃出し法を適用した形を示す.
RowReduce
RowReduce[m]
行列 m に掃出し法を適用した形を示す.
詳細とオプション
- RowReduceはガウスの消去を行う.これは複数の行を加算しながら可能な場合にゼロの要素を作成する.最終的な行列は掃き出した行を梯列形式で表す.
- m が非退化正方行列である場合,RowReduce[m]はIdentityMatrix[Length[m]]である. »
- m が
行と
より多くの列を持った非退化矩形行列である場合,RowReduce[m]の先頭の
列は単位行列を作る. » - RowReduceは,数値的および記号的行列に対して機能する.
- 次のオプションを与えることができる.
-
Method Automatic 使用するメソッド Modulus 0 使用すべき法とする整数 Tolerance Automatic 使用する数値許容度 ZeroTest Automatic 行列の要素をゼロとみなすかどうかを判別する関数 - RowReduce[m,Modulus->n]は,整数 n を法として有理行列の簡約形を求める.n が0のときは通常の算術演算が用いられる.n が素数ではないときは,計算が失敗する可能性がある. »
- RowReduce[m,ZeroTest->test]は,行列要素がゼロであるかどうかを判定するために test[m[[i,j]]]を評価する.
- Methodオプションの取り得る値は,"CofactorExpansion","DivisionFreeRowReduction","OneStepRowReduction"である.デフォルト設定のAutomaticの場合は,与えられた行列によってこれらのメソッドを使い分ける.
例題
すべて開く すべて閉じる例 (3)
RowReduce[{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}]MatrixForm[%]RowReduce[{{1, 2, 3, 1, 0, 0}, {4, 5, 6, 0, 1, 0}, {7, 8, 9, 0, 0, 1}}]MatrixForm[%]RowReduce[{{3, 1, a}, {2, 1, b}}]スコープ (13)
基本的な用法 (7)
RowReduce[{{1.5, 4.75, -3.2}, {-1.7, 6.7, -9.3}, {4.9, -8.65, 15.4}}]//MatrixFormMatrixForm[RowReduce[RandomComplex[3 + I, {5, 5}]]]m = N[{{π, Sqrt[2], E}, {(1/Sqrt[2]), 1 + Sqrt[2], 2 π}, {-(1/Sqrt[2]) + 2 π, -1 + Sqrt[2], 2 E - 2 π}}, 20]RowReduce[m]//MatrixFormRowReduce[{{0, 0, 0, π}, {2, 2, 2, 2}, {3 + ISqrt[2], 0, 0, 0}, {0, 4, 4, 0}}]//MatrixFormRowReduce[{{a, b, c}, {d, e, f}, {a + d, b + e, c + f}}]RowReduceはすべてのシンボルが独立であると仮定する:
RowReduce[{{a, b, c}, {d, e, f}, {g, h, i}}]RowReduce[(| | |
| ---- | ----- |
| 1.2 | 3.4 |
| 5.6 | 7.8 |
| 9.10 | 11.12 |)]//MatrixFormRowReduce[RandomReal[1, {4, 6}, WorkingPrecision -> 20]]//MatrixFormRowReduce[RandomComplex[1, {3, 5}]]//MatrixFormRandomReal[{0, 9}, {500, 300}];
RowReduce[%]; //AbsoluteTiming特殊行列 (6)
SparseArray[{{1, 2} -> 1, {3, 1} -> 5, {2, 3} -> 2}, {3, 3}]RowReduce[%]SymmetrizedArray[{{1, 2} -> 3, {2, 2} -> 5, {2, 3} -> 7, {3, 2} -> 13}, {3, 3}, Symmetric[All]]RowReduce[%]QuantityArray[{{1, 2}, {2, 4}}, {"Meters", "Seconds"}]RowReduce[%]RowReduceは恒等行列は変えない:
RowReduce[IdentityMatrix[3]]RowReduce[IdentityMatrix[{3, 4}]]RowReduce[HilbertMatrix[7]]//MatrixFormℱ = FiniteField[29, 4];
RowReduce[{{ℱ[12], ℱ[23], ℱ[34]}, {ℱ[45], ℱ[56], ℱ[67]}, {ℱ[101], ℱ[98], ℱ[240]}}]//MatrixFormrpoly[n_] := RandomInteger[{-2 ^ 10, 2 ^ 10}, {n + 1}].x ^ Range[0, n]
SeedRandom[1234];
m = Table[rpoly[100], {10}, {11}];RowReduce[m]//Short[#, 4]&//AbsoluteTimingオプション (3)
Modulus (1)
Tolerance (1)
m = {{1, 0, 1}, {1, 10^-20, 0}, {0, 0, 1}};RowReduce[m]RowReduce[N[m]]RowReduce[N[m], Tolerance -> 0]拡張係数行列では,可能な解がどのように増幅されたかを見ることができる:
MatrixForm[RowReduce[Transpose[Append[Transpose[m], {1, 1, 1}]]]]ZeroTest (1)
m = (| | | | |
| - | -- | - | --- |
| 1 | -2 | 3 | 2 |
| 1 | 1 | 1 | k |
| 2 | -1 | 4 | k^2 |);
RowReduce[m]//MatrixFormこの場合は,特異行列を生成する特殊なケース
がRowReduceには欠けている:
RowReduce[m /. k -> 2]//MatrixFormtest[k_][e_] := Reduce[e == 0, k, ℝ] =!= False
{test[k][k^2 + 1], test[k][k^2]}test[k]をZeroTestの値として渡してより記号的な削減を得る:
MatrixForm[gen = RowReduce[{{1, -2, 3, 2}, {1, 1, 1, k}, {2, -1, 4, k ^ 2}}, ZeroTest -> test[k]]]以下は
における特殊ケースを捉えるが,
の他の値に対しては削減されていない行列を与える:
{MatrixForm[gen /. k -> 2], MatrixForm[gen /. k -> 1]}アプリケーション (13)
スパンと線形独立 (5)
v1 = {1, 2, 3};v2 = {4, 5, 6};v3 = {7, 8, 9};
Solve[a v1 + b v2 == v3, {a, b}]RowReduce[{v1, v2, v3}]v1 = {1, 2, 3};v2 = {4, 5, 6};v3 = {7, 8, 10};
Solve[a v1 + b v2 == v3, {a, b}]RowReduce[{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};RowReduce[{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 |);掃出し法を適用した形は恒等行列なので,列空間の次元は列数に等しい:
RowReduce[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つの非零の行があるのでこれが部分空間の次元である:
RowReduce[{Subscript[v, 1], Subscript[v, 2], Subscript[v, 3], Subscript[v, 4], Subscript[v, 5]}]方程式の解法と可逆性 (8)
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]係数行列
に掃出し法を適用すると恒等行列になるので,この系は一意解を持つ:
RowReduce[a]Solveを使って結果を確かめる:
Solve[system, {x, y, z}]系
を解く.ただし,
は行列で
はベクトルである.掃出し法を使う:
m = {{1, 2, 3}, {5, 6, 7}, {7, 8, 9}};
b = {1, 1, 1};MatrixForm[a = Join[m, Transpose[{b}], 2]]MatrixForm[r = RowReduce[a]]x = r[[All, -1]]m.x == bb1 = {1, -2, 1};
a1 = Transpose[Join[Transpose[m], {b1}]];
MatrixForm[r1 = RowReduce[a1]]最終列に先行する1があるので,
の解はない.Solveを使って確認する:
Solve[m.{x1, x2, x3} == b1, {x1, x2, x3}]system = {10 x + 12 y + 14 z == 1, 22 x + 27 y + 32 z == 0, 34 x + 42 y + 50 z == -1}m = {{10, 12, 14}, {22, 27, 32}, {34, 42, 50}};
b = {1, 0, -1};
v = {x, y, z};system == Thread[m.v == b]RowReduce[Join[m, Transpose[{b}], 2]]//MatrixFormx1 = %[[All, -1]]0の行があるので,零空間は非空である.拡張行列
に掃出し法を使う:
RowReduce[Join[m, IdentityMatrix[3], 2]]//MatrixFormx0 = %[[-1, -3 ;; -1]]x1 + C[1]x0m.% == b//Simplifya = (| | | | |
| --- | --- | ---- | --- |
| 108 | 90 | 252 | 186 |
| 240 | 260 | 520 | 420 |
| 264 | 340 | 536 | 468 |
| 522 | 705 | 1038 | 929 |);削減しても恒等行列にはならないので,この行列は可逆ではない:
RowReduce[a]Inverseを使って結果を確かめる:
Inverse[a]a = (| | | | |
| - | -- | --- | -- |
| 1 | 4 | 2 | -9 |
| 4 | 12 | 2 | 5 |
| 6 | 7 | -11 | 9 |
| 5 | 15 | 10 | 12 |);削減すると恒等行列になるので,行列式は非零でなくてはならない:
RowReduce[a]Detを使って結果を確認する:
Det[a]
を削減しても恒等行列にならないなら
は
の固有値である.掃出し法を適用した形における0の行の数よりも大きい多重度を持つ固有値を持つならその行列は不完全行列である.
が次の行列
の固有値であることを示す:
m = {{-8, -6, 9, 10}, {-6, -4, 0, 6}, {0, 0, -4, 0}, {-10, -6, 9, 12}};RowReduce[m - (-4) IdentityMatrix[4]]Eigenvaluesを使って結果を確認する:
Eigenvalues[m]2が2回現れるのに掃出し法を適用した形には0の行が1つしかないので,行列
は不完全である:
RowReduce[m - 2 IdentityMatrix[4]]Eigensystemで結果を確かめると固有ベクトルのリストが0で充填されていることで不完全性が示される:
Eigensystem[m]m = {{a, b, c}, {d, e, f}, {g, h, i}};MatrixForm[aug = Join[m, IdentityMatrix[3], 2]]r = RowReduce[aug];r[[All, 1 ;; 3]]MatrixForm[minv = r[[All, -3 ;; -1]]]Inverseを使って結果を確かめる:
Simplify[minv == Inverse[m]]Block[{n = 10000}, N[Sum[If[RowReduce[RandomInteger[1, {10, 10}]] === IdentityMatrix[10], 1, 0], {n}] / n]]特性と関係 (8)
RowReduceは,入力精度にかかわらず,先頭の0を厳密な整数として返す:
m = {{0, 0, 0, 1}, {2, 2, 2, 2}, {3, 0, 0, 0}, {0, 4, 4, 0}};
MatrixForm /@ {RowReduce[m], RowReduce[N[m]], RowReduce[N[m, 10]]}RowReduce[m]がIdentityMatrix[Length[m]]のときかつそのときに限って正方行列 m は可逆である:
m = {{1, 0, 4}, {2, 0, 3}, {2, 1, 2}};RowReduce[m] == IdentityMatrix[Length[m]]Inverse[m]実際.逆行列は拡張行列の形式を m と単位行列で反転することで求められる:
RowReduce[Join[m, IdentityMatrix[Length[m]], 2]][[All, -Length[m] ;; -1]]正方行列では,Det[m]!=0のときかつそのときに限って m に掃出し法を使うと恒等行列になる:
m = RandomReal[{-1, 1}, {3, 3}];RowReduce[m] == IdentityMatrix[Length[m]]Det[m] != 0正方行列では,零空間が空のときかつそのときに限って m に掃出し法を使うと恒等行列になる:
m = RandomReal[{-1, 1}, {3, 3}];RowReduce[m] == IdentityMatrix[Length[m]]NullSpace[m] === {}正方行列では,LinearSolve[m,b]が一般的な b についての解を持つときかつそのときに限って m に掃出し法を使うと恒等行列になる:
m = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};RowReduce[m] == IdentityMatrix[Length[m]]LinearSolve[m, {Subscript[b, x], Subscript[b, y], Subscript[b, z]}]RowReduce[m]の最初の
列が恒等行列を形成するときかつそのときに限って
である
行列
の階数は
になる:
a = {{3, 7, 1, 2, 7}, {4, 5, 6, 6, 6}, {0, 5, 5, 1, 4}};
m = Length[a];
r = RowReduce[a];MatrixRank[a] == mr[[All, 1 ;; Length[a]]] == IdentityMatrix[Length[a]]MatrixForm[r]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平方行列 m の零空間はRowReduceを使って計算できる:
m = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};MatrixForm[r = RowReduce[Join[m, IdentityMatrix[Length[m]], 2]]]行の拡張された半分に先頭の1があれば,その半分は零空間にある:
{v1, v2} = r[[3 ;; 4, 5 ;; 8]]NullSpaceを使って零ベクトルを得る:
{n1, n2} = NullSpace[m]たとえベクトルは等しくなくても,どちらも同じ空間の基底である:
RegionEqual[ParametricRegion[a v1 + b v2, {a, b}], ParametricRegion[a n1 + b n2, {a, b}]]テクニカルノート
履歴
1988 で導入 (1.0) | 1996 で更新 (3.0) ▪ 2022 (13.2) ▪ 2024 (14.0)
テキスト
Wolfram Research (1988), RowReduce, Wolfram言語関数, https://reference.wolfram.com/language/ref/RowReduce.html (2024年に更新).
CMS
Wolfram Language. 1988. "RowReduce." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/RowReduce.html.
APA
Wolfram Language. (1988). RowReduce. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/RowReduce.html
BibTeX
@misc{reference.wolfram_2026_rowreduce, author="Wolfram Research", title="{RowReduce}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/RowReduce.html}", note=[Accessed: 14-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_rowreduce, organization={Wolfram Research}, title={RowReduce}, year={2024}, url={https://reference.wolfram.com/language/ref/RowReduce.html}, note=[Accessed: 14-November-2026]}