10.36 이중수(Dual Number)의 대수적 구조

1. 이중수의 정의

이중수(dual number)는 다음의 형태를 가지는 수이다.

\tilde{a} = a + b\epsilon

여기서

  • a, b \in \mathbb{R}: 실수 부분과 이중 부분
  • \epsilon: 이중 단위(dual unit), \epsilon^2 = 0이지만 \epsilon \neq 0

이는 19세기 말 윌리엄 클리포드(William Kingdon Clifford)가 도입한 개념이며, 복소수 a + bi의 일반화로 볼 수 있다. 이중수와 복소수의 핵심적 차이는 단위의 제곱 규칙이다.

  • 복소수: i^2 = -1
  • 이중수: \epsilon^2 = 0

2. 이중수의 집합

모든 이중수의 집합은 \mathbb{D}로 표기한다.

\mathbb{D} = \{a + b\epsilon : a, b \in \mathbb{R}\}

이는 2차원 벡터 공간으로 표현될 수 있으며, 기저 \{1, \epsilon\}을 가진다.

3. 이중수의 연산

3.1 덧셈

(a_1 + b_1\epsilon) + (a_2 + b_2\epsilon) = (a_1 + a_2) + (b_1 + b_2)\epsilon

실수 부분과 이중 부분을 각각 더한다.

3.2 뺄셈

(a_1 + b_1\epsilon) - (a_2 + b_2\epsilon) = (a_1 - a_2) + (b_1 - b_2)\epsilon

3.3 곱셈

(a_1 + b_1\epsilon)(a_2 + b_2\epsilon) = a_1 a_2 + (a_1 b_2 + a_2 b_1)\epsilon + b_1 b_2\epsilon^2

\epsilon^2 = 0이므로 마지막 항이 사라진다.

= a_1 a_2 + (a_1 b_2 + a_2 b_1)\epsilon

이는 이중수 곱셈의 특징적 성질이며, “1차 항에서 정지“하는 연산이다.

3.4 나눗셈

a_2 \neq 0인 경우

\frac{a_1 + b_1\epsilon}{a_2 + b_2\epsilon} = \frac{(a_1 + b_1\epsilon)(a_2 - b_2\epsilon)}{(a_2 + b_2\epsilon)(a_2 - b_2\epsilon)} = \frac{a_1 a_2 + (a_2 b_1 - a_1 b_2)\epsilon}{a_2^2}

= \frac{a_1}{a_2} + \frac{a_2 b_1 - a_1 b_2}{a_2^2}\epsilon

이는 이중수 a_2 + b_2\epsilon의 역원이 존재하는 조건이 a_2 \neq 0임을 보인다.

4. 이중수의 역원

a + b\epsilon의 역원은

(a + b\epsilon)^{-1} = \frac{1}{a} - \frac{b}{a^2}\epsilon

이는 a \neq 0일 때만 존재한다. a = 0이면 이중수는 역원을 가지지 않는다.

4.1 영인자

a = 0인 이중수 b\epsilon은 “영인자(zero divisor)“이다. 즉, 영이 아닌 두 원소의 곱이 영이 될 수 있다.

(b_1\epsilon)(b_2\epsilon) = b_1 b_2\epsilon^2 = 0

이는 이중수가 체(field)가 아니라 환(ring)임을 의미한다.

5. 이중수의 대수적 성질

5.1 결합 법칙

((a_1 + b_1\epsilon)(a_2 + b_2\epsilon))(a_3 + b_3\epsilon) = (a_1 + b_1\epsilon)((a_2 + b_2\epsilon)(a_3 + b_3\epsilon))

5.2 가환 법칙

이중수 곱셈은 가환적이다.

(a_1 + b_1\epsilon)(a_2 + b_2\epsilon) = (a_2 + b_2\epsilon)(a_1 + b_1\epsilon)

이는 이중수가 가환 환(commutative ring)이라는 사실이다.

5.3 분배 법칙

덧셈과 곱셈 사이의 분배 법칙이 성립한다.

5.4 항등원

  • 덧셈 항등원: 0
  • 곱셈 항등원: 1

