Lemma
수학, 거꾸로
도입 · 곱셈 규칙

직선과 포물선은 점에서 만난다. 두 원도 점. 3차 곡선과 직선은 점. 두 곡선의 차수를 곱한 값이 곧 그 수다.

그런데 평행한 두 직선은 0개. 포물선에 접하는 직선은 1개. 서로 만나지 않는 두 원은 0개. 곱셈 규칙이 깨진다. 각주 한 줄로 메울 일이 아니다 — 평면이 무엇인지를 다시 써야 한다.

수선은 세 단계로 이루어진다. 아래 위젯이 그 과정을 보여준다.

도구 사양
정의

사영 평면 위 차수 dd, ee인 두 대수 곡선은 정확히 ded·e 점에서 만난다 — 중복도까지 세서, 대수적 폐쇄체 위에서. 순진한 셈법은 세 군데서 깨지고, 정리는 그 셋을 한 번에 메운다.

적용

곡선 교점의 정확한 개수가 필요할 때 — “대략 d·e”가 아니라 정확히. 타원곡선 암호 (현·접선 군법칙은 직선이 3차 곡선을 정확히 3점에서 만난다는 사실에 기댄다), 원뿔 곡선 교점, 고전 대수기하, 컴퓨터 대수 시스템의 불변량 계산.

한계

실수 위 아핀 평면에 머물면 셈이 곳곳에서 깨진다 — 평행선 (사영 무한점이 필요), 접선 (중복도가 필요), 실수에서 만나지 않는 두 원 (복소수 좌표가 필요). 셋은 베주 정리의 결함이 아니라 평면이 너무 좁다는 신호다. 초월 곡선 (sin x와 직선은 무한히 많이 만난다)은 애초에 다루는 범위 밖이다 — 대수 곡선이 아니므로.

위젯 — 두 원뿔곡선, 네 교점
실수4
복소0
중복도 > 10
총합 (베주)4 = 2 · 2
Re xIm x복소 x-평면
네 프리셋을 순서대로 눌러보자. 일반은 4개의 실수 교점 (베주가 도움 없이 성립). 은 3개로 떨어져 보인다 — 중복도 표시를 켜면 접점이 두 번으로 센다. 분리는 0개로 보인다 — 복소 보기를 켜면 네 교점이 실평면 바깥에 있는 게 드러난다. 부분은 두 보정이 섞인다. 모든 프리셋의 총합은 4.
흐름
1

순진한 셈법의 세 가지 실패

차수 1 직선과 차수 2 포물선을 보자. y=mx+cy = mx + cy=x2y = x²에 대입하면 x에 대한 이차방정식 — 두 근, 두 교점. 12=21 · 2 = 2. 깔끔하다. 이제 세 군데서 깨뜨려 보자. (a) 평행한 두 직선 y=xy = xy=x+1y = x + 1 — 대입하면 0=10 = 1, 모순이다. 교점 0개, 11=11 · 1 = 1이 아니다. (b) 직선 y=0y = 0은 원점에서 y=x2y = x²접한다 — 두 점이 아니라 한 점에서 만난다. (c) 서로 만나지 않는 두 단위원 x2+y2=1x² + y² = 1(x3)2+y2=1(x − 3)² + y² = 1 — 교점 0개, 4개가 아니다.

곱셈 규칙은 맞을 때가 많아 정리처럼 보이지만, 틀릴 때도 많아 추측처럼 보인다. 둘 중 하나다 — 추측이거나, 아니면 평면이 잘못된 무대거나. 두 번째를 택한다.

2

보정 1 — 사영평면

직선은 방향 하나에 위치 하나를 더한 것이다. 평행선은 방향을 공유한다. 평면에 방향마다 새 점 하나씩을 더해 보자 — 그 방향의 이라 부른다. 그러면 평행한 두 직선은 방향이 같으므로 이 추가된 한 점을 공유하고, 평행하지 않은 두 직선은 원래 한 점에서 만난다. 이렇게 하면 서로 다른 임의의 두 직선은 정확히 한 점에서 만난다. 모든 방향의 무한원점을 한데 모으면 한 줄의 무한원선이 된다. 평면에 이 직선을 더한 것이 RP2ℝℙ²이다.

