[경고] 아래 글을 읽지 않고 "복소 함수의 표현법"을 보면 바보로 느껴질 수 있습니다.
복소 함수(complex function)는 정의역(domain)과 치역(range)이 모두 복소수(complex number)인 함수이다. 복소수를 하나의 수로 보면, 복소 함수는 정의역에서 치역으로 가는 단순한 함수 관계를 가진다. 그래서 복소 함수는 개념적으로 실수 함수 혹은 실함수(real function)와 완전히 동일하다. 하지만 복소 함수를 2차원 평면에 그릴 때는 실수 함수와는 전혀 다른 문제점이 생긴다. 정의역 $x$와 치역 $y$가 모두 실수인 실수 함수 $y = f(x)$는 좌표점 $(x, y)$로 쓸 수 있으므로, 2차원에 시각적인 그래프(graph)를 쉽게 그릴 수 있다. 복소 함수도 비슷한 방식이 가능할까? 복소수는 원래부터 $z$ = $x + yi$처럼 두 숫자의 배열이라서 복소 함수를 2차원 평면에 그릴 수가 없다. 왜냐하면 정의역과 치역이 각각 2차원이라서 전체 그래프를 그릴려면 4차원이 필요하기 때문이다. 그렇다고 복소 함수의 전체 모습을 눈으로 보지 않고 대수적으로 계산만 해서는 우리의 수학적 이해도를 높이기가 매우 어렵다. 이러한 문제점을 해결하기 위한 유용한 접근 방식이 바로 복소 함수의 표현법(representation method of complex function)이다.
[그림 1] 복소 함수의 등각 사상(출처: wikipedia.org)
- 등각 사상(conformal mapping)
복소 함수를 하나의 그래프로 그리기가 어렵기 때문에, 등각 사상(等角寫像, conformal mapping)에 바탕으로 두고 정의역과 치역을 2차원 평면에 각각 그릴 수 있다. 즉, 정의역 $z$ = $x + yi$는 [그림 1처럼] 전형적인 직선이나 곡선으로 표현한다. 정의역의 각 직선이나 곡선이 치역 $f(z)$ = $u(x,y) + i v(x, y)$에서 변형되는 형태를 새로운 그래프로 그린다. 여기서 $x, y$의 관계 $g(x, y)$ = $0$은 정의역에서 만드는 직선이나 곡선을 나타내며, $g(x, y)$ = $0$에 따라 $f(x + yi)$를 계산한다. 이러한 방식을 사용하면 특정 곡선이나 영역 관점으로 복소 함수가 정의역에서 치역으로 사상되는 특성을 쉽게 관찰할 수 있다.
[그림 2] 복소 함수 $\sqrt{z}$의 3차원 색칠하기(출처: wikipedia.org)
- 3차원 색칠하기(3D coloring)
복소 함수를 나타낼 때는 기본적으로 4차원이 필요하지만, 우리 공간의 한계로 인해 복소 함수를 3차원에만 그리는 방식이 3차원 색칠하기(3D coloring)이다. 이 방법에서는 [그림 2]처럼 정의역 $z$ = $x + yi$와 치역 $f(z)$ = $u(x,y) + i v(x, y)$의 실수부만 그린다. 즉, [그림 2]에서 보는 3차원 공간의 곡면 좌표점이 $(x, y, u)$로 정해진다. 표현하지 못한 $f(z)$의 허수부 $v(x, y)$는 색깔로 표현한다. 함수값의 크기를 색깔로 표현하는 방식은 여러 가지가 있다. 예를 들면, 색상(色相, hue), 채도(彩度, saturation), 명도(明度, value or brightness)로 구성하는 [그림 3]의 HSV(hue, saturation, value) 색 공간(color space)을 사용할 수 있다. 색상은 흔히 말하는 구분된 색깔, 채도는 농담의 정도, 명도는 밝기의 정도를 의미한다.
[그림 3] HSV 색 공간을 나타내는 원뿔(출처: wikipedia.org)
[그림 4] 색상 $H$의 주기적인 변화(출처: wikipedia.org)
3차원 색칠하기 표현에서는 우리가 명확히 볼 수 있는 색상 $H$를 이용해 [그림 2]처럼 $f(z)$의 허수부 $v(x, y)$를 나타낸다. HSV 색 공간의 나머지 성분인 채도 $S$와 명도 $V$는 모두 100 %로 설정해서 명확한 색 표현이 되도록 한다. 다만 색상 $H$는 0˚~360˚ 범위에서 주기적으로 변하므로, 주기성이 없는 경우를 나타내기에는 불편하다. 이때는 보통 $H$를 0˚(빨강)~240˚(파랑)까지만 선택해서 색칠한다. 여기서 $H$의 색상 사상(色相寫像, color mapping)을 구성하는 방식은 매우 다양하므로 자기 취향에 맞게 골라서 사용할 수 있다. 예를 들어, 매트랩(MATLAB)의 시각화(visualization) 기능을 흉내낸 파이썬(Python)의 matplotlib 코드(code)는 [그림 5]와 같은 다양한 색상 지도(colormap)를 제공한다.
[그림 5] matplotlib가 제공하는 여러 가지 색상 지도(출처: matplotlib.org)
이를 종합해서 복소 함수 $f(z)$ = $u(x,y) + i v(x, y)$를 다음과 같은 색깔 있는 3차원 곡면으로 그린다.
(1)
여기서 $z$ = $x +yi$는 $xy$평면에서 변하며, $s$는 3차원 곡면의 높낮이, $v_{\min}$과 $v_{\max}$는 각각 $v(x, y)$의 최소값과 최대값, 채도 $S$ = 100%, 명도 $V$ = 100%로 정한다.
3차원 색칠하기의 개념을 알면 [그림 2]를 더 정확하게 음미할 수 있다. 여기서 [그림 2]는 복소 함수 $f(z)$ = $\sqrt{z}$를 보여준다. 곡면의 높이인 $u(x, y)$가 같더라도 색깔이 다르면 같은 함수값이 아니다. 즉, 빨강에서 한 바퀴를 회전하면 곡면의 높이는 같아지지만, 색깔은 파랑이라서 같은 함수값이 아니다. 이 위치에서 한 바퀴를 더 돌면 높이와 색깔이 모두 같아져서 함수값은 원래 위치로 돌아온다. 이 개념은 $z$가 두 바퀴를 돌아야 제곱근 함수 $\sqrt{z}$가 원래값이 된다는 복소 함수의 다가성(多價性, multi-valuedness)을 뜻한다.
[그림 6] 복소 함수 $z^3 - 1$의 정의역 색칠하기(출처: wikipedia.org)
- 정의역 색칠하기(domain coloring)
3차원 색칠하기는 우리가 복소 함수를 이해하는 좋은 방법이지만, 그림을 그릴 때 3차원 곡면이 필요한 약점이 있다. 이를 손쉽게 해결하려면 정의역(domain)을 나타내는 2차원 평면에 [그림 6]처럼 오직 색깔로만 복소 함수의 실수부와 허수부를 표현하면 된다. 그래서 정의역 색칠하기에서는 HSL(hue, saturation, lightness) 색 공간을 주로 사용한다. 여기서 L은 흑백 명도(黑白明度, lightness)를 나타낸다. 3차원 색칠하기와 비슷하게 채도를 100%로 놓고 흑백 명도 $L$과 색상 $H$를 $f(z)$의 크기와 위상으로 각각 연결한다.
(2)
여기서 $l(r)$은 $0$ 혹은 양의 실수 $r$을 흑백 명도로 바꾸는 어떤 함수, $H$는 0˚~360˚까지 변하는 복소 함수의 위상(phase) 혹은 편각(argument)을 표현한다. 흑백 명도 함수 $l(r)$은 다음과 같은 여러 종류로 정의할 수 있다.
(3)
여기서 $r_{\max}$는 $r$의 최대값이다. 식 (2)에 나온 흑백 명도 $L$은 HSV 색 공간의 명도 $V$와 비슷하면서도 다르다. 명도 $V$는 색깔 있는 광원이 방출하는 빛의 밝기이지만, 흑백 명도 $L$은 백색광의 밝기로 환산한 빛의 밝기이다. 그래서 $V$와 $L$은 명도 특성을 가져서 $V$ = $L$ = 0%이면 모두 검정색을 나타낸다. 반면에 $V$ = 100%로 두면 특정 색깔이 가장 밝아지지만, $L$ = 100%이면 모든 색이 항상 흰색으로 되는 차이가 있다.
정의역 색칠하기 관점으로 [그림 6]을 다시 본다. [그림 6]에 나타난 검정색은 흑백 명도 $L$ = $0$ 혹은 $|f(z)|$ = $0$인 경우이므로 $z^3 - 1$의 영점(zero)을 보여준다. 또한 밝기가 흰색으로 갈수록 $f(z)$의 크기는 급속히 커진다. 예를 들어, 완전한 흰색이 되면 이 점은 $f(z)$의 극점(pole)일 수 있다. 또한 [그림 6]의 색상은 $z^3 - 1$의 위상을 보여준다. 색상표가 있는 [그림 4]를 보면, [그림 6]의 빨간색은 위상이 0˚, 청록색은 180˚이다.
[다음 읽을거리]