본문 바로가기

카테고리 없음

복소 tetration 연산이 나타내는 놀랍도록 다양한 형태, 그리고 프랙탈

‘power tower 함수’ 혹은 ‘infinite power tower 함수’라 불뤼는 신기하게 생긴함수가 있다 :

\[f(x)=x^{x^{x^{x^{⋰}}}}\]

 

\(1^{1^{1^{1^{⋰}}}}\)의 값은 얼마인가? 그 값은, 초항이 \(1\)이고 ‘\(a_{n+1}=1^{a_{n}}\)’을 만족하는 수열 \(a_{n}\)에 대하여 \(n\)을 양의 무한대로 보내는 극한값 \(a_{\infty}\)에 해당한다. 그런데 \(1^1\)의 값은 \(1\)이기 때문에, \(n\)이 무한히 커져도 처음값이 그대로 유지된다[1] :

\[1^{1^{1^{1^{⋰}}}}=1\]

 

너무 쉬운 문제였나? 그렇다면 \(f(i)\)의 값은 얼마일까? :

\[i^{i^{i^{i^{⋰}}}} = \quad ?\]

\(i^{i^{i^{i^{⋰}}}}\)는 커녕, \(i^{i}\)라는 숫자가 존재하는지 조차 의문스러운 독자분들도 있을 것 같다. 하지만 이렇게 ‘허수 위에 허수를 올리는형태’의 계산은, 계산이 귀찮을지는 모르겠으나 그 규칙자체는 아주 단순하고 직관적이다. 그 규칙이란것은 중고등학교에서 배운 지수연산 규칙에다 다음과 같은 사실만 적용하면 된다 :

‘복소평면상에 크기 \(r\), 편각 \(\theta\)인 복소수 \(z\)는 ‘\(re^{i\theta}\)’라는 지수형태로 나타내어진다’

 

이 사실을 받아들인다면, \(z\)의 실수축 좌표와 허수축 좌표는 각각 \(r\)을 빗변으로 하는 직각삼각형의 \(\mathrm{cosine}\)과 \(\mathrm{sine}\)성분이 되는 것은 자명하다 :

\[re^{i\theta} = r(\cos\theta+i\sin\theta)\]

 

‘오일러 공식’이라고도 불리는 이 공식은 너무나도 중요하고 너무나도 자주 쓰이는 수학적 표현이므로, 근본적 유도나 이해 없이 몇몇 예제를 통해 직관적으로 이해하고 받아들이는 정도만으로도 매우 큰 도움이 될것이다[2].

 

한가지 놀라운 사실은, 지수연산을 자연수에 대해 정의했을 때 성립하는 \((a^{b})^{c} = a^{b \times c}\)와 같은 기본 성질들은 지수를 유리수, 실수, 복소수로 확장시켜도 여전히 성립한다는 사실이다. 그리고 자연수에 대해서 정립한 그 성질을 자연수가 아닌 온갖 상황에 적용함으로써 수 많은 문제들을 이해하고 해결 할 수 있는데, 우리는 이러한 사실을 \(i^{i^{i^{i^{⋰}}}}\)를 계산하는데 사용 할 것이다.우리는 일반적인 계산규칙을 살펴보고자 한다. 그 규칙만 이해하면, 반복연산은 컴퓨터에게 맡기면 된다.

 

임의의 복소수 \(z\)에 대한 \(z^z\)의 값은 어떻게 계산될까? — 계산에 필요한 요소들은 앞에서 모두 언급하였다. 그것들이 어떻게 적용되는지는 다음 전개과정의 한줄한줄에서 확인해 보시기 바란다 :

\[\begin{aligned} z^z &= (re^{i\theta})^{re^{i\theta}} \\ &= r^{r(\cos\theta + i\sin\theta)} \times e^{ir\theta \cos\theta - r\theta \sin\theta} \\ &= \left ( r^{r\cos\theta} \times e^{-r\theta \sin\theta} \right ) \times \left ( r^{ir\sin\theta} \times e^{ir\theta\cos\theta} \right ) \\ &= e^{r\cos \theta\ln r - r \theta \sin \theta } \times e^{i(r \sin \theta \ln r + r \theta \cos \theta)} \\ &= r'e^{i\theta'} \end{aligned}\]

 