사영점은 [X:Y:Z][X : Y : Z]로 쓴다 — 셋이 모두 0은 아닌 세 수이며, 전체에 같은 수를 곱한 것은 같은 점으로 본다 (즉 [2:2:0],[1:1:0],[5:5:0][2 : 2 : 0], [1 : 1 : 0], [5 : 5 : 0]은 같은 점). affine (보통의 유한) 점은 [x:y:1][x : y : 1], 무한원점은 [X:Y:0][X : Y : 0]: 방향 (X,Y)(X, Y). §1의 두 평행선은 둘 다 [1:1:0][1 : 1 : 0]을 지난다 — “방향 (1, 1)“이라는 점이다. 실패 (a) 보정 완료.

3

보정 2 — 중복도

접선은 포물선과 기하적으로는 한 점에서 만나지만 대수적으로는 두 점이다. y=0y = 0y=x2y = x²에 대입하면 x2=0x² = 0중근 x=0x = 0이 나온다. 다항식은 그림이 잊는 것을 기억한다. 두 곡선이 한 점에서 갖는 는, 한 변수를 소거한 다항식이 그 점에서 몇 차로 사라지는가로 정의한다. 가로지름은 1, 단순 접촉은 2, 3중 접촉은 3, ⋯. 베주의 수는 언제나 중복도까지 더한 수, 날것 그대로가 아니다.

위 위젯에서 프리셋으로 바꾼 뒤 중복도 표시를 켜 보라: 접점에 ×2×2 라벨이 붙고, 보이던 3이 4로 채워진다. 실패 (b) 보정 완료.

4

보정 3 — 복소수 좌표

서로 만나지 않는 두 원 x2+y2=1x² + y² = 1(x3)2+y2=1(x − 3)² + y² = 1은 어디서도 만나지 않는 듯 보인다. 두 식을 빼면 6x+9=0−6x + 9 = 0, 즉 x=3/2x = 3/2. 그 x에서 첫째 원은 y2=19/4=5/4y² = 1 − 9/4 = −5/4 — 실수 해는 없지만 멀쩡한 복소수 해가 둘 있다: y=±i5/2y = ± i \sqrt{5} / 2. 두 원은 실제로 두 점 (3/2,±i5/2)(3/2, ± i \sqrt{5} / 2)에서 만난다 — 그 점이 R2ℝ²이 아니라 C2ℂ² 위에 있을 뿐이다.

위 위젯의 분리 프리셋은 실수 교점이 0개임을 보여준다 — 복소 보기를 켜면 옆 패널에 네 개의 빈 동그라미가 뜬다: 베주가 약속한 네 교점이 복소 x-평면 위에 찍힌 것이다. 실패 (c) 보정 완료.

# The disjoint-circles example, hand-eliminated.
# C1: x² + y² − 1     = 0
# C2: (x − 3)² + y² − 1 = 0
# Subtract: −6x + 9 = 0  →  x = 3/2.
# Plug back into C1: y² = 1 − 9/4 = −5/4  →  y = ± i √5 / 2.
import cmath
x = 3 / 2
ys = (cmath.sqrt(1 - x**2), -cmath.sqrt(1 - x**2))
[(x, y) for y in ys]
# → [(1.5, 1.118j), (1.5, -1.118j)]   (two complex intersections)
5

진술

세 가지 보정 — , 복소좌표, — 을 마치면 곱셈 규칙은 정리가 된다.

베주. 차수 dd, ee의 두 평면 곡선이 공통 성분을 갖지 않을 때 — CP2ℂℙ²에서, 중복도까지 세면 — 정확히 ded · e 점에서 만난다.

6

왜 성립하는가 — 종결식

한 변수를 소거한다. 두 다항식 f(x,y),g(x,y)f(x, y), g(x, y)yy에 대한 다항식 (계수는 xx의 식)으로 보면, 둘이 공통 근을 갖는 것은 yy에 대한 이 0이 되는 것과 동치다. ffyy-차수가 dd, ggyy-차수가 ee이면 종결식은 xx에 대한 차수 ded · e의 다항식이고, 그 ded · e개의 (중복도 포함) 복소근이 곧 ded · e개 교점의 xx좌표다. 두 원뿔곡선이라면: xx에 대한 4차 다항식. 네 근. 네 교점. 위 위젯은 바로 이 4차 방정식을 푼 결과다.

