나비효과 – 규모의 변화가 아닌 오차 범위의 확대

(이미지 소스)

 

카오스 이론이라고 하면 일반인들이 가장 많이 연상하는 것은 나비효과(Butterfly Effect)일 것입니다. 카오스이론이 뭔지 전혀 모르는 사람도 나비효과에 대해서는 잘 알고 있습니다. 심지어 과학에 별 관심없는 사람들조차 나비효과를 언급하는 경우가 많습니다. 아마도 조그마한 개인의 노력도 거대한 사회적 변혁의 시발점이 될 수 있다는 뜻으로 이해해서일 것입니다.

하지만 나비효과를 그렇게 많은 사람들이 알고 있는 만큼 잘못 알고 있는 사람 역시 상당히 많습니다.

나비효과라고 하면 사람들은 대부분 다음과 같이 이해하고 있습니다.

오늘 북경에서 나비가 날갯짓을 하면 내일 뉴욕에는 폭풍이 분다.

하지만 이 말은 나비효과를 상징적으로 이해시키는 구절인 동시에 나비효과를 잘못 이해시키는 구절이기도 합니다. 마치 다음과 같은 만화처럼 말이죠.

이토 준지 – 소용돌이 중에서

 

정말로 나비의 날갯짓이 폭풍으로 확대된다면, 폭풍은 무엇으로 확대되어야 할까요?

실제 논문에서 나비효과를 묘사한 구절은 다음과 같습니다.

One meteorologist remarked that if the theory were collrect, one flap of sea gull’s wings would be enough to alter the course of the weather forever.

한 기상학자는 ‘만약 이 이론이 옳다면, 갈매기 날개의 펄럭임 하나도 날씨가 변화되는 경로를 영구히 바꾸기에 충분하다’고 언급했다.

이 말이 나중에 좀더 시적인 표현을 위해 나비의 날개로 바뀌었으며 날씨의 변화를 강조하기 위해 지명과 폭풍이 추가된 것입니다. 이것을 보면 알 수 있듯, 실제 나비효과가 말하는 것은, 갈매기의 날갯짓이 폭풍으로 확대가 아니라 기후의 경로(날씨 변화의 경로)를 영구히 바꿈이었죠. 즉 나비효과가 말하는 것은 규모의 확대가 아니라 경로의 변화, 다시 말하면 오차범위의 확대입니다. 나비의 날갯짓 정도의 오차가 점점 커져 결국에는 폭풍만한 오차 – 폭풍이 불지 안불지 모를 정도의 오차 – 로 확대된다는 뜻입니다.

 

나비효과를 발견한 사람은 에드워드 로렌츠라는 기상학자였습니다. 그가 나비효과를 발견하게 된 계기는 기상관측프로그램을 사용하던 도중이었습니다. 당시에는 유체역학을 통해 대기의 움직임을 묘사할 수 있었으며, 비록 그 수식이 비선형방정식이긴 했지만 앞편에서 설명한 컴퓨터를 이용하는 무식한 방식(Brute force)에 의해 앞으로의 대기의 움직임, 즉 앞으로의 기상을 정확하게 예측할 수 있다고 생각했습니다.

로렌츠 역시 그런 기상학자들 중 하나로 마찬가지로 특정한 초기조건을 넣어서 날씨의 변화를 계산하고 있었습니다. 프로그램을 실행해서 나온 결과를 확인한 그는 기록을 위해 다시한번 프로그램을 실행합니다. 다만 이번에는 실행시간을 줄이기 위해 중간에 출력해 놓았던 데이터를 입력하여 중간부터 실행시키기 시작했습니다.

당시 사용하던 도트프린터의 드르륵거리는 시끄러운 소리를 피해 잠시 자리를 떳다 돌아온 그는 출력된 결과물을 보고 깜짝 놀랍니다. 동일한 데이터를 가지고 동일한 수식으로 계산을 했는데 전혀 다른 결과가 나왔기 때문이죠. 처음 계산시에는 높은 온도와 낮은 습도, 약한풍속의 온난한 날씨가 나왔지만, 두번째 계산에서는 낮은온도와 높은습도, 강한풍속의 폭풍우가 나타난 것입니다.

이것은 당시 과학자들에게는 충격이나 마찬가지였습니다. 말하자면 다음의 두 계산이 전혀 다른 결과가 나온 것이나 다름없는 상황이었거든요.

 

1부터 200까지의 합을 구하기 위해 1+2+3+4+5+…+200까지 순서대로 더한다.

1부터 200까지의 합을 구하는데, 1부터 100까지의 합이 5050임은 이미 알고 있으므로 5050+101+102+103+…+200을 계산한다.