‘\(z^z\)’라는 연산은, 복소평면에서 크기 \(r\), 편각 \(\theta\)인 복소수를 크기 \(r’\), 편각 \(\theta’\)인 복소수로 보내는 일종의 함수역할을 하는 것이다. 우리는 이러한 과정을 한번 더 반복 함으로써 \(z^{z^{z}}\)의 값을 구할 수 있다 :

\[\begin{aligned} z^{z^z} &= (re^{i\theta})^{r'e^{i\theta'}} \\ &= \left ( r^{r'\cos \theta'}e^{-\theta r' \sin \theta'} \right ) \times e^{i(r' \sin \theta' \ln r + \theta r' \cos \theta')}\\ &= r''e^{i\theta''} \end{aligned}\]

 

즉, 우리는 이런식의 연산으로 임의의 두 복소수 \(z_1\), \(z_2\)에 대한 \({z_1}^{z_2}\)의 값을 구할 수 있는것인데, 먼저 어떤 임의의 \(z\)에 대해서 \(z^z\)를 계산하고, 그 다음엔 \(z\)를 밑으로 하고 \(z^z\)를 지수로 하는 수를 계산하면 그것이 \(z^{z^{z}}\)인 것이고, 그 다음엔 \(z\)를 밑으로 하고 \(z^{z^{z}}\)를 지수로 하는 수를 계산하면 그것이 \(z^{z^{z^{z}}}\)인 것이고 … . 이러한 과정을 끊임없이 반복하면 지수를 한층씩 더 높게 쌓은 복소수를 계산 할 수 있고, 무한히 반복하면 그값이 바로 \(z^{z^{z^{z^{⋰}}}}\)가 되는 것이다. 그리고 그 복소수 역시 어떤 크기와 편각을 가지는 하나의 복소수이다. 이러한 계산과정은 손으로 3,4번만 반복해도 그 형태가 끔찍하게 복잡해지겠지만, 컴퓨터는 그런 복잡함을 ‘느끼지’ 않는다. 컴퓨터는 그저 그 간단한 규칙에 맞게 단순히 반복연산 할 뿐이다.

 

우선은, \(i\), \(i^{i}\), \(i^{i^{i}}\), \(i^{i^{i^{i}}}\), \(i^{i^{i^{i^{i}}}}\), \(i^{i^{i^{i^{i^{i}}}}}\)를 컴퓨터[3]로 계산하고, 그것들을 복소평면위에 plot 해보자 :

 

\(i\)를 하나씩 더 쌓을 수록 삼각형 형태를 그리며 안쪽으로 오므라드는 형태가 보이실지 모르겠다. 이 계산을 수백번 반복하면 :

 

\(i\)를 높이쌓으면 그 숫자들은 삼중나선형태를 그리면서 어느 한 점으로 수렴하며, 그 수렴지점이 바로  \(i^{i^{i^{i^{⋰}}}}\)의 값이다[4].

 

‘복소수의 크기’란 복소평면상에서 해당 복소수가 원점으로 부터 얼마나 떨어져있느냐를 뜻한다. 즉, \(1\)과 \(i\) 모두 복소평면에서 원점으로부터 같은 거리에 떨어져 있고, 그 크기는 \(1\)이다. 그럼에도 \(1^{1^{1^{1^{⋰}}}}\)와 \(i^{i^{i^{i^{⋰}}}}\)의 연산결과는 극단적으로 다르다는 사실이 세삼 놀랍게 느껴진다. 참고로, 복소평면상에서 \(1\), \(1^{1}\), \(1^{1^{1}}\), \(1^{1^{1^{1}}}\), … , \(1^{1^{1^{1^{⋰}}}}\)을 표시하면 :

 