# Sylvester resultant of two conics in y → quartic in x.
import numpy as np

def resultant_y(c1, c2):
    """Each conic c = (a, b, c, d, e, k) for a x² + b xy + c y² + d x + e y + k.
       In y: A_i y² + B_i(x) y + C_i(x), with A_i = c_i, B_i = b_i x + e_i,
       C_i = a_i x² + d_i x + k_i.  Resultant in y of two quadratics is
       (A1 C2 − A2 C1)² − (A1 B2 − A2 B1)(B1 C2 − B2 C1)."""
    a1, b1, cc1, d1, e1, k1 = c1
    a2, b2, cc2, d2, e2, k2 = c2
    P = np.polynomial.Polynomial
    A1, A2 = cc1, cc2
    B1, B2 = P([e1, b1]), P([e2, b2])
    C1, C2 = P([k1, d1, a1]), P([k2, d2, a2])
    return (A1*C2 - A2*C1)**2 - (A1*B2 - A2*B1)*(B1*C2 - B2*C1)

# General preset: x²/4 + y² − 1 = 0   and   x² + y²/4 − 1 = 0
c1 = (1/4, 0, 1,    0, 0, -1)
c2 = (1,   0, 1/4,  0, 0, -1)
sorted(np.round(resultant_y(c1, c2).roots(), 4))
# → [(-0.8944+0j), (-0.8944+0j), (0.8944+0j), (0.8944+0j)]
#   (each root with multiplicity 2; the two y-values per x come back from c1)
7

이게 어디에 나타나나 — 같은 셈, 두 필러

베주는 교점을 세는 정리에서 출발해, 타원곡선 덧셈을 정확하게 만드는 장부가 된다. 양쪽에서 곱 ded \cdot e는 같은 수다. 다만 무엇을 세는지가 다를 뿐.

그래픽 : 두 원뿔곡선이 실제로 몇 점에서 만나는가 — 중복도, 사영점,
       복소근까지 다 셌을 때.
금융   : 타원곡선과 현이 만나는 세 번째 점 — 타원곡선 덧셈을 정의하는,
       숨어 있는 세 번째 교점.

곡선 교점 — 평면의 두 원뿔곡선은 정확히 네 점에서 만난다 — 세 가지 보정 (사영평면, 중복도, 복소근) 을 받아들이고 나면 그렇다. 위젯이 그 셈을 돌린다 — 접점은 중복도에 2를 더하고, 평행 점근선은 무한원점을 만들고, 분리된 두 원뿔곡선은 복소수 네 점에서 만난다. 베주가 “두 원뿔곡선이 만난다”의 의미를 정한다.

비트코인 서명 — 타원곡선의 차수는 3, 현의 차수는 1, 베주에 따라 둘은 31=33 \cdot 1 = 3점에서 만난다. 그중 둘은 현의 양 끝점이고, 세 번째가 타원곡선 덧셈에서의 이다. 서명 스킴은 이 세 번째 점 작도를 수백만 번 반복해 쌓아올린다 — 셈이 매번 정확해야 한다.

같은 정리, 다른 장부 — 그래픽은 “두 곡선이 어디서 만나는가”를 묻고, 금융은 “이 현 위의 세 번째 점이 무엇인가”를 묻는다. 베주가 그 세 번째 점이 존재하고 유일함을 보장하기에, ECDSA가 잘 정의된다.

exercises · 손으로 풀기
1위젯 읽기

분리 프리셋으로 바꿔라. 카운터의 실수 = 0이다. 보이는 총합이 4가 되려면 어느 토글을 켜야 하는가? 부분 프리셋도 같은 방식으로 답하라. 각 프리셋이 순진한 시각에서 무엇을 “놓치고 있는지” 한 문장씩 적어라.

2손계산 · 차수 1 × 2계산기 없이

y=x2y = x²y=2x1y = 2x − 1의 교점을 모두 구하라. 베주의 예측은 1 · 2 = 2. 이 경우 기하와 대수의 간극을 무엇이 메우는지 짚어라.

3무한원점 좌표

