Skip to main content
linear algebraalgebracalculatorguide

행렬 랭크 계산기: 행 사다리꼴로 랭크 구하는 방법

·12 min read·Solvify Team

행렬 랭크 계산기는 행렬을 행 사다리꼴로 축소한 뒤 0이 아닌 피벗 행의 개수를 세어 행렬 안에 선형독립인 행 또는 열이 몇 개인지 구합니다. 랭크는 연립일차방정식이 유일해를 가지는지, 무수히 많은 해를 가지는지, 아니면 해가 전혀 없는지를 알려주며, 선형대수 강의부터 컴퓨터 그래픽스, 데이터 과학의 차원 축소까지 곳곳에서 등장합니다. 이 가이드는 전체 산술 과정을 포함한 행 축소 방법을 단계별로 살펴보고, 정방행렬을 위한 행렬식 지름길을 다루며, 완전 랭크 행렬과 랭크 부족 행렬 각각에 대한 예제 풀이를 제공합니다. 흔히 저지르는 실수와 완전한 풀이가 포함된 연습 문제도 함께 확인할 수 있습니다.

행렬의 랭크란 무엇인가?

행렬의 랭크는 그 행렬이 포함하는 선형독립인 행의 최대 개수이며, 이는 선형독립인 열의 최대 개수와 동일합니다. 행렬의 차원이 커도(예를 들어 5×5) 여러 행이나 열이 다른 행·열의 조합으로 표현된다면 랭크는 작을 수 있습니다. 랭크는 0부터 행 개수와 열 개수 중 더 작은 값 사이의 하나의 숫자입니다. m×n 행렬에 대해 0 ≤ rank(A) ≤ min(m, n)이 성립합니다. 랭크가 min(m, n)과 같은 행렬을 완전 랭크(full rank)라고 합니다. n×n 정방행렬의 랭크가 정확히 n이면 그 행렬은 가역(invertible)입니다. 랭크가 n보다 작은 정방행렬은 특이(singular)하다고 하며 역행렬을 갖지 않습니다. 랭크는 행렬의 크기와 같은 개념이 아닙니다 — 4×4 행렬이라도 두 행이 나머지 두 행의 배수라면 랭크가 2일 수 있습니다.

랭크 = 선형독립인 행의 개수 = 선형독립인 열의 개수 = 행렬을 행 사다리꼴로 축소했을 때의 피벗 위치 개수.

행렬 랭크 계산기는 행 사다리꼴을 이용해 어떻게 랭크를 구하는가?

행렬 랭크 계산기는 가우스 소거법을 적용해 행렬을 행 사다리꼴(row echelon form, REF)로 변환하는 방식으로 작동합니다. 행 사다리꼴은 각 행의 첫 번째 0이 아닌 성분(피벗)이 바로 위 행의 피벗보다 항상 오른쪽에 위치하고, 모든 성분이 0인 행은 맨 아래에 놓이는 계단형 구조입니다. 행렬이 행 사다리꼴이 되면 랭크는 단순히 0이 아닌 행의 개수, 즉 피벗의 개수와 같습니다. 소거 과정에서는 랭크를 절대 바꾸지 않는 세 가지 합법적인 행 연산을 사용합니다: 두 행을 맞바꾸기, 한 행에 0이 아닌 상수를 곱하기, 한 행의 배수를 다른 행에 더하기. 이 연산들은 선형종속 관계를 그대로 보존하므로, 행 축소된 행렬의 랭크는 항상 원래 행렬의 랭크와 같습니다.

1. 1단계 — 첫 번째 피벗 찾기

1열을 맨 위 행부터 아래로 훑으며 처음으로 0이 아닌 성분을 찾습니다. 1행의 성분이 0이지만 아래쪽 행의 1열 성분이 0이 아니라면, 행을 맞바꾸어 그 0이 아닌 값을 피벗으로 만듭니다.

2. 2단계 — 피벗 아래를 소거하기

피벗 행 아래의 모든 행에 대해, 피벗 열의 성분이 0이 되도록 피벗 행의 배수를 빼줍니다. 그 열에서 피벗 아래의 모든 성분이 0이 될 때까지 반복합니다.

3. 3단계 — 다음 열로 이동하며 반복하기

한 행 아래, 한 열 오른쪽으로 이동한 뒤, 남은 부분 행렬에서 0이 아닌 피벗을 다시 찾습니다. 행이나 열이 더 이상 남지 않을 때까지 반복합니다.

4. 4단계 — 0이 아닌 행 세기

더 이상 피벗을 찾을 수 없게 되면, 전부 0은 아닌 행의 개수를 셉니다. 그 개수가 바로 행렬의 랭크입니다.

