제논의 역설

제논은 고대 그리스의 철학자이자 수학자입니다.

 

제논의 역설은 우리가 느끼는 모든 것은 환상이라는 파르메니데스의 사상을 지지하기 위해 만든 괴변같은 것입니다.

 

예를 들어 화살의 시위를 날리고 화살이 가는 거리의 2분의 1, 4분의 1 지점 이렇게 쪼개나가다 보면 영원히 화살은 과녁에 도달하지 못할 것이라는... 상당히 병맛같은 주장을 했습니다.

 

문제는 이게 괴변임을 알면서도 당시 철학자들은 논리적으로 반박을 할 수 없었다고 합니다.

 

그런데 그것이 양자역학이 나오기 전까지 2000년동안 반박하지 못했다고 합니다;;;

 

어그로라고 보기엔 너무 긴 시간 동안 해법을 찾아내지 못했다는 사실이 뭐라고 해야할까요? 처절하다고 해야 할지 모르겠습니다.

 

수학에서 무한의 개념이 정리되고 이를 제대로 사용한 것은 뉴턴이 미적분학을 본격적으로 사용하면서 부터 인데요.

 

현대인들은 중학수학을 이용하여 제논의 역설에 대하여 반박할 수 있습니다.

 

고대 그리스 신전

 

아킬레스와 거북이

아킬레스가 거북이보다 10배 빨리 달릴 수 있다고 가정하고, 거북이를 아킬레스보다 100m 앞에서 출발시킨다.

아킬레스가 100m를 달려가면 거북이는 10m를 가고, 따라잡기 위해 아킬레스가 10m를 가면 그동안 거북이는 1m를 나아간다.

아킬레스가 거북이를 따라잡기 위해 달린다 하여도 그 시간동안 거북이는 움직이므로 아킬레스는 영원히 거북이를 따라잡을 수 없다.

<출처: 위키피디아>

 

여기서 보면 같은 시간동안 아킬레스가 10을 가면 거북이는 1을 갑니다. 즉 1을 가면 0.1을 가는 비율을 보니 10분의 1입니다.

 

단위를 정리해줍니다. 거리를 시간으로 바꾸면 아킬레스에게 1초는 거북이의 0.1초입니다.

 

아킬레스가 100m를 10초에 달리니까 

 

10초 + 1초 + 0.1초 + ... 와 같이 달릴 것 입니다.

 

A: time = 10 + 1 + 1/10 + 1/100 + ... 

 

에 10을 나누고 A에서 B를 뺍니다.

 

B: time/10 = 10/10+ 1/10 + 1/100 + 1/1000 + ...

 

time - time/10 = 10 + 1 - 1 + 1/10 - 1/10 + ...

 

time9/10 = 10

 

time9 = 100

 

time = 100/9

 

time = 11.11111111 ...

 

즉 11.1111111 초에 거북이를 따라잡습니다.

 

For 루프 구현 - 제논의 역설

 

이것을 C언어의 for 루프로 구현하면 아래와 같습니다.

#include <stdio.h>

#define Line printf("------------------------\n")

int main()
{
    Line;

    double time;
    double power;
    int time_count = 1;
    double start = 10;

    int limit = 20;

    for (time = 0, power = 1, time_count = 1;
        time_count <= limit;
        power *= 10.0, time_count++)
    {
        time += start/power;
        printf("시간 = %10.20f (횟수 %d)\n", time, time_count);
        //printf("power of two : %e \n", power);
    }

    return 0;
}

start 가 10인 것은 거북이가 출발한 100m 지점을 의미합니다. (10초를 간 상태)

 

------------------------
시간 = 10.00000000000000000000 (횟수 1)
시간 = 11.00000000000000000000 (횟수 2)
시간 = 11.09999999999999964473 (횟수 3)
시간 = 11.10999999999999943157 (횟수 4)
시간 = 11.11099999999999887734 (횟수 5)
시간 = 11.11109999999999864428 (횟수 6)
시간 = 11.11110999999999826571 (횟수 7)
시간 = 11.11111099999999751731 (횟수 8)
시간 = 11.11111109999999690956 (횟수 9)
시간 = 11.11111110999999773696 (횟수 10)
시간 = 11.11111111099999781970 (횟수 11)
시간 = 11.11111111109999782798 (횟수 12)
시간 = 11.11111111110999694063 (횟수 13)
시간 = 11.11111111111099702953 (횟수 14)
시간 = 11.11111111111109650551 (횟수 15)
시간 = 11.11111111111110716365 (횟수 16)
시간 = 11.11111111111110894001 (횟수 17)
시간 = 11.11111111111110894001 (횟수 18)
시간 = 11.11111111111110894001 (횟수 19)
시간 = 11.11111111111110894001 (횟수 20)

한 가지 주의할 점은 C언어의 double 형은 소수점 자리수를 표현하는데 한계가 있습니다. 0894001 부분은 제대로된 값이 아니라 버려야 하는 값입니다.

C언어와 현실 수학의 중요한 차이점입니다.

 

어쨋든 소수점이 더 뻗어나갔다면 11.1111 ... 에 수렴하는 값이 나왔습니다. 프로그래밍에서는 무한한 연산을 할 수 없기 때문에 적당히 소수점이 10개를 넘어간다 싶으면 끓어주는 게 좋습니다. 11.11111 ... 을 분수로 바꾸면 확실한 숫자로 나옵니다. 9분의 100이죠. 따라서 영원히 도달하지 못한다는 말은 반박되었습니다.

 

0.1씩 계속 가다보면 100/9 가 나오는 거죠. 거기서 부턴 아킬레스가 1 가면 거북이는 0.1을 가서 아킬레스의 영원한 승리입니다.

 

그런데 제논은 도달하지 못한다고 했습니다. 옛날 사람이지만 참 고약하네요~

 

당시에도 그렇고 후대에도 많은 사람들을 고생시켰다 합니다.

 

한편으로 이 문제제기는 학문적으로 상당히 심오한 주제를 담고 있다고 합니다.

 

좀더 자세한 내용이 궁금한 분들은 아래 영상을 참고하시길 바랍니다.

 

 

*참고 외부링크로 영상등을 첨부합니다. 아무래도 달리기 게임이라서 영상이 이해가 빠를 수도 있습니다.

 

버전은 아킬레스 100미터 버전 50미터 버전 등 여러가지가 있습니다.

 

양자역학이 풀어낸 「제논의 역설」 ❗ 시간 공간을 무한대로 쪼갤 수 있을까 - YouTube

* 관념적으로는 쪼갤수 있는데 물리적으로는 불가능하다고 합니다.

 

The Paradoxes of Zeno - YouTube

 

제논의 역설 - 나무위키 (namu.wiki)

 

제논의 역설 - 나무위키

올림피우스가 달리기를 할 때, 결승점에 도달하기 전에 1/2 지점에 도달해야 한다. 이후 중간점과 결승점의 1/2이 되는 지점에 도달한다. 이후 또 다시 중간점과 결승점의 중간에 해당하는 지점과

namu.wiki

 

공유하기

facebook twitter kakaoTalk kakaostory naver band