2008년 1월 17일 목요일

수학은 아름답다 : Mandelbrot set이란?

Fractal graphic(이하 프랙탈)의 집합에는 Mandelbrot, Jilua, Newton, Lorenz 등 수많은 집합이 있습니다.
이런 유명한 집합들은 간단한 방식(짧은 수식 한두 개로써!)으로 아름답고 화려한 그림을 보여줍니다.

프랙탈은 자연계에 존재하는 무한반복의 특성을 수식으로 표현하는 방식입니다.
이러한 무한반복 특성을 순환성(Recursiveness)자기 유사성(Self-similarity)으로 정의합니다.
너무 어렵다구요? 아래의 그림들을 보시면 그렇게 어렵지만은 않다는 것을 알 수 있을 것입니다.


사용자 삽입 이미지

Fractal, himself

Benoît Mandelbrot라는 박사님이 계십니다.
이 분께서 바로 Fractal이라는 용어를 만드신 분이십니다. (박수 짝짝짝)

이 분께서 1975년 어느 날 IBM에서 일하시면서 다음의 간단한 수학식을 놓고 연구하고 계셨습니다.

Z = Z²+C

이 수식이 바로 Mandelbrot Set입니다.

복소평면의 각 좌표 Z에서 위의 수식을 무한히 반복하였을 때 각 좌표의 점이 발산하는가 수렴하는가 그리고, 수렴한다면 얼마로 수렴하는가를 복소평면 위에 그려봤는데, 의외의 결과가 나온 것입니다.
(물론, 이 분께는 의외가 아니었겠죠. 평범한 사람들에게 의외란 뜻입니다)

Mandelbrot의 기본 Set는 실수 -2.5~1.5, 허수 -1.5~1.5의 복소평면 위에 그려집니다.
즉, 아래와 같은 복소좌표계에서 각 점에 대해서 같은 수식을 계속 반복한 결과를 색으로 표시한 것입니다.


y=ax+b가 아닙니다. 복소평면입니다.

Mandelbrot set에 대해서 좀 더 궁금하신 분은 Wikipedia를 읽어보시기 바랍니다.





1988년, 80386 시절에 Stone Soup Group에서 Fractint라는 프로그램을 발표합니다. (Fractint 홈페이지)
(정확히는 FRACT386을 발표하고, 1989년에 Fractint로 개명했습니다)

Stone Soup라는 말의 어원은 동화에 나오는 "돌국"이야기 입니다.
어느 지방에 기근이 들었을 때 지나가던 나그네가 돌을 꺼내 국을 끓이면서 마을사람들이 숨겨놓은 재료들을 하나씩 집어넣도록 설득해서 결국 모든 마을사람들이 맛있는 국을 먹을 수 있었다는 이야기가 이름의 어원입니다.
즉, 사람들의 지혜를 모아서 좋은 프로그램을 만들자는 뜻을 담고 있습니다.

당시만 해도 coprocessor가 많이 장착되지 않았습니다. 이 프로그램은 이 사실을 고려해서 가능한 모든 허수 계산을 정수로 계산하도록 만들어졌습니다.
DOS에서 동작하던 이 프로그램은 당시의 척박한 환경에서 정말 빠르게 동작하는 프랙탈 그래픽 도구로 명성을 날립니다. 또한 오픈소스로 개발되어 여러 환경으로 이식되었습니다. 물론, Windows로도 이식되었습니다.

그리고, 평면에 대해서는 좀 더 빠른 알고리즘을 연구하였고 특히, Boundary pass(단축키 x-b)는 특이한 알고리즘으로 대단히 빠른 결과를 보여줬습니다.

Fractint로 Newton set(degree=3)을 그리는 과정 (boundary pass)


이 프로그램(정확히는 DOS용 Fractint)은 지금 사용하기에도 무리가 없는 프로그램입니다.
명확한 그리고, 사용에 정확하게 최적화된 인터페이스도 일품입니다.
하지만, 약간의 단점이 있습니다.

  1. 화려한 메뉴 기능이 없다 (사용에는 전혀 불편하지 않습니다)

  2. Vista에서 동작하지 않는다 (동작하는 모습을 보려면 DOSBox를 사용하면 됩니다)

  3. 기본 설계가 16/256 color를 기준으로 되어있다.



최근, 20.0 발표 이후로 추가적인 개발 소식이 없어서 아쉬웠는데, 그 사이에 Ultra Fractal이라는 상용 프로그램이 나와있었습니다. 2008년 1월 현재 4.04까지 나와있고, 홈페이지에서 free trial 버전도 다운받을 수 있습니다.

1달의 사용제한기한이 있기는 하지만, Fractint와 비교했을 때 엄청난 성능을 보여줍니다.

Mandelbrot set (default)
Newton set (degree=5)


정확하게 같은 수식을 같은 범위에 대해서 같은 크기(1024x768)로 출력한 결과입니다.
정말 멋있고 아름답지 않나요?

마지막으로, 맨 위에 Fractint의 boundary pass를 설명하기 위해 표시한 Newton set(degree=3)의 Ultra Fractal 버전은 아래와 같습니다.

사용자 삽입 이미지
Ultra Fractal로 그린 Newton set(degree=3)



수학이 지루하고, 재미없으며, 그래프가 보기 싫다면 Fractal graphic으로 눈을 돌려보시기 바랍니다.
단순한 수식 1~2개가 너무나 아름답고 환상적인 그림으로 변하는 것을 볼 수 있습니다.

p.s. 사실, 이런 개념을 최초로 생각한 것은 Mandelbrot가 아니라 Gaston Julia라는 프랑스 수학자입니다.
       이 분께서는 무려 1918년에 유사한 개념을 생각했습니다.
       그 시기엔 (그 분께는) 컴퓨터가 없다는 것이 문제였죠. (Mandelbrot 박사님은 IBM 연구원…)



댓글 4개:

  1. 멋지군요, 바탕화면으로 사용해도 좋겠습니다^^

    답글삭제
  2. 도스 시절 프로그램을 돌리고 그 화려함과 다양함에 놀라 넋을 잃고 바라 보던 생각이 떠 오릅니다. 그 뒤에 3차원 모델링으로 발전했고 우리나라 해안을 쪽거리 기하학으로 모델링한 일까지 있었죠. 근본적으로 카오스 이론의 근간을 이루는 이론인데,,, 지식의 유무를 떠나 보는 것 만으로 즐거운 것이 쪽거리 기하학인 것 같습니다.

    답글삭제
  3. @rogon3 - 2008/01/17 20:49
    Google 이미지 검색에서 Fractal Graphic이라고 입력하시면 멋진 바탕화면이 많이 나올 겁니다. ^^

    답글삭제
  4. @도아 - 2008/01/17 21:22
    아름다움에 한 번 놀라고,

    식의 단순함에 한 번 더 놀랐던 기억이 생생합니다.

    답글삭제