행 연산(맞바꾸기, 배율 곱하기, 배수 더하기)은 랭크를 절대 바꾸지 않습니다. 행 사다리꼴은 랭크를 눈으로 보이게 해줍니다: 0이 아닌 행의 개수와 같습니다.

예제 풀이: 완전 랭크 3×3 행렬의 랭크 구하기

A = [[1, 2, 3], [2, 5, 3], [1, 0, 8]]를 생각해봅시다. 이는 완전 랭크 행 축소를 보여주는 데 자주 쓰이는 대표적인 3×3 행렬입니다. 정방행렬이므로 여기서 완전 랭크는 랭크 3을 의미합니다.

1. 1단계 — 피벗 아래의 1열 소거하기

피벗은 a₁₁ = 1입니다. R2 = R2 - 2R1: [2-2(1), 5-2(2), 3-2(3)] = [0, 1, -3] R3 = R3 - 1R1: [1-1(1), 0-1(2), 8-1(3)] = [0, -2, 5] 이제 행렬은: [[1, 2, 3], [0, 1, -3], [0, -2, 5]]

2. 2단계 — 피벗 아래의 2열 소거하기

이제 피벗은 2행 2열의 성분 1입니다. R3 = R3 + 2R2: [0+2(0), -2+2(1), 5+2(-3)] = [0, 0, -1] 이제 행렬은: [[1, 2, 3], [0, 1, -3], [0, 0, -1]]

3. 3단계 — 피벗 개수 세기

모든 행에 0이 아닌 선두 성분이 있습니다: 1, 1, -1. 세 행 모두 0이 아니므로 rank(A) = 3입니다. A는 랭크 3인 3×3 행렬이므로 완전 랭크이며 가역입니다. 이는 det(A) = 1(5·8-3·0) - 2(2·8-3·1) + 3(2·0-5·1) = 40 - 26 - 15 = -1 과 일치하며, 0이 아닌 값이므로 완전 랭크임을 확인해줍니다.

결과: A = [[1,2,3],[2,5,3],[1,0,8]]에 대해 rank(A) = 3. 0이 아닌 피벗 행이 세 개이며, 0이 아닌 행렬식 -1과 일치합니다.

예제 풀이: 랭크 부족 행렬의 랭크 구하기

이번에는 B = [[1, 2, -1], [2, 4, 1], [3, 6, 3]]를 생각해봅시다. 2열이 정확히 1열의 두 배(2 = 2·1, 4 = 2·2, 6 = 2·3)라는 점에 주목하세요 — 이 행렬이 완전 랭크가 아닐 것이라는 강한 힌트입니다.

1. 1단계 — 피벗 아래의 1열 소거하기

피벗은 b₁₁ = 1입니다. R2 = R2 - 2R1: [2-2(1), 4-2(2), 1-2(-1)] = [0, 0, 3] R3 = R3 - 3R1: [3-3(1), 6-3(2), 3-3(-1)] = [0, 0, 6] 이제 행렬은: [[1, 2, -1], [0, 0, 3], [0, 0, 6]]

2. 2단계 — 피벗 아래의 3열 소거하기

2열에는 사용 가능한 피벗이 없으므로(1행 아래의 두 성분이 모두 0), 3열로 이동하면 2행에 피벗 3이 있습니다. R3 = R3 - 2R2: [0-2(0), 0-2(0), 6-2(3)] = [0, 0, 0] 이제 행렬은: [[1, 2, -1], [0, 0, 3], [0, 0, 0]]

3. 3단계 — 피벗 개수 세기

0이 아닌 행은 두 개뿐입니다: 1행(1열에 피벗)과 2행(3열에 피벗). 3행은 전부 0입니다. 따라서 B가 3×3 행렬임에도 rank(B) = 2입니다. 이는 처음에 발견한 열의 종속 관계, 즉 2열 = 2 × 1열과 일치하며, 따라서 세 열이 오직 2차원 공간만을 생성함을 뜻합니다.

결과: 3×3 행렬에 대해 rank(B) = 2 — 2열 = 2 × 1열이기 때문에 완전 랭크보다 한 차원 부족합니다.

정방행렬을 위한 행렬식 지름길 사용하기

n×n 정방행렬에는 지름길이 있습니다: 행렬식을 계산하는 것입니다. det(A) ≠ 0이면 그 행렬은 자동으로 완전 랭크이며, 즉 rank(A) = n이므로 행 축소가 필요 없습니다. det(A) = 0이면 rank(A) < n임은 알 수 있지만, 행렬식만으로는 정확한 랭크를 알 수 없습니다. 랭크가 n보다 정확히 얼마나 낮은지 알아내려면 여전히 행 축소(또는 더 작은 부분행렬의 행렬식 확인)가 필요합니다.

