연산의 종류와 행렬의 크기(행의 수·열의 수)를 고르고, 칸에 성분을 입력하세요. 전치 Aᵀ와 거듭제곱 Aⁿ은 행렬 A만 씁니다.
목차
이 페이지에서 할 수 있는 것
- 2×2~4×4(2×3 같은 직사각형 모양도 가능) 행렬끼리의 덧셈 \(A+B\), 뺄셈 \(A-B\), 곱셈 \(AB\)를 바로 계산할 수 있습니다
- 행과 열을 바꾸는 전치 \(A^{T}\)와 정사각행렬의 거듭제곱 \(A^{n}\)(\(n\)은 1~10)도 계산할 수 있습니다
- 곱셈의 ‘행 × 열의 내적’ 등 계산 방법을 실제 수의 풀이 과정으로 확인할 수 있습니다
- 공식의 쉬운 해설과 Excel·Google 스프레드시트(MMULT, TRANSPOSE)·Python에 복사해 쓸 수 있는 수식도 이 페이지에 모아 두었습니다
이 계산은 어디에 쓰일까요?
3D 그래픽에서는 캐릭터를 회전하거나 확대·축소하는 변환을 ‘좌표에 행렬을 곱하는’ 계산으로 합니다. 여러 변환을 연달아 할 때도 행렬끼리 먼저 곱해 하나의 행렬로 합칠 수 있습니다.
게임기나 컴퓨터의 GPU(그래픽 처리 장치)는 이런 행렬의 곱셈을 엄청난 양으로 해내기 위한 전용 계산기입니다.
디지털 이미지는 각 화소의 밝기를 행과 열로 늘어놓은 행렬 그 자체입니다. 사진 앱의 흐림·선명하게 같은 필터는 이 행렬에 대한 연산으로 계산합니다.
‘이미지를 행렬로 보는’ 생각은 이미지 인식 같은 AI 기술의 출발점이기도 합니다.
미지수가 많은 연립방정식도 계수를 행렬로 정리하면 \(A\boldsymbol{x} = \boldsymbol{b}\)라는 하나의 식으로 쓸 수 있습니다.
건물의 강도 계산이나 전기 회로의 해석에서는 수천~수만 개의 방정식을 이 꼴로 만들어 컴퓨터의 행렬 계산으로 한꺼번에 풉니다.
역과 역, 사람과 사람의 연결을 ‘이어져 있으면 1, 아니면 0’으로 나타낸 행렬(인접행렬)을 만들면, 거듭제곱 \(A^{n}\)의 (\(i\), \(j\)) 성분은 ‘\(i\)에서 \(j\)까지 정확히 \(n\)번 연결을 따라가는 방법의 수’가 됩니다.
이 생각은 길 찾기 서비스나 SNS의 ‘친구의 친구’ 분석의 기초 중 하나입니다.
한국은행 등이 작성하는 산업연관표는 각 산업이 다른 산업에서 얼마나 사들이는지를 큰 행렬로 나타낸 것입니다. ‘어떤 산업의 수요가 늘면 다른 산업의 생산이 얼마나 늘어나는가’ 하는 파급 효과는 이 표에 대한 행렬 계산으로 어림합니다(노벨 경제학상을 받은 레온티예프가 개발한 방법).
글이나 이미지를 다루는 AI(신경망)의 계산은 대부분 ‘입력된 수의 나열에 학습으로 얻은 행렬을 곱하는’ 일의 반복입니다.
AI를 학습시키고 움직이는 계산의 많은 부분이 행렬의 곱셈이기 때문에, 행렬 계산에 강한 GPU가 AI 개발에 꼭 필요해졌습니다.
공식
용어·기호 해설
기호
| \(A,\ B\) | 에이, 비 | 행렬에 붙이는 이름. 행렬은 알파벳 대문자로 나타내는 것이 관례입니다. |
| \(a_{ij}\) | 에이 아이 제이 | 행렬 \(A\)의 (\(i\), \(j\)) 성분(위에서 \(i\)번째 행, 왼쪽에서 \(j\)번째 열에 있는 수). 오른쪽 아래의 작은 문자(첨자)가 ‘위치’를 나타냅니다. |
| \(b_{ij}\) | 비 아이 제이 | 행렬 \(B\)의 (\(i\), \(j\)) 성분. 읽는 방법은 \(a_{ij}\)와 같고 행렬의 이름만 다릅니다. |
| \(m \times n\) | 엠 곱하기 엔 | 행렬의 크기(꼴). \(m\)개의 행(가로줄)과 \(n\)개의 열(세로줄)로 이루어진 행렬을 \(m \times n\) 행렬이라고 합니다(예: 2×3 행렬은 수가 세로로 2개, 가로로 3개, 모두 6개 늘어선 행렬). |
| \(c_{ij}\) | 시 아이 제이 | 곱 \(AB\)를 \(C\)라고 둘 때 \(C\)의 (\(i\), \(j\)) 성분. |
| \(A^{T}\) | 에이 트랜스포즈(A의 전치) | \(A\)의 전치행렬. 행과 열을 바꾼 행렬이며, \(A^{\top}\)나 \(A'\)으로 쓰기도 합니다. |
| \(A^{n}\) | 에이의 엔제곱 | \(A\)를 \(n\)개 곱한 행렬. 정사각행렬에서만 정의됩니다. |
| \(\sum\) | 시그마 | ‘모두 더한다’는 것을 나타내는 기호. \(\sum_{k=1}^{n} a_{ik} b_{kj}\)는 \(k\)를 1부터 \(n\)까지 바꾸어 가며 \(a_{ik} b_{kj}\)를 모두 더하라는 뜻입니다. |
용어
| 행렬 | 수를 직사각형(가로세로) 모양으로 늘어놓은 것. 늘어선 수 하나하나를 성분이라고 합니다. 스프레드시트의 표처럼 ‘몇 번째 행, 몇 번째 열’로 위치를 나타냅니다. |
| 행 | 행렬의 ‘가로줄’. 위에서부터 차례로 제1행, 제2행, …으로 셉니다. 한국어판 Excel에서도 1행, 2행은 가로줄입니다. |
| 열 | 행렬의 ‘세로줄’. 왼쪽에서부터 차례로 제1열, 제2열, …로 셉니다. Excel의 A열, B열이 세로줄인 것과 같으니 ‘행은 가로, 열은 세로’로 기억하세요. |
| 성분 | 행렬 안의 수 하나하나. 원소라고도 합니다. 제\(i\)행 제\(j\)열의 성분을 (\(i\), \(j\)) 성분이라 하고 \(a_{ij}\)처럼 첨자로 나타냅니다. |
| 정사각행렬 | 행의 수와 열의 수가 같은(정사각형 모양의) 행렬. 거듭제곱이나, 이 페이지에서 다루지 않는 행렬식·역행렬은 정사각행렬에서만 생각합니다. |
| 전치행렬 | 행과 열을 바꾼 행렬. \(m \times n\) 행렬을 전치하면 \(n \times m\) 행렬이 됩니다. |
| 내적 | 두 수의 나열을 ‘앞에서부터 차례로 짝지어 곱해 모두 더한’ 값. 행렬의 곱셈에서는 A의 행과 B의 열의 내적이 곱의 성분 하나가 됩니다. |
| 선형대수 | 행렬이나 벡터를 다루는 수학의 분야. 대학 1~2학년의 필수 과목으로 배우는 경우가 많고, 컴퓨터 그래픽·통계·AI 등 응용의 바탕이 됩니다. |
먼저 알아 두면 좋은 내용
이 페이지의 계산을 ‘의미를 알고’ 쓸 수 있도록, 먼저 알아 두면 좋은 내용을 정리했습니다.
| 정수와 유리수의 사칙계산(중학교 1학년, 12~13세) |
|
| 문자와 식, 첨자(중학교 1학년~고등학교, 12~18세) |
|
| 거듭제곱(중학교 1학년, 12~13세) |
|
| 표의 행과 열(초등학교부터) |
|
Excel로 계산하는 방법
| 행렬 A의 1행 | 1 | 2 |
| 행렬 A의 2행 | 3 | 4 |
| 행렬 B의 1행 | 5 | 6 |
| 행렬 B의 2행 | 7 | 8 |
| A + B의 1행 | =B1+B3 | =C1+C3 |
| A + B의 2행 | =B2+B4 | =C2+C4 |
| 행렬 A의 1행 | 9 | 8 |
| 행렬 A의 2행 | 7 | 6 |
| 행렬 B의 1행 | 1 | 2 |
| 행렬 B의 2행 | 3 | 4 |
| A − B의 1행 | =B1-B3 | =C1-C3 |
| A − B의 2행 | =B2-B4 | =C2-C4 |
| 행렬 A의 1행 | 1 | 2 |
| 행렬 A의 2행 | 3 | 4 |
| 행렬 B의 1행 | 2 | 0 |
| 행렬 B의 2행 | 1 | 2 |
| AB(1행부터 자동으로 채워짐) | =MMULT(B1:C2,B3:C4) |
| 행렬 A의 1행 | 1 | 2 | 3 |
| 행렬 A의 2행 | 4 | 5 | 6 |
| Aᵀ(1행부터 자동으로 채워짐) | =TRANSPOSE(B1:D2) |
| 행렬 A의 1행 | 1 | 1 |
| 행렬 A의 2행 | 0 | 1 |
| A³(1행부터 자동으로 채워짐) | =MMULT(MMULT(B1:C2,B1:C2),B1:C2) |
곱셈은 MMULT 함수, 전치는 TRANSPOSE 함수를 씁니다. 최신 Excel(Microsoft 365 등)에서는 결과가 옆 셀로 자동으로 채워집니다(동적 배열의 ‘분산’). 세 번째 표라면 AB는 4, 4, 10, 8, 다섯 번째 표라면 A³은 1, 3, 0, 1이 됩니다.
예전 버전의 Excel에서는 먼저 결과와 같은 크기의 범위를 선택한 뒤 수식을 입력하고 Ctrl+Shift+Enter로 확정하세요.
Google 스프레드시트로 계산하는 방법
| 행렬 A의 1행 | 1 | 2 |
| 행렬 A의 2행 | 3 | 4 |
| 행렬 B의 1행 | 5 | 6 |
| 행렬 B의 2행 | 7 | 8 |
| A + B의 1행 | =B1+B3 | =C1+C3 |
| A + B의 2행 | =B2+B4 | =C2+C4 |
| 행렬 A의 1행 | 1 | 2 |
| 행렬 A의 2행 | 3 | 4 |
| 행렬 B의 1행 | 2 | 0 |
| 행렬 B의 2행 | 1 | 2 |
| AB(1행부터 자동으로 채워짐) | =MMULT(B1:C2,B3:C4) |
| 행렬 A의 1행 | 1 | 2 | 3 |
| 행렬 A의 2행 | 4 | 5 | 6 |
| Aᵀ(1행부터 자동으로 채워짐) | =TRANSPOSE(B1:D2) |
| 행렬 A의 1행 | 1 | 1 |
| 행렬 A의 2행 | 0 | 1 |
| A³(1행부터 자동으로 채워짐) | =MMULT(MMULT(B1:C2,B1:C2),B1:C2) |
Google 스프레드시트에서는 MMULT, TRANSPOSE의 결과가 옆 셀로 자동으로 채워집니다(Ctrl+Shift+Enter는 필요 없습니다).
Python으로 계산하는 방법
A = [[1, 2], [3, 4]]
B = [[2, 0], [1, 2]]
def matrix_add(x, y): # 덧셈 (같은 위치의 성분끼리 더함)
return [[x[i][j] + y[i][j] for j in range(len(x[0]))] for i in range(len(x))]
def matrix_multiply(x, y): # 곱셈 (A의 행과 B의 열의 내적)
return [[sum(x[i][k] * y[k][j] for k in range(len(y))) for j in range(len(y[0]))] for i in range(len(x))]
def matrix_transpose(x): # 전치 (행과 열을 바꿈)
return [[x[i][j] for i in range(len(x))] for j in range(len(x[0]))]
def matrix_power(x, n): # 거듭제곱 (앞에서부터 차례로 n번 곱함)
result = x
for _ in range(n - 1):
result = matrix_multiply(result, x)
return result
print("A + B =", matrix_add(A, B))
print("AB =", matrix_multiply(A, B))
print("A의 전치 =", matrix_transpose(A))
print("A의 세제곱 =", matrix_power(A, 3))
LaTeX 등 수식 언어로 쓰는 법(복사 가능)
(A + B)ᵢⱼ = aᵢⱼ + bᵢⱼ
(A + B)_{ij} = a_{ij} + b_{ij}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub>
<mrow><mo>(</mo><mi>A</mi><mo>+</mo><mi>B</mi><mo>)</mo></mrow>
<mrow><mi>i</mi><mi>j</mi></mrow>
</msub>
<mo>=</mo>
<msub><mi>a</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub>
<mo>+</mo>
<msub><mi>b</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub>
</mrow>
</math>
(A + B)_(ij) = a_(ij) + b_(ij)
A + B
C := A + B;
C = A + B;
(A + B)_ij = a_ij + b_ij
cᵢⱼ = aᵢ₁b₁ⱼ + aᵢ₂b₂ⱼ + ⋯ + aᵢₙbₙⱼ
c_{ij} = \sum_{k=1}^{n} a_{ik} b_{kj}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>c</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub>
<mo>=</mo>
<munderover>
<mo>∑</mo>
<mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow>
<mi>n</mi>
</munderover>
<msub><mi>a</mi><mrow><mi>i</mi><mi>k</mi></mrow></msub>
<msub><mi>b</mi><mrow><mi>k</mi><mi>j</mi></mrow></msub>
</mrow>
</math>
c_(ij) = sum_(k=1)^(n) a_(ik) b_(kj)
A . B
C := A . B;
C = A * B;
c_ij = ∑_(k=1)^n a_ik b_kj
(Aᵀ)ᵢⱼ = aⱼᵢ
(A^{T})_{ij} = a_{ji}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub>
<mrow><mo>(</mo><msup><mi>A</mi><mi>T</mi></msup><mo>)</mo></mrow>
<mrow><mi>i</mi><mi>j</mi></mrow>
</msub>
<mo>=</mo>
<msub><mi>a</mi><mrow><mi>j</mi><mi>i</mi></mrow></msub>
</mrow>
</math>
(A^T)_(ij) = a_(ji)
Transpose[A]
C := LinearAlgebra:-Transpose(A);
C = A.';
(A^T)_ij = a_ji
Aⁿ = AA⋯A
A^{n} = \underbrace{AA\cdots A}_{n}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msup><mi>A</mi><mi>n</mi></msup>
<mo>=</mo>
<mi>A</mi><mi>A</mi><mo>⋯</mo><mi>A</mi>
</mrow>
</math>
A^n
MatrixPower[A, n]
C := A^n;
C = A^n;
A^n
ChatGPT 에게 물어서 계산하는 방법
당신은 행렬 계산 도우미입니다. 다음 계산을 Python 코드를 실제로 실행해서 하고, 실행 결과의 수치만을 근거로 답해 주세요(암산이나 추측으로 답하지 마세요). 행렬 A = [[1, 2], [3, 4]], B = [[2, 0], [1, 2]]에 대해 다음 행렬을 각각 구해 주세요. 1. 합 A + B 2. 차 A − B 3. 곱 AB 4. A의 전치행렬 5. A의 세제곱 각각 사용한 식(어느 성분끼리 어떻게 계산했는지)과 실행 결과의 행렬을 보여 주세요.
사용법
-
1숫자 입력계산하고 싶은 숫자를 입력란에 입력합니다
-
2계산‘계산’ 버튼을 누릅니다
-
3결과 확인계산 결과가 바로 표시됩니다. 계산의 원리와 공식 해설도 같은 페이지에서 확인할 수 있습니다
DataChef의 특징
전문 지식 없이도 직관적이고 간단하게 사용
개인정보를 등록하지 않고도 이용할 수 있습니다
"다운로드"를 누르면 파일이 자동으로 삭제됩니다
출처 표기 불필요
상업적 이용 허가 연락도 필요 없습니다