2021년 1월 16일 토요일

복소 함수의 표현법(Representation Method of Complex Function)

[경고] 아래 글을 읽지 않고 "복소 함수의 표현법"을 보면 바보로 느껴질 수 있습니다.


복소 함수(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˚이다.


[다음 읽을거리]

댓글 12개 :

  1. 존경하는 전피거북이님, 이렇게 좋은 글들을 올려주셔서 감사해요. Comformal mapping을 배울 때 이직 초보적인 단계라 색칠법의 구체적인 방법은 잘 몰랐는데, 자세히 알려주셔서 감사합니다. 저도 전파거북이님처럼 훌륭한 과학도가 되는 것이 꿈입니다. 가진 것을 나누는 것이 얼마나 아름다운지 모릅니다. 항상 감사합니다! 덕분에 대학 생활에 대한 동기부여가 됩니다. 특히 "조금은 느리게 살자"의 의미를 곱씹으면 제가 바보로 느껴져도 힘이나요! 아직 블로그 내용에서 배운 것보다 배울 것이 더 많지만 그렇기에 더 기대가 됩니다. 그리고 조금 늦었지만 새해 복도 많이 받으세요 =)

    답글삭제
    답글
    1. 별말씀을요, 양자거북이님 ^^
      계속 열공하셔서 좋은 과학도가 되시길 빕니다.

      삭제
  2. 제 의견을 한번 적어봅니다.
    물론, 이런 심오한 이론을 제대로 공부해 적이 없어서 지금 공부하는 중입니다.
    나름 예전 수학자들의 생각을 엿볼 수 있어서 좋습니다.
    그러나 출발점부터 문제가 발생했습니다.
    이 이론이 제곱근 내부에 있는 복소수와 현실과의 연결고리를 제대로 설명하고 있다는 생각은 전혀 들지 않습니다.
    오일러항등식이 푸리에변환, 라플라스변환에 쓰이고 있다는 것은 알고 있습니다.
    거기서는 단지 함수관계이고 미적분의 관계를 적절하게 잘 설명하고 있습니다.
    사실, 저는 수학과 관련이 없는 사람입니다만, 제 나름의 수학 이론을 만들어가고 있습니다.
    제곱근 내에서의 복소수의 변화에 대한 그 치역을 설명하기 위한 이러한 설명, 꽤 그럴듯해 보입니다.
    제 이론에 따르면, 제곱근 내의 어떤 복소수에 대해서도 실제 영역에서는 반값 밖에는 사용할 수 없습니다.
    제 이론에 따라 2차방정식부터 다양한 고차방정식의 근들을 구해 놓은 영상들이 있습니다.
    혹시, 제 유튜브 채널에 오셔서, 제 논리를 보시고도 이러한 논리를 참이라 여기신다면, 저도 더이상 할 말은 없습니다.

    답글삭제
    답글
    1. 제 채널은 유튜브에서 구면각수 검색하면 나옵니다.
      이거 처음 써보는 거라서 Unknown으로 나오네요. ㅡ,.ㅡ
      어떻게 쓰는 건지 잘 모르겠네요. ^^

      삭제
    2. 그래도 이 게시글 읽으면서
      그때의 수학자들이 복소수를 어떻게 생각했을 지에 대해 엿볼 수 있었습니다.
      게시글은 정말 훌륭하다고 생각합니다.

      삭제
    3. 반값밖에 사용할 수 없다는게 principal value를 사용한다는거랑 똑같은 말 아닌가요?
      나머지 반값에 대해서도 말이 되도록 만들고, n제곱근에 대해서도 말이 되도록 만들고, 더 나아가 로그함수등 다가성을 갖는 함수들을 함수로 만들기 위해 정의역을 확장하여 얻는것이 리만곡면입니다.

      삭제
    4. 수학 이론은 다양한 방법으로 접근할 수 있어요. 생각하시는 방향으로 계속 탐구하시길 바래요.
      다만 시행착오를 줄이려면 복소 함수의 다가성에 대해 먼저 발상을 했던 리만의 박사 학위 논문도 꼭 참고하세요.

      삭제
  3. 전파거북이님 글 잘읽었습니다! 혹시 반대로 2차원의 평면, 곡선 등을 다차원 공간에 표현한다면 어떻게 구분할 수 있을까요..?
    수학공부를 좀 해보려 하는데 어렵네요 ㅠㅠ

    답글삭제
    답글
    1. Unknown님, 의도를 잘 모르겠는데요. 2차원의 곡선은 2차원에서 정의됩니다. 여기에 차원을 더 더해 다차원으로 만들면, 추가한 차원은 임의성을 가져서 우리 사고를 의미있게 전개하기가 어려울 것 같네요.

      삭제
  4. HSV 를 비주기에 쓸때 0-240도 말인데.. 그렇게 할 경우 사람 눈으로는 분간이 힘든 green 영역이 너무 넓어지는 문제가 있어서 jet 를 씁니다.

    답글삭제
    답글
    1. 의견 감사합니다, 익명님. 내용을 조금 추가했어요.

      삭제

욕설이나 스팸글은 삭제될 수 있습니다. [전파거북이]는 선플운동의 아름다운 인터넷을 지지합니다.