1. 1단계 — 행렬식 계산하기

C = [[4, 2], [2, 1]]에 대해: det(C) = (4)(1) - (2)(2) = 4 - 4 = 0.

2. 2단계 — det = 0이므로 행 축소로 랭크가 n보다 낮음을 확인하기

R2 = R2 - 0.5R1: [2-0.5(4), 1-0.5(2)] = [0, 0] 이제 행렬은: [[4, 2], [0, 0]]. 0이 아닌 행이 하나뿐이므로 rank(C) = 1이며, 2가 아닙니다.

정방행렬 지름길: det ≠ 0이면 즉시 rank = n(완전 랭크)임을 알 수 있습니다. det = 0은 rank < n만을 알려줄 뿐이며, 정확한 값은 행 축소로 구합니다.

행 랭크와 열 랭크: 왜 항상 같은가?

놀랍게 느껴질 수 있지만, 정방행렬이든 아니든 모든 행렬에 대해 선형독립인 행의 최대 개수는 항상 선형독립인 열의 최대 개수와 같습니다. 이 결과는 때때로 랭크 정리(rank theorem)라고 불리며, 그래서 선형대수 강의에서는 행 랭크와 열 랭크를 따로 구분하지 않고 그냥 '랭크'라고 말할 수 있습니다. 직관적으로 이해하는 한 가지 방법은 이렇습니다: 행 축소는 오직 행을 결합하고 재배열할 뿐이며, 그 결과 생기는 피벗 열의 개수는 원래 행렬에서 독립인 열의 개수와 정확히 같고, 0이 아닌 행의 개수는 독립인 행의 개수입니다. 두 값 모두 동일한 피벗 집합에서 나오므로 반드시 일치합니다. 앞서 예제로 다룬 B = [[1, 2, -1], [2, 4, 1], [3, 6, 3]]의 경우, 행 축소된 형태의 피벗은 1열과 3열에 있으며, 이는 정확히 2개의 열이 독립임을 확인해주고 2개의 독립인 행과 일치합니다.

행 랭크는 항상 열 랭크와 같습니다. 이 공통 값을 단순히 행렬의 랭크라고 부르며, 별도의 '행 랭크 계산기'와 '열 랭크 계산기'는 존재하지 않습니다.

랭크는 연립방정식에 대해 무엇을 알려주는가?

연립일차방정식 Ax = b에서 랭크는 해집합의 종류를 정확히 결정합니다. 계수행렬의 rank(A)와, 상수항을 추가 열로 붙인 첨가행렬(augmented matrix)의 rank([A|b])를 비교합니다. rank(A) < rank([A|b])이면 그 계는 모순(inconsistent)이며 해가 없습니다. rank(A) = rank([A|b]) = n(미지수 개수)이면 그 계는 정확히 하나의 해를 가집니다. rank(A) = rank([A|b]) < n이면 그 계는 무수히 많은 해를 가지며, n - rank개의 자유변수가 있습니다.

1. 1단계 — 첨가행렬 세우기

계수행렬 B = [[1, 2, -1], [2, 4, 1], [3, 6, 3]]와 상수 b = (4, 7, 10)을 사용하면: [1, 2, -1 | 4] [2, 4, 1 | 7] [3, 6, 3 | 10]

2. 2단계 — 첨가행렬을 행 축소하기

R2 = R2 - 2R1: [0, 0, 3 | -1] R3 = R3 - 3R1: [0, 0, 6 | -2] R3 = R3 - 2R2: [0, 0, 0 | 0] 마지막 행이 0 = 0이 되며 이는 항상 참입니다 — 따라서 rank([A|b]) = 2이며 rank(A) = 2와 일치합니다.

3. 3단계 — 결과 해석하기

rank(A) = rank([A|b]) = 2 < 3(미지수 개수)이므로, 이 계는 자유변수 1개(y)를 가지는 무수히 많은 해를 가집니다. 이를 b = (4, 7, 9)인 경우와 비교해보면, 같은 과정에서 마지막 행이 0 = -1이 되어 불가능한 방정식이 됩니다. 이 경우 rank(A) = 2이지만 rank([A|b]) = 3이므로, 그 계는 아예 해를 가지지 않습니다.

연립방정식에 대한 랭크 판정 기준: rank(A) < rank([A|b])이면 해 없음; 둘 다 n과 같으면 해 하나; 둘이 같지만 n보다 작으면 무수히 많은 해.

행렬 랭크 계산 시 흔히 저지르는 실수

학생들이 손으로 랭크를 계산할 때 반복적으로 나타나는 몇 가지 오류가 있습니다.

1. 실수 1 — 랭크와 행렬 크기를 혼동하기