연구를 계속하던 로렌츠는 마침내 원인을 알게 됩니다. 메모리에 있는 값을 출력할 때, 소수점 아래 일부 자리까지만 출력했던 것입니다. 이를테면 메모리에 저장된 값이 10.235727532432였다면 출력은 10.2357까지만 출력했던 것이었습니다. 즉 처음 실행할 때와 두번째 실행할 때의 데이터에 매우 작은 오차 – 0.000027532432만큼의 오차가 발생한 것이죠. 계산이 계속됨에 따라 이 매우 작은 오차(나비 날갯짓 정도의 오차)가 계속 증가해서 결국에는 폭풍만큼의 오차(폭풍이 불지 안불지 모르는 상태)로 확대된 것이었습니다.

어떻게 이런 일이 생겨날까요? 다음과 같이 한번 생각해 봅시다. 넓은 당구대가 있고, 그 위에 다음과 같이 당구공이 놓여 있습니다. 여기서 흰 공을 친다면 다음과 같이 여러개의 공이 연속으로 맞게 될 것입니다.

 

그런데 흰공이 움직이는 속도가 아주 조금 달라진다면 어떻게 될까요? 아래 영상은 동일한 조건에서 흰공이 움직이는 방향이 약 0.15도 차이날 때의 공들의 움직임입니다.

 

불과 0.15도의 차이이지만 이 오차는 흰공과 푸른공이 충돌할 때의 각도에 영향을 줍니다. 즉 푸른공이 움직이는 오차는 좀 더 커집니다. 마찬가지로 푸른공과 노란공이 충돌할 때 노란공의 오차는 더욱 커지며, 보라색공의 오차는 더더욱 커집니다. 이렇게 공들이 충돌할수록 오차는 점점 커지기 때문에 결국에는 전혀 다른 움직임을 보이게 됩니다. 물론 더 넓은 공간에 더 많은 공이 있다면 다른 공들의 위치차이는 점점 커질 겁니다.

이와 같이 0.15도의 오차에 의해 공의 속도가 빨라지는 규모의 확대가 아니라, 공이 움직이는 양상이 달라지는 오차의 확대가 바로 나비효과입니다. 즉 나비의 날갯짓이 폭풍으로 확대되는 것이 아니라 나비의 날갯짓에 의해 날씨변화의 양상이 달라지는 것이 나비효과입니다.

 

이와 같은 이유로 기상학자들은 절망에 빠지게 됩니다. 위에서처럼 공이 움직이는 각도를 몇분의 1도 단위로 정확하게 측정하기는 쉽지 않습니다. 그럼에도 불구하고 그 오차 때문에 붉은공의 위치를 계산할 수가 없게 됩니다. 마찬가지로 기온이나 풍속을 정확하게 측정하기는 불가능에 가깝습니다. 그럼에도 불구하고 그 오차 때문에 나중에 온난한 날씨가 될지 폭풍우가 불지 알 수 없게 되는 것입니다.

 

그렇다면 날씨 예보는 불가능한 것일까요? 다시 말해, 저 당구대에서 흰공을 쳤을 때 붉은 공의 위치를 계산할 수는 없을까요?

정확한 위치를 계산할 방법은 없습니다. 대신 ‘가능성’을 찾을 수는 있습니다.

다시 말해 흰공의 움직임에 미리 수많은 오차를 가정해서 동일한 계산을 반복합니다. 그 결과로 나타난 붉은공의 분포를 가지고 ‘이 영역 안에 붉은공이 위치할 확률 90%’라는 식으로 계산을 할 수는 있습니다.

날씨도 마찬가지입니다. 현재의 정보에 여러가지 오차를 가정해서 반복적인 계산을 하면 가능한 날씨의 분포 확률을 구할 수 있는 것입니다. 만약 100만번 계산한 끝에 비가 오는 결과가 80만개라면 ‘비가 올 확률 80%’라는 예보가 나오게 될 것입니다. 이렇게 무식한 방법(brute force)을 무식하게 반복해야 하기 때문에 날씨예보에 슈퍼컴퓨터를 필요로 하는 것입니다.

물론 이런.방식이라도 기간이 늘어날수록 예보가능성이 줄어들게 됩니다. 내일 날씨는 제법 정확하게 예보할 수 있겠지만 다음주 날씨는 정확성이 떨어지게 될 것입니다. 다음달 날씨는 거의 신뢰할 수 없게 되며 내년 날씨는 불가능하다고 볼 수 있겠죠.

물론 계산이 불가능하다는 것이 아니라, 그 계산 결과를 가지고 날씨를 예측하는 것이 불가능하다는 뜻입니다. 여러가지 오차를 가정해서 1년 후의 날씨를 계산한다면 날씨는 다음과 같이 나오겠죠.

 

비가 올 수도 있고 안올 수도 있다. 온도가 높을 수도 있고 낮을 수도 있으며 바람이 불 수도 있고 안불 수도 있다. 구름이 많을 수도 있고 없을 수도 있다.

나올 수 있는 모든 날씨가 거의 균일한 확률로 나오기 때문에 예측이 불가능하다는 뜻입니다.

The following two tabs change content below.

참솔

30년 경력 프로그래머입니다. 카오스 이론에 대한 컴퓨터 프로그래밍을 연구하고 있습니다.

Latest posts by 참솔 (see all)