6. 이중수의 구조: 가환 환

이중수는 가환 환을 이룬다. 그러나 체가 아니다. 체가 되려면 모든 영이 아닌 원소가 역원을 가져야 하지만, 이중수의 경우 b\epsilon (b \neq 0)의 형태는 역원을 가지지 않는다.

7. 이중수의 테일러 전개와 자동 미분

이중수의 가장 중요한 응용 중 하나는 자동 미분(automatic differentiation)이다. 이중수를 사용하면 함수의 도함수를 닫힌 형태로 계산할 수 있다.

7.1 기본 원리

함수 f(x)에 이중수 x + \epsilon을 대입하면

f(x + \epsilon) = f(x) + f'(x)\epsilon + \text{higher order terms}

그러나 \epsilon^2 = 0이므로 2차 이상의 항이 모두 사라진다.

f(x + \epsilon) = f(x) + f'(x)\epsilon

즉, 이중수의 이중 부분이 정확히 f의 도함수이다. 이는 자동 미분의 핵심 아이디어이다.

7.2 예시: 다항식

f(x) = x^2의 경우

f(x + \epsilon) = (x + \epsilon)^2 = x^2 + 2x\epsilon + \epsilon^2 = x^2 + 2x\epsilon

이중 부분이 2x = f'(x)이다.

7.3 예시: 삼각 함수

f(x) = \sin(x)의 테일러 전개를 사용하면

f(x + \epsilon) = \sin(x)\cos(\epsilon) + \cos(x)\sin(\epsilon) = \sin(x) + \cos(x)\epsilon

(여기서 \cos(\epsilon) = 1, \sin(\epsilon) = \epsilon을 사용. 이는 \epsilon^2 = 0의 결과이다.)

이중 부분이 \cos(x) = f'(x)이다.

7.4 자동 미분의 장점

이중수 기반 자동 미분은 다음의 장점을 가진다.

  1. 정확: 수치 미분의 절단 오차가 없다
  2. 효율: 함수 평가와 비슷한 비용으로 도함수를 얻는다
  3. 일반성: 임의의 함수에 대해 작동한다

8. 이중수의 지수와 로그

8.1 이중수의 지수

\exp(a + b\epsilon) = e^a(1 + b\epsilon) = e^a + e^a b\epsilon

이는 테일러 전개와 \epsilon^2 = 0으로부터 유도된다.

8.2 이중수의 로그

a > 0인 경우

\log(a + b\epsilon) = \log(a) + \frac{b}{a}\epsilon

이는 \exp의 역함수이다.

9. 이중수와 복소수의 비교

특성복소수 \mathbb{C}이중수 \mathbb{D}
단위i^2 = -1\epsilon^2 = 0
차원 (실수 위)22
대수 구조체(field)가환 환
역원 존재z \neq 0인 모든 za \neq 0인 경우만
응용복소 해석, 전자기학자동 미분, 이중 쿼터니언

10. 이중수의 기하학적 해석

이중수 a + b\epsilon은 2차원 평면의 점 (a, b)로 해석할 수 있다. 그러나 복소수의 회전 해석(곱셈이 회전)과 달리, 이중수의 곱셈은 다른 기하학적 의미를 가진다.

10.1 전단 변환

이중수 곱셈은 전단 변환(shear transformation)과 관련이 있다. 복소수가 회전이라면, 이중수는 비스듬한 변형이다.

10.2 “낮은 차원의 무한소”

\epsilon은 “무한소(infinitesimal)“로 해석될 수 있다. 즉, 매우 작아서 제곱이 무시할 수 있는 양이다. 이는 자동 미분과 자연스럽게 연결된다.

11. 이중수의 일반화

11.1 이중 행렬

이중수 성분을 가진 행렬을 정의할 수 있다. 이는 이중 쿼터니언의 기반이 된다.

11.2 이중 벡터

이중수 성분을 가진 벡터도 정의된다. 자동 미분에서 벡터 함수의 도함수(그라디언트, 야코비안)를 계산할 때 사용된다.