4×4 행렬이라고 해서 자동으로 랭크가 4가 되는 것은 아닙니다. 랭크는 행이나 열의 개수가 아니라 선형독립 여부에 달려 있습니다.

2. 실수 2 — 피벗 위치가 0일 때 행 맞바꾸기를 잊기

피벗으로 필요한 성분이 0인데 그 아래 행의 같은 열에 0이 아닌 값이 있다면, 계속 진행하기 전에 반드시 행을 맞바꿔야 합니다 — 이 단계를 건너뛰면 잘못된 사다리꼴과 잘못된 랭크가 나옵니다.

3. 실수 3 — det = 0이면 rank = 0이라고 착각하기

정방행렬에서 det(A) = 0은 rank(A) < n만을 의미합니다. 실제 랭크는 n-1, n-2, 또는 그보다 더 작은 어떤 값일 수도 있으며, 정확히 알아내려면 여전히 행 축소가 필요합니다.

4. 실수 4 — 행 축소를 너무 일찍 멈추기

랭크는 완전히 축소된 사다리꼴에서 읽어내야 합니다. 소거 과정을 중간에 멈추면 0이 아닌 것처럼 보이지만 한 번 더 연산하면 0이 될 행이 남아 있을 수 있어, 랭크가 실제보다 많게 계산될 수 있습니다.

가장 흔한 랭크 오류: 소거가 끝나기 전에 랭크를 읽어버리는 것. 피벗을 세기 전에 항상 행 축소를 끝까지 마치세요.

연습 문제: 행렬 랭크 이해도 확인하기

다음 세 문제를 직접 풀어본 뒤, 아래의 정답과 행 축소 과정을 비교해보세요.

1. 문제 1 — D = [[2, 4], [1, 2]]에 대해 rank(D)를 구하시오

정답: det(D) = (2)(2) - (4)(1) = 0이므로 rank < 2입니다. R2 = R2 - 0.5R1을 계산하면 [0, 0]이 됩니다. 0이 아닌 행이 하나만 남으므로 rank(D) = 1입니다.

2. 문제 2 — E = [[1, 0, 2], [0, 1, 1], [1, 1, 3]]에 대해 rank(E)를 구하시오

정답: R3 = R3 - R1 - R2를 계산하면 [1-1-0, 1-0-1, 3-2-1] = [0, 0, 0]이 됩니다. 1행과 2행은 0이 아니며 독립(각각 1열, 2열에 피벗)이므로 rank(E) = 2입니다.

3. 문제 3 — x - y = 3과 2x - 2y = 6은 서로 모순 없이 성립하는가, 그리고 계수행렬의 랭크는 얼마인가?

정답: 계수행렬 [[1, -1], [2, -2]]는 2행 = 2 × 1행이므로 rank = 1입니다. 첨가행렬 [[1, -1 | 3], [2, -2 | 6]] 역시 상수 열을 포함해 2행 = 2 × 1행이므로 그 랭크 또한 1입니다. 두 랭크가 모두 1로 같고 이는 미지수 2개보다 작으므로, 이 계는 모순 없이 무수히 많은 해를 가지며 — 두 방정식은 같은 직선을 나타냅니다.

풀이 검산: 계산된 랭크가 너무 높아 보이면, 완전히 사다리꼴로 축소한 뒤 '0이 아니다'라고 판단한 각 행이 실제로 0이 아닌 피벗을 갖는지 다시 확인하세요.

단계별 연습을 위해 행렬 랭크 계산기를 사용해야 하는 이유

긴 행렬을 손으로 행 축소하다 보면 실수하기 쉽습니다 — 2행에서 생긴 작은 산술 실수 하나가 그 아래 모든 행으로 퍼져나갑니다. 각 소거 단계를 보여주는 행렬 랭크 계산기를 사용하면 최종 랭크가 맞는지만 확인하는 것이 아니라, 자신의 풀이를 한 줄씩 점검하며 정확히 어디서 오류가 생겼는지 찾아낼 수 있습니다. Solvify의 단계별 풀이 솔버와 AI 수학 튜터는 이 가이드와 같은 방식으로 행 축소, 행렬식 지름길, 랭크 문제를 함께 풀어나가므로, 각 단계의 논리를 놓치지 않고 숙제를 검산하거나 시험을 준비하거나 특정 행렬에서 막힌 부분을 해결할 수 있습니다.

태그:
linear algebraalgebracalculatorguide

지금 숙제 도움 받기

수백만 명의 학생들과 함께 AI 수학 풀이 도구를 사용하여 숙제 도움을 받으세요. 수학 문제에 대한 즉각적인 해결책, 단계별 설명 및 24/7 숙제 지원을 받으세요.

iOS 및 Android 기기에서 사용 가능