Рядкова ступінчаста форма
У лінійній алгебрі матриця має рядкову ступінчасту форму якщо
- Усі ненульові рядки (рядки, що мають хоча б один ненульовий елемент) знаходяться над нульовими рядками, і
- Лідируючий коефіцієнт (перший ненульовий елемент зліва) ненульового рядка завжди строго справа від лідируючого коефіцієнта в рядку вище.
Приклад 3x3 матриці у рядковій ступінчастій формі:
Матриця є у скороченій рядковій формі (також називається рядкова канонічна форма) якщо вона задовольняє наступну умову:
- Кожен передній коефіцієнт є 1 і він є єдиним ненульовим елементом у відповідному стовпчику, наприклад:
Зауважимо, що це не завжди значить, що ми отримаємо одиничну матрицю. Наприклад, наступна матриця також у скороченій рядковій формі:
Неунікальність
Кожна ненульова матриця може бути приведена до нескінченної кількості рядкових ступінчастих форм (вони можуть бути добутками інших ступінчастих форм, наприклад) з допомогою елементарних перетворень матриць. Однак, усі матриці та їхні рядкові ступінчасті форми відповідають одній матриці у скороченій рядковій ступінчастій формі.
Системи лінійних рівнянь
Система лінійних рівнянь є у рядковій ступінчастій формі якщо її розширена матриця знаходиться в рядковій ступінчастій формі. Схожим чином, система рівнянь є у скороченій рядковій ступінчастій формі або канонічній формі якщо її розширена матриця є у скороченій рядковій ступінчастій формі.
Псевдокод
Наступний псевдокод конвертує матриці у скорочену рядкову ступінчасту форму:
function ToReducedRowEchelonForm(Matrix M) is lead := 0 rowCount := the number of rows in M columnCount := the number of columns in M for 0 ≤ r < rowCount do if columnCount ≤ lead then stop function end if i = r while M[i, lead] = 0 do i = i + 1 if rowCount = i then i = r lead = lead + 1 if columnCount = lead then stop function end if end if end while if i ≠ r then Swap rows i and r Divide row r by M[r, lead] for 0 ≤ i < rowCount do if i ≠ r do Subtract M[i, lead] multiplied by row r from row i end if end for lead = lead + 1 end for end function
наступний псевдокод перетворює матрицю у рядкову ступінчасту форму (не скорочену):
function ToRowEchelonForm(Matrix M) is nr := number of rows in M nc := number of columns in M for 0 ≤ r < nr do allZeros := true for 0 ≤ c < nc do if M[r, c] != 0 then allZeros := false exit for end if end for if allZeros = true then In M, swap row r with row nr nr := nr - 1 end if end for p := 0 while p < nr and p < nc do label nextPivot: r := 1 while M[p, p] = 0 do if (p + r) <= nr then p := p + 1 goto nextPivot end if In M, swap row p with row (p + r) r := r + 1 end while for 1 ≤ r < (nr - p) do if M[p + r, p] != 0 then x := -M[p + r, p] / M[p, p] for p ≤ c < nc do M[p + r, c] := M[p , c] * x + M[p + r, c] end for end if end for p := p + 1 end while end function