이번 글의 목표는
다항식의 곱셈을 정확히 이해하고,
교환법칙·결합법칙·분배법칙이 왜 성립하는지 한 번에 이해하기.
- 다항식의 핵심은 항끼리 곱한 뒤, 같은 차수끼리 정리하는 것
- 배열(합성곱) 관점은 이 과정을 쉽게 보여주는 도구
1. 다항식 곱셈의 기본 정의
두 다항식을 곱할 때는 항상 같은 규칙을 씁니다.
- 한쪽의 각 항을 다른 쪽의 모든 항과 곱한다.
- 마지막에 같은 차수끼리 더한다.
예시:
(2x2+3x+1)(x+4)
|
x |
4 |
| 2x2 |
2x3 |
8x2 |
| 3x |
3x2 |
12x |
| 1 |
x |
4 |
같은 차수끼리 정리하면
2x3+11x2+13x+4
이 됩니다.
2. 왜 세로셈(3자리×2자리)과 같은가?
수의 곱셈 231×14를 생각해 보면,
- 231×4를 쓰고
- 231×10을 자리 맞춰 이동해서 쓰고
- 같은 자리끼리 더합니다.
다항식도 구조가 같습니다.
- (2x2+3x+1)×4
- (2x2+3x+1)×x (차수가 1 올라가므로 한 칸 이동과 같은 효과)
- 같은 차수끼리 더함
즉,
- 수의 곱셈: 같은 자리값끼리 합침
- 다항식 곱셈: 같은 차수끼리 합침
3. 배열로 옮겨 보면 (합성곱)
다항식을 계수 배열로 바꿔 봅시다.
- 2x2+3x+1→[2,3,1]
- x+4→[1,4]
이제 곱셈 과정을 배열로 쓰면:
- [2,3,1]×4=[8,12,4]
- [2,3,1]×x=[2,3,1,0] (한 칸 이동)
- 같은 위치끼리 더하면 [2,11,13,4]
여기서 합성곱을 도장 비유로 보면 훨씬 직관적입니다.
- 원본 도장: P=[2,3,1]
- Q의 각 계수는 "원본 도장 P를 몇 배로 만들지"를 정함
- Q의 항 차수는 "도장을 오른쪽으로 몇 칸 이동해 찍을지"를 결정
즉, Q의 한 항을 볼 때마다
- P의 각 계수에 Q의 현재 항 계수를 곱해 부분곱 도장을 만들고
- 그 항의 차수만큼 옆으로 밀어 찍고
- 이미 찍힌 자국과 겹치는 칸은 더해 누적합니다.
그래서 1변수에서도 합성곱은
"부분곱 도장을 차수만큼 옮겨가며 겹쳐 찍고,
겹친 칸의 값을 더하는 과정"
으로 이해할 수 있습니다. 아래 퀴즈의 Phase 2(부분곱 입력)가 바로 이 과정을 그대로 구현한 단계입니다.
이 방식이 바로 합성곱(컨볼루션)입니다.
중요 포인트:
- 다항식 개념이 바뀌는 것이 아님
- "같은 차수끼리 정리"를 배열에서는 "같은 칸끼리 더하기"로 본 것
아래 "다항식의 곱 시각화"에서 단계별로 확인해 보세요.
4. 결과의 i번째 칸으로 보면 법칙이 보인다
배열
- P=[p0,p1,p2,…]
- Q=[q0,q1,q2,…]
의 합성곱 결과를 R=P∗Q=[r0,r1,r2,…]라고 하면:
- r0=p0q0
- r1=p0q1+p1q0
- r2=p0q2+p1q1+p2q0
- r3=p0q3+p1q2+p2q1+p3q0
즉, ri는 인덱스 합이 i인 곱들을 전부 더한 값입니다.
먼저 실제 다항식 예시를 하나 보겠습니다.
P(x)=2x2+3x+1,Q(x)=x+4
배열로 바꾸면
- P=[2,3,1]
- Q=[1,4]
이고 결과는
R=[2,11,13,4]
입니다. 여기서 가운데 값 11은 r1이고,
인덱스 합이 1이 되는 쌍만 모아서 계산합니다.
- (0,1): p0q1=2⋅4=8
- (1,0): p1q0=3⋅1=3
왜 이 둘만 쓰는가?
- 규칙이 "행 인덱스 + 열 인덱스 = 결과 인덱스"이기 때문입니다.
- 지금은 결과 인덱스가 1이므로 가능한 쌍은 (0,1),(1,0)뿐입니다.
따라서
r1=2⋅4+3⋅1
가 되고, r1=11입니다.
다항식으로 연결하면,
- p0=2는 2x2, q1=4는 상수 4
- p1=3는 3x, q0=1는 x
이라서 둘 다 x2항을 만들고,
8x2+3x2=11x2
로 정리됩니다.
이제 이 i번째 요소 구성으로 세 법칙을 봅시다.
4-1, 4-2, 4-3 자세히 보기 (교환·결합·분배)
4-1. 교환법칙
P∗Q=Q∗P
(P∗Q)의 i번째 요소를
ri=p0qi+p1qi−1+⋯+piq0
라고 쓰면, (Q∗P)의 i번째 요소는
ri′=q0pi+q1pi−1+⋯+qip0
입니다. 각 항은 같은 곱의 순서만 바뀐 것이므로 ri=ri′.
즉, 교환법칙이 성립합니다.
예를 들어 i=2이면
r2=p0q2+p1q1+p2q0,r2′=q0p2+q1p1+q2p0
이고, 각 항이 짝을 이루어 완전히 같습니다.
즉, i번째 요소를 하나씩 비교하면 모든 칸이 같아집니다.
4-2. 결합법칙
(P∗Q)∗T=P∗(Q∗T)
i번째 요소만 보면,
- ((P∗Q)∗T)i도
- (P∗(Q∗T))i도
결국 인덱스 합이 i인 paqbtc 항들을 모두 더한 값입니다.
중간에 먼저 계산하는 괄호만 다르고,
최종적으로 i번째 요소에 모이는 항의 집합이 같으므로 결합법칙이 성립합니다.
직관적으로는,
- 왼쪽은 먼저 P,Q를 섞어 부분합을 만든 뒤 T를 합치고
- 오른쪽은 먼저 Q,T를 섞어 부분합을 만든 뒤 P를 합칩니다.
하지만 i번째 칸 입장에서는 결국 같은 원소 3개를 뽑아 만든 곱들만 모입니다.
그래서 괄호 순서가 달라도 결과가 같습니다.
4-3. 분배법칙
P∗(Q+T)=P∗Q+P∗T
i번째 요소에서 보면
- 왼쪽: p0(qi+ti)+p1(qi−1+ti−1)+⋯
- 항별 분배 후: (P∗Q)의 i번째 요소 + (P∗T)의 i번째 요소
이므로 분배법칙이 성립합니다.
예를 들어 i=1이면
(P∗(Q+T))1=p0(q1+t1)+p1(q0+t0)=(p0q1+p1q0)+(p0t1+p1t0)=(P∗Q)1+(P∗T)1
처럼 i번째 요소에서 바로 확인됩니다.
5. 1변수 곱셈 연습 퀴즈
아래 퀴즈는 2장/3장과 같은 방식으로,
- 문제를 보고
- 내림차순 계수 배열을 입력하고
- 부분곱 과정을 확인
할 수 있도록 만든 실습 요소입니다.
6. 2변수 다항식으로 확장
핵심은 1변수와 같습니다.
- 1변수: 계수 1차원 배열
- 2변수: 계수 2차원 배열(행렬)
- 연산 규칙: 계수는 곱하고, 지수(행/열 위치)는 더해서 누적
즉, 2변수도 "배열로 계산"할 수 있습니다.
6-1. 행렬(2차원 배열)로 곱셈 예시
예시: P(x,y)=x+y, Q(x,y)=x−y
결과 행렬 R는 0으로 시작해서, 아래 누적 연산으로 만듭니다.
R[r+u,c+v]+=Q[r,c]⋅P[u,v]
즉, Q에서 0이 아닌 값이 있는 요소마다 P 도장을 만들고, 위치만큼 이동해 겹쳐 찍으며 더하는 방식입니다.
한 줄로 말하면,
Q의 계수로 P를 곱해 도장을 만든 뒤,
겹쳐 찍듯이 누적해서 더하는 것이 2차원 합성곱입니다.
이 예시의 최종 결과는
(x+y)(x−y)=x2−y2
입니다. (겹치는 xy 항은 0으로 상쇄)
아래 시각화에서 직접 식을 입력하면,
도장 생성 -> 겹치기 -> 누적 덧셈이 한 화면에서 순차적으로 진행됩니다.
7. 핵심 정리
- 다항식 곱셈의 본질: 항끼리 곱하고, 같은 차수끼리 더하기
- 세로셈과 같은 구조를 가지므로 과정이 직관적임
- 배열(합성곱) 관점은 원리를 쉽게 보이게 하는 설명 도구임
- 결과의 i번째 칸 관점으로 보면 교환·결합·분배법칙 이유를 한 번에 이해할 수 있음
한 줄 결론:
다항식의 곱셈은 복잡한 새 규칙이 아니라,
"분배 + 같은 차수 정리"를 체계적으로 수행하는 과정이다.
💬 댓글
이 글에 대한 의견을 남겨주세요