크로네커 곱(텐서곱) 계산기 쉽게 이해하기 — 개념과 원리
이 계산기는 두 행렬의 크로네커 곱(텐서곱) A ⊗ B를 구하고, 순서가 중요함을 보여 주려고 B ⊗ A도 함께 계산합니다. 결과의 크기와 성분 수도 알려 줍니다. 양자 컴퓨팅(큐비트 상태와 게이트 결합), 선형대수, 행렬방정식의 벡터화, 신호·영상 처리에 씁니다.
계산 방법
m × n 행렬 A와 p × q 행렬 B에 대해 A ⊗ B는 mp × nq 블록 행렬입니다.
[a₁₁B a₁₂B …; a₂₁B a₂₂B …; …]
A의 각 성분 aᵢⱼ를 aᵢⱼ에 B 전체를 곱한 블록으로 바꿉니다. 성분으로 쓰면 p(i − 1) + k행, q(j − 1) + l열의 원소가 aᵢⱼ·bₖₗ입니다. 크기는 어떻게 조합해도 됩니다. 결과를 읽기 쉽도록 입력은 각각 4 × 4까지로 제한합니다.
원리
크로네커 곱은 두 대상을 동시에 다루는 행렬을 만듭니다. A가 벡터 x를, B가 벡터 y를 변환한다면, A ⊗ B는 합친 벡터 x ⊗ y를 정확히 (Ax) ⊗ (By)로 변환합니다. 양자 컴퓨팅에서 두 큐비트 상태는 한 큐비트 상태들의 텐서곱이고, 각 큐비트에 따로 게이트를 적용하는 것은 게이트들의 크로네커 곱입니다. 이 곱은 교환법칙이 성립하지 않아 B ⊗ A는 같은 수를 다른 배치로 담고 있으며, 행과 열의 순서를 바꾸면 A ⊗ B와 같아집니다.
예제 풀이
기본값은 A = [1 2; 3 4], B = [0 5; 6 7]입니다.
- 왼쪽 위 블록 1·B = [0 5; 6 7], 오른쪽 위 2·B = [0 10; 12 14]
- 왼쪽 아래 3·B = [0 15; 18 21], 오른쪽 아래 4·B = [0 20; 24 28]
- A ⊗ B = [0 5 0 10; 6 7 12 14; 0 15 0 20; 18 21 24 28]
- 크기 4 × 4, 성분 16개
- B ⊗ A = [0 0 5 10; 0 0 15 20; 6 12 7 14; 18 24 21 28]로 A ⊗ B와 다릅니다.
결과 해석
결과는 A의 성분마다 하나씩 블록으로 짜여 있습니다. 크기가 맞으면 (A ⊗ B)(C ⊗ D) = AC ⊗ BD, (A ⊗ B)ᵀ = Aᵀ ⊗ Bᵀ가 성립하고, 정사각행렬이면 det(A ⊗ B) = det(A)^p·det(B)^n입니다(n, p는 A, B의 크기). A ⊗ B의 고윳값은 A의 고윳값과 B의 고윳값을 하나씩 곱한 값 전체입니다.
흔한 실수
- 안쪽 크기가 맞아야 하는 보통의 행렬곱과 혼동하는 경우
- A ⊗ B = B ⊗ A라고 기대하는 경우
- 크기가 같아야 하는 성분별 곱(아다마르 곱)과 혼동하는 경우
- 블록 순서를 틀리는 경우(블록 배치는 A를 따르고, 각 블록은 B의 복사본입니다)
자주 묻는 질문
텐서곱과 크로네커 곱은 같은 것인가요?
표준기저에서 두 선형사상의 텐서곱을 나타내는 행렬이 크로네커 곱입니다.
양자 컴퓨팅에서는 어떻게 쓰나요?
여러 큐비트 상태와 각 큐비트에 따로 작용하는 게이트를 크로네커 곱으로 만듭니다.
A ⊗ B의 크기는 얼마인가요?
A가 m × n, B가 p × q이면 결과는 mp × nq입니다.
출처: Wolfram MathWorld, "Kronecker Product"