11.3 이중 쿼터니언

쿼터니언 성분을 가진 이중수가 이중 쿼터니언이다. 이는 강체 변환의 대수적 표현을 제공한다.

12. 이중수의 코드 구현

12.1 단순 구현

class DualNumber:
    def __init__(self, real, dual):
        self.real = real
        self.dual = dual
    
    def __add__(self, other):
        return DualNumber(self.real + other.real, self.dual + other.dual)
    
    def __mul__(self, other):
        return DualNumber(
            self.real * other.real,
            self.real * other.dual + self.dual * other.real
        )
    
    def __truediv__(self, other):
        inv_real = 1.0 / other.real
        return DualNumber(
            self.real * inv_real,
            (self.dual * other.real - self.real * other.dual) * inv_real * inv_real
        )

12.2 수학 함수의 확장

def dual_sin(x):
    return DualNumber(sin(x.real), cos(x.real) * x.dual)

def dual_cos(x):
    return DualNumber(cos(x.real), -sin(x.real) * x.dual)

def dual_exp(x):
    exp_real = exp(x.real)
    return DualNumber(exp_real, exp_real * x.dual)

13. 이중수의 응용

13.1 자동 미분

최적화, 기계 학습, 수치 계산에서 도함수가 필요한 경우 이중수가 사용된다. 유한 차분보다 정확하고 효율적이다.

13.2 이중 쿼터니언

강체 변환의 대수적 표현에서 이중수가 쿼터니언과 결합된다. 이는 기구학과 그래픽스에 응용된다.

13.3 물리학

일부 물리 이론에서 이중수가 시간의 “작은 변화“를 모델링하는 데 사용된다.

13.4 대수 기하학

이중수는 접공간의 대수적 표현과 관련이 있다. 매니폴드의 국소 구조를 다루는 데 사용된다.

14. 이중수의 역사

윌리엄 클리포드가 1873년에 이중수를 도입하였다. 그의 목표는 기하학적 변환을 대수적으로 표현하는 것이었다. 복소수가 평면 회전을 표현하는 것처럼, 이중수는 비강체 변환을 표현할 수 있다.

20세기 이후 이중수는 이중 쿼터니언을 통해 로봇 공학과 컴퓨터 그래픽스에 도입되었으며, 자동 미분의 핵심 도구로 부활하였다.

15. 이중수의 한계

15.1 직관성 부족

\epsilon^2 = 0이라는 조건은 수학적으로는 일관되지만 직관적으로는 이해하기 어렵다.

15.2 체가 아님

일부 원소가 역원을 가지지 않으므로 나눗셈이 항상 가능하지 않다.

15.3 수치 정밀도

이중수 연산의 수치 정밀도는 실수 연산의 정밀도에 의존한다. 특별한 수치 문제는 없지만, 부동 소수점 오차의 영향을 받는다.

16. 결론

이중수는 \epsilon^2 = 0의 특별한 대수 구조를 가진 2차원 수 체계이다. 자동 미분과 이중 쿼터니언의 기반이 되는 수학적 도구이며, 로봇 공학, 컴퓨터 그래픽스, 수치 최적화 등 다양한 분야에서 사용된다. 복소수와 비교하여 다른 기하학적 의미를 가지며, “무한소“의 대수적 표현으로 이해될 수 있다.

17. 참고 문헌

  • Clifford, W. K. (1873). “Preliminary Sketch of Biquaternions.” Proceedings of the London Mathematical Society, 4(1), 381–395.
  • Fike, J. A., & Alonso, J. J. (2011). “The Development of Hyper-Dual Numbers for Exact Second-Derivative Calculations.” AIAA Paper, 886.
  • Selig, J. M. (2005). Geometric Fundamentals of Robotics (2nd ed.). Springer.
  • McCarthy, J. M. (1990). Introduction to Theoretical Kinematics. MIT Press.
  • Griewank, A., & Walther, A. (2008). Evaluating Derivatives: Principles and Techniques of Algorithmic Differentiation (2nd ed.). SIAM.

version: 1.0