이는 \(i\)의 경우에 비해 너무 뻔하고 재미없는 결과인것 같다. 하지만, 이 그림은 또 하나의 질문을 불러일으킨다 : ‘과연 점 \((1,0)\)과 \((0,i)\)사이에서는 무슨 일이 일어날까?’ 좀 더 구체적으로, 점 \((1,0)\)과 \((0,i)\)를 잇는 단위원 위에서 … 더 나아가서 \((1,0)\)과 \((0,-1)\)을 잇는 단위원에서[5] \(z^{z^{z^{z^{⋰}}}}\)는 어떤 값을 가지며, \(i\)의 경우에는 삼중나선형태를 그리며 어느 하나의 값에 도달했는데 다른 경우에는 어떤 괘적을 그릴지가 궁금해진다.

 

필자는 파이썬 코딩[6]으로 아래 애니매이션을 구현하였는데, 컴퓨터로 무한한 높이의 \(z^{z^{z^{z^{⋰}}}}\)값을 구하는 것은 불가능하다. 그 계산은 말그대로 ‘무한번’의 계산을 필요로 하며 그것은 무한한 시간을 필요로 한다. 하지만 수렴/발산 여부나 대략적인 수렴값 등은 높이가 수백번 정도만 넘어가도 알 수 있다. 아래 animation은  \((1,0)\)과 \((-1,0)\)을 잇는 단위원을 100등분 하여 각 점에서 높이가 3,000 … 그러니까 \(z\)가 3,000번 반복되는 \((z^{z^{z^{⋰^{z}}}}\)의 값들을 나타낸 것이다. 단위원 위를 움직이는 검정색 점은 \(z\)의 값, 붉은색 점은 마지막 20번의 \(z^{z^{z^{⋰^{z}}}}\)값, 그리고 초록색점은 검정색과 붉은색 사이의 값들을 plot 한것이다 :

 

\(z\)가 \(e^{i\pi}\)지점까지 이동하는 동안은 붉은색으로 표시한 \(z^{z^{z^{z^{⋰}}}}\)값들이 안정적으로 어느 한 점에 수렴하고, 그 괘적 또한 단위원 안에서 안정적인 곡선형태를 그린다. 하지만 \(z\)의 값이 \(e^{i\pi}\)지점에서 약 20도정도를 벗어나면서 부터는 - 표현하자면, ‘나선형태가 풀리면서’ 예측할 수 없는 일들이 벌어진다.

 

혹시, 앞에서 코딩내용을 언급할 때 왜 ‘마지막 20번’을 plot 했는지가 의문이었던 분들이 계실지 모르겠다. 그것은, 어떤 지점에서는 \(z^{z^{z^{z^{⋰}}}}\)값이 발산하기도, 때로는 여러가지 값을 가지며 진동하는 경우도 있기 때문이다. \(z\)값은 하나인데 붉은색 점이 여러군데 찍히는 경우는 그러한 진동하는 경우에 해당한다.

 

이 시점에서 독자분들께 한가지 고백하자면, 필자는 이 ‘Power Tower 함수’에 대해 아는것이 별로 없다. 그리고 필자가 아는바로는, 그 누구도 그것에 대해 깊이있게 알지 못한다. 그 이유는 아마, 이 함수가 자연을 기술하는데 등장하지 않기 때문일 것이다[7]. 하지만 더 깊이 들여다 보면 들여다 볼 수록, 그것은 무궁무진한 신비함으로 가득차있다는 것을 알 수 있다. 또한 이 함수의 성질은 ‘복잡계 이론’이나 ‘카오스 이론’과도 직접적으로 연관되어 있기에, 교육적인 면에서도 매우 훌륭한 주제라 생각한다. 하지만 이번 포스팅에서는 그러한 해석적인 측면을 다루기보다는, 그저 Power Tower 함수에대한 현상자체를 집중해서 살펴보려 한다.

 

앞선 애니메이션에서는 단위원의 위쪽 절반을 100등분하여 \(z^{z^{z^{z^{⋰}}}}\)의 값을 plot 했다고 했다. 그렇다면, \(i^{i^{i^{i^{⋰}}}}\)에서 나타났던 ‘나선이 풀리는’ 그 지점을 보다 세분화 해서 plot 한다면 과연 어떤 모양이 나올까? 아래 애니메이션에서는 앞 영상과 다른 조건은 동일하게 하고 범위를 110도에서 150도 부분으로 조정한뒤 해당부분을 200등분하여 plot 해 보았다 :

 

이렇게 세분화하니, 앞에서 듬성듬성 plot 했을때는 보이지 않던 새로운 패턴들이 보인다. 예를들어, 나선이 풀린 직후에 \(z^{z^{z^{z^{⋰}}}}\) 값들은 4개정도의 부분으로 나누어져서 그 각각이 나선형태의 모양을 그리는데, 이는 앞에서는 볼 수 없었던 패턴이다. 하지만 그러한 짧은 안정적인 구간뒤에는 다시 불규칙성이 나타나고, 그 불규칙성 후에는 또 다른 패턴이 나타나기도 한다.

 

과연 모든 복소수 범위에 대한 Power Tower 함수의 거동을 예측할 수 있을까? 좀 더 구체적으로 말하자면, 과연 범위를 더 잘게잘게 자르면 \(z^{z^{z^{z^{⋰}}}}\)이 보이는 모든 형태와 그것의 수렴/발산 구간을 명확히 그릴 수 있을까? 결론적으로 말하자면, 복소평면의 특정지역에서는 \(z^{z^{z^{z^{⋰}}}}\)의 수렴/진동/발산여부가 매우 안정적으로 예측가능하지만 다른 특정지역에서는 수렴/발산의 명확한 경계를 구분 할 수 없으며 무한한 복잡성이 나타나기도 한다. 우리는 다음 그림에서 이러한 복잡성을 한눈에 볼 수 있는데, 복소평면상에서 \(z^{z^{z^{z^{⋰}}}}\)가 수렴하는 지점을 검정색으로, 발산하는 지점을 하얀색으로 표시한다면 다음과 같은 형태가 나타난다[8] :

 

도저히 상상 할 수도 없었으며 또한 놀랍도록 복잡한 형태가 아닌가?

 

붉은색 단위원은 앞선 결과와의 비교를 위해 그려넣은 것이다. 그것을 기준삼아 본다면 \((1,0)\)에서 \((0,i)\)까지는 모두 검정색으로 나타나 있고, 이를 통해 \(z^{z^{z^{z^{⋰}}}}\)는 발산하지 않는다는 것을 알 수 있다. 앞선 애니메이션에서도 이 구간의 \(z^{z^{z^{z^{⋰}}}}\)값이 단위원 안에서 안정적인 곡선을 그리고 있었다는 사실을 고려한다면, 이는 합당한 결과라 할 수 있다. 그런데 각도가 약 110도 정도를 넘어가면서 처음으로 발산하는 지역 - 즉 하얀부분을 지나게 되며, 앞선 애니매이션에서도 확인했듯이 이 지점부터 \(z^{z^{z^{z^{⋰}}}}\)의 값은 매우 불안정한 모습을 보이게 된다.

 

더욱 놀라운 것은, 그 부위를 확대하면 무한히 복잡하고 다양한 형태들이 나온다는 것이다. 즉, 아무리 각도를 잘게 쪼개어 분석해도 그 부분에서 Power Tower 함수의 거동을 완벽하게 알 수는 없다. 필자는 단위원 위에서 \(z^{z^{z^{z^{⋰}}}}\)가 복잡한 거동을 보이기 시작한 지점을 확대해 보았다[9] :

 

아무리 확대를 해도[10] 수렴과 발산의 명확한 경계를 찾을 수 없으며, 또한 매우 다양하고 예측 할 수 없는 형태들이 나타나지만 그것들을 구성하는 element들의 형태는 계속해서 반복적으로 나타난다. 사람들은 이러한 ‘자기반복적 구조’를 ‘프랙탈’이라 부르는데, 필자는 Power Tower 함수에 대한 이러한 구조를 ‘Power Tower Fractal’이라 부르겠다.

 

지금까지 Power Tower 함수에 대한 여러가지 신비한 성질들을 보여드렸다. 마지막으로, 필자는 복소평면에서 반지름이 \(\frac{1}{2}\)인 원위에서는 어떤 일들이 벌어지는지 보여드리면서 포스팅을 마무리 하고자 한다.

 

우선은, Power Tower Fractal에서 그 영역이 어디에 어떻게 위치하는지 보도록 하자 :

 

반지름이 \(\frac{1}{2}\)인 부분은 대부분[11] 수렴구간을 - 즉, 검은색 영역 위를 지난다. 그리고 Power Tower 함수는 그 위를 지나면서 다음과 같은 거동을 보인다 :


크기가 \(\frac{1}{2}\)인 경우에도 단위원의 경우와 유사한 경향성이 보이는데, 우선은 편각 \(\pi/2\) 까지는 \(z^{z^{z^{⋰}}}\)이 안정적으로 한 지점으로 수렴한다는 점이 같다. 그러다 편각이 0.4 정도 - 그러니까 약 23도 정도 더 가면, 앞서말한 ‘나선이 풀리는’ 구간이 등장한다 :

 

(편각) = \(\frac{pi}{2}+0.4\) (편각) = \(\frac{pi}{2}+0.5\) (편각) = \(\frac{pi}{2}+0.52\)

 

이 각도는 단위원에서 불안정성이 나타났던 바로 그 각도구간이며, Power Tower Fractal에서보면 해당지점에서 반지름 \(0.5\)내부와 외부의 도형이 서로 미세하게 연결되는 듯한 모습을 보인다. 그 이전 구간에서는 각도를 몇도 정도씩 큼직하게 움직여도 \(z^{z^{z^{⋰}}}\)의 값에 큰 변화가 없었으나, 이 구간을 지나면서는 0.1도 혹은 그 이하의 각도 차에 대해서도 급격한 변화를 보인다[12] :

 

(편각) = \(\frac{pi}{2}+0.53\) (편각) = \(\frac{pi}{2}+0.54\) (편각) = \(\frac{pi}{2}+0.541\)
(편각) = \(\frac{pi}{2}+0.542\)
(발산)
(편각) = \(\frac{pi}{2}+0.544\) (편각) = \(\frac{pi}{2}+0.545\)
(편각) = \(\frac{pi}{2}+0.549\) (편각) = \(\frac{pi}{2}+0.551\) (편각) = \(\frac{pi}{2}+0.56\)

 

단위원의 경우와 다른점은, 불안정한 구간을 지나면서 빠르게 새로운 안정상태로 돌입한다는 것이다[13]. 그 새로운 상황에서는 다섯개의 새로운 나선이 형성되며 \(z^{z^{z^{⋰}}}\)는 그 다섯지점 사이를 진동한다. 그 진동 또한 하나의 수렴형태 이므로, Power Tower Fractal에서는 해당부분이 검은색으로 표시되어 있는 것이다.

 

앞서 말씀드렸듯이, Power tower 함수자체, 그리고 Power Tower Fractal에 대해서는 구글링을 해봐도 아직은 관련한 자료가 많지 않다. 필자는 곧, Power Tower Fractal을 그리는 과정에서 알게된 몇가지 사실을 포스팅 하고자 한다. 관심이 있으신 분들을 해당 포스팅을 참조하시기 바란다.


[1]‘\(1^{1^{1^{1^{⋰}}}}=1\)’이라는 계산에 대한 이런 설명이 불필요하게 느껴지실지도 모르겠다. 하지만 굳이 이렇게 설명하는 것은, ‘tetration’이라는 연산은 일반적인 곱셈에서와 같은 결합법칙이 성립하지 않아 계산순서에 주의해야한다는 점을 강조하기 위함이다. 이 점은 관련 위키피디아 문서에서 예제 한두개만 확인하면 금방 이해할 수 있다.

[2]그런데 따지고 보면, 대부분의 경우는 지수자리에 유리수나 실수가 들어가는 것도 엄밀하게 증명하지 않고 그냥 사용한다. 고등학교 수업시간에 \(2^{\pi}\)이라는 표기의 정확한 의미나 정의를 배운 기억이 있는지 회상해 보시기 바란다.

[3]계산과 plot에 ‘ GeoGebra’를 사용하였다.

[4] 이 값은 ‘Lambert W function’을 사용하여 해석적으로 나타낼 수 있다 (\(i^{i^{i^{i^{⋰}}}} = \frac{W(-\ln i)}{-\ln i}\)). 하지만 이번 포스팅에서는 그저 대략적인 형태와 경향성만 소개할 뿐 그 이상의 분석은 하지 않기로 한다.

[5] 나중에 ‘Power Tower Fractal’이라는 것을 보면 알겠지만, \(z^{z^{z^{z^{⋰}}}}\)의 계산결과는 그것의 complex conjugate와 대칭성을 가진다. 따라서 원의 절반만을 이용하여도 나머지 절반을 알 수 있다.

[6]

(Link#1) infinite power tower spiral scan animation (r=1)

(Link#2) infinite power tower spiral scan animation (r=1, final values)

[7]필자는 대학원 수준까지의 물리를 배우는 동안 별의별 특수함수들을 봐왔지만, 이렇게 생긴 함수는 단 한번도 보지 못했다. 혹시나 자연을 기술하데 이런 함수가 등장하는 예를 알고계시다면, 댓글을 남겨주시길 부탁드린다.

[10]위 영상에의 끝부분 화면의 초반의 화면을 무려 10조배 만큼 확대한 것이다.

[11]Mandelbrot 집합에서도, 거시적으로는 각 부분들이 독립적인 것 처럼 보이지만 확대해보면 모든 부분은 미시적인 ‘필라멘트’로 연결되어 있다고 한다. 필자는 이 복잡한 형태를 수식적으로 풀수도 없고 아직 해당부분을 확대하여 본 적도 없지만, 반지름 \(0.5\)인 원 안에 있는 형태는 바깥 부분과 연결되어 있다고 예상한다. 따라서 해당 본문에 ‘대부분’이라는 표현을 쓴것인데, 아마도 발산하는 부분은 너무나 미시적이어서 적어도 \(10^{5}\)배 정도는 확대시켜야 그 정확한 구조를 볼 수 있지 않을까 예상한다. 본문에서 말씀드렸듯이 Power Tower Fractal은 아직 연구가 많이 되지 않은 분야이다. 호기심이 발동하시는 분들은 본문에 링크된 파이썬 코딩을 활용하여 스스로 연구해 보는 것도 좋을 것 같다.

[12]편각이 \(\frac{\pi}{2}+0.4\)일 때 처럼 빠르게 한점으로 수렴하는 경우는 \(z\)의 갯수를 수십개정도만 해도 \(z^{z^{z^{⋰}}}\) 의 완전한 형태를 그릴 수 있다. 하지만 불안정 구간에서는 점들이 급격하게 흩어지면서 완전한 모양을 갖추기 위한 \(z\)의 개수도 늘어나게 되는데, 본문의 그림에서는 그 갯수가 충분치 않아 나선이 풀리는 구간에서 내부의 빈 공간이 많이 보인다. 아마 갯수를 수천개 이상으로 늘린다면 보다 내부가 꽉찬, 실제와 가까운 \(z^{z^{z^{⋰}}}\)의 형태를 볼 수 있을 것이다.

[13] 애니매이션에서는 하나의 수렴값이 plot region 밖으로 나가는데, 함수값이 그렇게 발산하는 것은 아니다. plot range를 늘려서 보면 함수값은 실/허수 부분이 100 이하인 지점에 위치한다.