두 평행선 y=xy = xy=x+1y = x + 1의 유일한 교점을 의 점 [X:Y:Z][X : Y : Z]로 적어라. (힌트: 각 직선을 X,Y,ZX, Y, Z의 동차식으로 다시 쓰고 풀어라.)

4악마의 문제 · 원점의 3차

y=x3y = x³ (3차 곡선)와 직선 y=0y = 0 (차수 1)을 보자. 베주는 3개의 교점을 예측한다. 기하적으로는 하나 — 원점에서. 베주가 어떻게 만족되는지 정확히 말하고, 이 경우와 문제 2를 대비해 보아라.

5두 원의 무한원

일치하지 않는 두 원 x2+y2+ax+by+c=0x² + y² + a x + b y + c = 0을 보자. 차수의 곱은 4지만, 보통 보이는 affine 교점은 많아야 2개다. 나머지 둘은 어디 있는가? (힌트: 한 뒤 무한원선 Z=0Z = 0을 보라.) 이 두 점에는 이름이 있다. 그 결과: 이 두 점은 모든 원이 공유하는가, 아니면 주어진 쌍에만 해당하는가?

6합성 · 타원곡선의 씨앗

E:y2=x3xE : y² = x³ − x (차수 3)와 직선 L:y=mx+cL : y = m x + c (차수 1)을 보자. 베주: 세 교점. 셋 모두 affine이고 x좌표가 x1,x2,x3x₁, x₂, x₃라 하자. x1+x2+x3=m2x₁ + x₂ + x₃ = m²임을 보여라. (이 항등식이 타원곡선 군법칙의 씨앗이다 — E 위 두 점이 주어지면 그 현이 만드는 세 번째 교점은 기하적으로 결정되고, x좌표는 비에타가 공짜로 준다.)

용어집 · 이 페이지에서 쓰임 · 6
point at infinity·무한원점
각 *방향*마다 평면에 하나씩 추가하는 점. 같은 방향을 공유하는 평행선들이 거기서 만난다. 모든 무한원점을 모은 것이 무한원선. 사영평면에서는 서로 다른 두 직선이 정확히 한 점에서 만나며, 평행선의 경우 그 점이 무한원점이다.
projective plane·사영평면
보통 평면에 방향마다 무한원점을 하나씩 추가한 평면. 같은 방향을 공유하는 평행선들은 그 무한원점에서 만난다. 이 추가 후에는 서로 다른 두 직선이 정확히 한 점에서 만난다. 실사영평면 ℝℙ², 복사영평면 ℂℙ². 베주 정리는 ℝ²가 아니라 ℂℙ²에서 성립한다.
intersection multiplicity·교차 중복도
한 교점을 몇 번으로 셀지 정한 수. 두 곡선이 가로질러 만나면 한 번. 단순히 접하면 두 번 — 한 변수를 소거하면 그 점에서 이중근이 나온다. 더 높은 차수의 접촉이면 세 번, 네 번, … 베주 정리의 "정확히 de 점"은 중복도까지 더한 합이다.
resultant·종결식
두 다항식 P, Q로 만든 다항식으로, 둘이 공통근을 가질 때만 0이 된다. 두 원뿔곡선 (각각 y에 대해 차수 2, 계수는 x의 식)에서 종결식으로 y를 소거하면 x에 대한 차수 2·2 = 4 다항식이 나온다. 그 4개의 (복소수, 중복도 포함) 근이 곧 베주가 약속한 4개 교점의 x좌표.
homogenize·동차화
affine 방정식을 사영좌표로 다시 쓰는 절차: x → X/Z, y → Y/Z를 대입하고 Z를 정리해 모든 항의 총 차수가 같아지게 한다. Z = 1을 대입하면 원래 affine 방정식으로 돌아온다. 예: y = x² → YZ = X².
Vieta's formulas·비에타 공식
monic 다항식 xⁿ + aₙ₋₁ xⁿ⁻¹ + ⋯ + a₀의 근을 r₁, …, rₙ이라 하면: 근의 합 = −aₙ₋₁, 근의 곱 = (−1)ⁿ · a₀, 그리고 모든 기본대칭함수는 그에 대응하는 계수 (부호 교대). 다항식을 풀지 않고 그대로 읽는다.