숫자 드립 + 기타

10 이하의 소수(prime number)인 2, 3, 5, 7을 소재로 수집한 여러 잡생각들이다.

※ 2

짝수 중에 유일한 소수라는 점에서 큰 의미를 가지며, 2진법 정도면 0과 1, 같고 다름을 분별할 수 있는 최소한의 숫자 체계가 성립하기 때문에 2는 이산수학과 전산학에서 매우 큰 의미를 갖는다. 그 분야에서는 2가 로그 함수의 밑(base)으로도 즐겨 쓰인다. 이분법, 흑백 논리, 음양설 등의 사상적 근간이 되는 수라는 것은 덤.

2가 지니는 전통적인 의미는 위와 같은데, 2010년대부터 한국에서는 모 스타크래프트 프로게이머 때문에 '콩라인'이라는 의미로 2가 매우 유명해지기도 했다.
또한, 본인이 특별히 주목하는 2의 특성으로는,

  • 태양계의 행성 중 태양에서 둘째로 가까운 금성만이 유일하게 짙은 이산화탄소가 가득한 끔찍한 불지옥이다. 그것도, 지구와 가장 가깝고 지구 다음으로 생명체가 살기에 가장 적합할 수도 있었을 행성이 말이다.
  • 성경의 창세기 1장을 보면, 창조 기간 중 둘째 날에만 “하나님 보시기에 좋았더라”라는 말이 없다.
  • 서울 지하철 중 2호선만이 유일하게 순환선이며, 낡은 플랩식 전광판이 2010년까지 가장 늦게까지 남아 있었다.
  • 주찬양 선교단의 과거 앨범 중 2집만이 구성이 특이했으며, 10주년 기념 음반에는 1~7집 중 유일하게 2집의 곡만 단 한 곡도 수록되어 있지 않다.

이러한 징크스도 있다.

※ 3

삼위일체라든가 영-혼-몸 같은 개념 때문에, 3은 성경과 기독교의 관점에서 상당히 친근하고 긍정적인 수이다.

세상에는 '3요소'라는 특성으로 이뤄진 것들이 무척 많다. 우리가 사는 공간이 가로-세로-높이의 3차원이고, 시각 정보를 구성하는 색상 역시 RGB든 그 어떤 형태로든 3요소로 분할된다는 건 우리에게 시사하는 바가 매우 크다.
거기에다 인간의 언어의 음운조차도 크게 세 부분으로 이뤄져서 한글이 초· 중· 종성의 세벌식으로 구성된 것은 덤이다. 어쩌면 삼라만상이 어딜 가든 개념적으로 3으로 가득한 걸지도 모른다.

또한 컴퓨터 소프트웨어도 허접한 버전 1이 처음 나왔다가 과도기인 2를 거친 후, 제 3의 메이저 버전에 와서야 후대에까지 이어지는 뼈대가 완전히 정착된 경우가 적지 않다.
마이크로소프트 Windows는 3.0부터가 상업적으로 성공한 버전인 건 잘 알려진 사실이거니와, 국산 소프트웨어 중에서도 안 철수 씨의 바이러스 백신은 Vaccine III에서 유래된 V3이라는 브랜드가 정착한 것이다.

본인이 개발한 <날개셋> 한글 입력기도 에디팅 엔진과 기본적인 파일 구성, 그리고 각종 클래스 구조의 뼈대는 2004년에 완성된 3.0에서야 정착했으며, 그 여파로 인해 커널의 파일 이름도 ngs3.dll이다. 또한 최 정한 씨가 과거에 개발했던 셸 유틸리티인 MDIR도 정식 명칭은 MDIR-III이다.

※ 5

사람의 손가락과 발가락이 5개 단위이기 때문에 이 수는 우리에게 아주 친숙하다. 약수가 더 많아서 더 유용한 8이나 12가 아니라, 10이 기수법의 기준으로(10진법) 전세계에 보편적으로 통용되게 된 것은 전적으로 이것 때문이다.

그에 반해 손· 발가락이 5개보다 더 많아서 6개 정도 되는 건 전형적인 기형(다지증) 내지 괴물의 상징으로 간주되었다. 성경에도 고대에 손· 발가락이 6개인 거인 괴물 혈통이 있었다는 기록이 전해지며(삼하 21:20; 대상 20:6), 로스웰 추락 UFO 외계인 시체 해부 동영상에도 문제의 외계인의 사지엔 가락이 6개 달려 있다.
(비록 그 동영상은 훗날 낚시 자작극으로 판명이 됐지만, 1947년에 일어난 로스웰 사건 자체는 존재를 부정하기 어려운 듯하다. 그 자작극을 꾸미고 외계인 세트를 만든 사람도, 외계인이니까 손발가락을 5개가 아니라 일부러 6개로 설정했다는 것에 주목할 필요가 있다.)

5에서 수학적으로 더욱 큼직한 의미가 들어있다. 하필 5차 방정식부터가 대수적인 방법으로 일반해를 구하는 게 불가능하다는 것. 쉽게 말해 근의 공식 같은 만능 공식이 있을 수가 없다는 뜻이다.
3차나 4차의 경우, 비록 2차 방정식의 근의 공식 따위와는 비교도 못 할 정도로 복잡하고 어려운 형태이긴 하지만 근의 공식이 있긴 하다. 왜 5차부터 그마저 원천적으로 안 되는 걸까?

유한한 횟수의 사칙연산과 거듭제곱/제곱근의 묶음만으로는 표현할 수 없는 수가 방정식의 근으로 튀어나올 수 있기 때문이다. 근의 공식이 사용하는 연산 수단의 범위 자체를 넘어서는 수가 대수방정식의 근이 될 수 있다는 뜻이다. 그러면서도 정의상 초월수는 아니다. 흠..

예를 들어, 5차보다 한 차원 더 높은 6차 방정식 x^6+x^2-7=0 의 근 중 하나는 다음과 같다.

사용자 삽입 이미지

식은 정말 간단한 형태이지만 근은 가히 미치도록 복잡한 형태이지 않은가? 사람 손으로 계산하기란 거의 불가능한 경지임을 알 수 있다. 그래도 이 수의 6제곱과 2제곱을 더하면 딱 정확하게 7이 나오긴 한다. 이건 그나마 대수적인 범위에 근이 존재하는 사례이다.

그런데 이런 형태로 나오지 않는 근은 도대체 정체가 뭘까?
이걸 제대로 증명하고 이해하려면 군론을 비롯해 온갖 추상적이고 복잡하고 어려운 수학 이론을 동원해야 하며, 나도 거기까지는 잘 모른다. 다만, 초간단한 방정식 x^n=1만을 생각해 보자. 이 방정식의 근은 드 무아브르의 공식에 따라 복소평면에서 원점이 중심이고 반지름이 1인 원에 내접하는 정n각형의 꼭지점을 이루고 있다.

그러므로 180/n도 중, cos/sin값이 대수적인 수로 딱 떨어지지 않는 각도라면, 응당 대수적인 방법으로 나타낼 수 없는 근이 존재하게 된다고 대략 짐작 정도는 할 수 있을 것이다. 가령, n=7인 정칠각형 같은 것 말이다. 그리고 x^n=1부터가 그러하니, 다른 낮은 차수의 계수까지 섞이면 7차가 아닌 5차에서부터 다항식 기반 방정식의 복잡도가 안드로메다로 치솟는가 보다. 나의 수학 감각으로는 이해력이 여기까지가 한계이다.

그런데 어째 수학 패키지들은 그런 복잡한 방정식에 대해서도 근을 numerical한 방법으로 그것도 실수뿐만이 아니라 복소수 범위에서까지 다 찾아 주며, 5차 이상의 방정식이라도 대수적인 방법으로 근을 구할 수 있는 형태라면 아까의 예에서 본 것처럼 근사값이 아니라 symbolic하게 정확한 근을 찾아 주기까지 한다. 도대체 무슨 귀신같은 수치해석 알고리즘을 썼는지 모르겠다.

※ 7

열 손가락 안에 드는 수 중에서 가장 큰 소수인 7은 역수를 10진법으로 나타냈을 때 꽤 긴 순환소수가 등장하는 최초의 수이다. (0.142857...)
정다각형 중에서도 정칠각형은 3~6이나 심지어 8, 10에 비해서는 정말 듣보잡이다. 5는 그래도 황금비하고라도 관련이 있고 작도도 가능한데 반해, 7은 생긴 모습이 안정적이거나 예쁜 구석이 도무지 없고, 수학적으로 작도가 불가능한 최초의 정다각형이다. 자동차의 바퀴를 봐도 휠너트가 7개가 달린 경우는 전혀 없다.

그럼에도 불구하고 현실에서 7의 존재감이 가장 분명하게 나타나 있는 분야는 크게 두 곳인데, 한 주가 전세계 공통으로 7일이라는 점, 그리고 음악에서 한 옥타브의 음계가 하필 7음으로 구성된다는 점이다.

더 나아가 성경에서 숫자의 쓰임에 대해 면밀히 연구해 본 일부 사람들은, 하나님은 이런 불편하고 괴상한 숫자인 7을 무척 좋아하며, 내부적으로 7진법을 사용하시는 게 분명하다고 주장한다. 그래서인지 성경의 책들 중에서도 특히 요한계시록은 온통 7패턴으로 넘쳐나는 책이지 않던가. 무지개의 색깔이 관습상 7개로 분류되고 7이 웬지 행운의 숫자로 여겨지는 게 완전 터무니없는 엉뚱한 심상은 아니라는 뜻 되겠다.

여호수아기에서 여리고 성을 함락시키는 작전을 보면 이스라엘 백성은 6일 동안은 성을 한 바퀴 돌고, 일곱째 날에는 성을 일곱 바퀴 돈 뒤에 함성을 질렀는데 성이 무너졌다(수 6). 그와 비슷한 맥락으로, 계시록에서는 일곱 개의 봉인이 열리는데 마지막 봉인이 열리자 일곱 나팔이 나오고, 마지막 나팔 타이밍 때 재앙이 담긴 일곱 병.. 이런 식으로 이벤트가 꼬리에 꼬리를 잇는다.

과거에 스탈린 휘하의 구소련은 1930년대에 달력에서부터 종교색을 완전히 걷어내겠다는 의도로 독자적인 달력과 1주 5~6요일 체계를 사용한 적이 있었다. 그러나 그 시도는 오래 가지 못하고 실패했다. 7의 존재감은 아무래도 우리가 이제 와서 부정할 수 없을 정도로 깊숙히 파고든 게 분명하다.

※ 기타

1. 5차 방정식 얘기가 기왕 나왔으니 말인데, 수학에서 이런 식의 미지의 영역은 방정식 근 찾기뿐만 아니라 적분에도 있다. 미분은 합성함수나 곱에 대한 미분이 general하게 정립이 돼 있기 때문에 어떤 함수든 미분하기는 쉬운 편이다. 그러나 적분은 그렇지 않다. 부분적분은 말 그대로 식의 형태를 치환 같은 다른 적분 테크닉을 적용하기 유리한 형태로 변형하는 것일 뿐이기 때문에 만능이 아니다.

위키백과에 예가 제시되어 있듯, x^x, exp(-x^2), sin(x)/x, 1/ln(x) 같은 함수들은 부정적분이 어떤 특성을 갖는 함수인지 기존 초월함수들의 조합만으로는 형태가 기술이 되지 않는다.

까짓거 조립은 분해의 역순이고, 적분은 미분의 역순이 아닌가 하는 생각이 들지도 모르나, 수학의 세계는 그렇지 않은 모양이다. 마치 1/x를 적분했더니 ln x(+C)라는 완전히 생소한 함수가 튀어나온 것처럼, 미지의 발상의 전환이 필요한 듯하다.

2. 과학은 창조론과 진화론, 그리고 심지어 천동설-_-과 지동설 같은 이슈 때문에 종교계와 충돌할 거리가 있었다. 하지만 수학은?
“그래도 지구는 돈다.”도 아니고, “그래도 루트 2는 무리수이다.”, “그래도 파이는 초월수이다” 이런 것 때문에 교황청으로부터 무슨 수학자가 박해 받았다거나 하는 역사는 내가 알기로 없다.
설마 대하 4:2 같은 구절을 들고서 원주율은 3이라고 드립을 쳤다거나 하지는 않았을 테니 말이다. -_-;; 그럴 거면 차라리 H2O가 산소라고 드립을 치는 게 낫겠다. ㅋㅋㅋ

Posted by 사무엘

2012/10/19 08:21 2012/10/19 08:21
, , , ,
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/745

우리는 학교에서 산수를 배우면서 덧셈을 가장 먼저 배우고, 그 뒤 이들을 묶은 형태인 곱셈을 배운다. 그리고 나중에는 곱셈을 묶은 거듭제곱이라는 걸 배운다. 그런데 덧셈이나 곱셈과는 달리, 거듭제곱은 같은 수를 곱하기를 반복한다는 직관적인 정의만 적용해서는 정수가 아닌 형태의 거듭제곱을 생각하기가 쉽지 않다.

지수법칙이 있으니 유리수 승까지는 그래도 괜찮다. 정수 승과 정수 제곱근으로 설명이 가능하기 때문이다. 하지만 이를 초월하여 2^sqrt(2)처럼 임의의 실수 승은 어떻게 해야 계산하고 표현할 수 있을까?

거듭제곱을 모든 실수 범위에서 정의함으로써 지수함수라 불리는 연속인 함수의 형태로 영역을 확장하는 데는, '연속'이라는 개념에서 알 수 있듯, 미분의 도입이 큰 기여를 했다. 자연상수 e가 발견되고 로그 함수라는 게 생기면서 지수함수는 로그의 역함수로서 정체성을 확립하게 되었다.

이 글에서 수학적으로 엄밀한 디테일을 다 말할 수는 없지만, e는 임의의 수에다 제곱근을 반복하면서 지수가 0에 가까워지고 원래 수가 1에 한없이 가까워질 때 그 수의 소숫점, 다시 말해 숫자에서 1을 뺀 값이 지수와 어떤 비례 관계가 있는지를 규명하는 과정에서 발견되었다. (1+1/n)^n에서 n의 무한대 극한이라는 원론적인 정의가 바로 거기서 유래되었으며, 사실, (1+x/n)^n라고 해 주면 그냥 exp(x)를 바로 구할 수 있다.

exp(x)는 0인 지점에서 기울기가 1이다. 그리고 미분해도 도함수가 자기 자신과 같다는 매우 중요한 특징이 있다. 즉, y=exp(x)에 있는 점 (x, y)의 기울기는 곧 y라는 뜻. 그럼 이놈의 역함수는 어떻게 될까? 본디 함수와 그 역함수는 y=x에 대해 대칭이므로, 점 (y, x)의 기울기는 곧 1/y여야 한다.

미분하면 1/x가 되는 함수를 찾아보니 다름아닌 ln x이다. 복잡한 거듭제곱을 곱셈으로, 곱셈은 덧셈으로 바꿀 수 있는 놀라운 함수 말이다. 그래서 exp는 로그의 역함수인 고로 그 정체가 e^x인 지수함수라는 결론이 도출되고, 그래서 로그와 지수의 함수 관계가 완성될 수 있었다.

a^b = e^(b ln a)이다. ln a^b는 b ln a이므로 양변에 자연로그를 씌우면 아주 자연스럽게 유도 가능하다.

또한 굳이 밑이 e가 아닌 임의의 a인 로그를 생각하더라도, log[a] b = ln b / ln a이다. 이것은 지수보다는 약간 연상이 쉽지 않을지 모르나, 이 경우를 생각해 보자. 로그의 정의상 당연히 a^(log[a] b) = b이다. 이 식 자체에다가 자연로그를 씌우면 log[a] b * ln a = ln b가 되고, 그 후의 논리 전개는 생략. ㄲㄲ

이건 굉장히 유용한 특징이다. 이 덕분에 exp와 ln만 있으면 우리는 임의의 지수의 값도 구할 수 있고, 임의의 로그의 값도 구할 수 있게 된다.
그럼 이 함수의 값을 실제로 컴퓨터로 어떻게 계산하면 좋을까?

이걸 연구하는 분야는 기호, 순수함, 추상성만을 좋아하는 전통적인 수학에서 벗어나 일면 '지저분한 이단아'처럼 보일 수도 있는 수치해석 쪽으로 가게 된다. 컴퓨터에서 exp, ln, cos, sin 같은 기초적인 초월함수의 값을 조금이라도 더 빠르고 정확하게 구하는 기법은 이미 천재 컴덕후, 수학자, 공학자들이 연구할 대로 다 연구해서 소프트웨어 정도가 아니라 아예 하드웨어에 회로에 다 코딩되어 있을 정도이다.

그러니 내가 거기에 뭔가를 더 기여할 게 있다고 여겨지지는 않는다. 단지 본인은 핵심적인 아이디어만 직접 짜 보고 넘어갈 생각이다.
초월함수들의 근사값을 계산하는 아이디어도 미분에서 유래되었다. 단순히 1차함수 접선을 구하는 것을 넘어서 곡선과 가장 가까운 n차 근사 다항식을 구하는 것으로 생각을 확장하면 '테일러 근사 다항식'이라는 걸 구할 수 있고, 무한히 미분 가능한 함수에 대해서는 무한합인 그 이름도 유명한 테일러 급수라는 걸 유도할 수 있다.

* 이말년 씨리즈와 Taylor series는 서로 느껴지는 포스가 확 다르다. 흠.;;;

exp(x)는 예전에도 글로 썼듯이, 원론적인 정의를 이용해서 값을 구할 리는 절대 없고, 테일러 급수를 쓴다. 아래의 코드는 16항 정도까지 계산했다.

double pseudo_exp(double x)
{
    double v=1.0, p=x,q=1.0;
    for(int i=1; i<=16; i++, v+=p/q, p*=x, q*=i);
    return v;
}

단, 이 급수는 x=0인 지점을 기준으로 구한 것이기 때문에 x가 8~9 정도만 넘어가도 오차가 상당히 커진다. 하지만 컴퓨터 부동소숫점에도 한계가 있으니 항을 한없이 많이 계산할 수도 없는 노릇이고, 큰 수에 대해서는 다른 방법으로 보정이 필요할 듯하다.

한편, 로그는 어떻게 구할까?
자연로그도 다음과 같은 직관적인 형태의 테일러 급수가 있긴 하다.

ln (1+x) = x (+-) x^n/n (n이 짝수일 때는 빼기, 홀수일 때는 더하기)

그런데 이 급수는 x가 -1 초과 1 미만일 때만 유효하고, 따라서 0과 2 사이의 로그값만 구할 수 있다. 나머지 범위는 항을 제아무리 많이 계산해 줘도 아예 원천적으로 원함수와 전혀 일치하지 않게 된다. 테일러 급수가 모든 범위에 대해서 무조건 만능은 아님을 알 수 있다.

하지만 지수함수와는 달리 로그는 ln ab = ln a + ln b라고 큰 숫자를 한없이 쪼개는 마법과 같은 공식이 있다. 그러므로 저것만 있어도 아무 수의 로그라도 구할 수 있다.

즉, ln 2의 값을 미리 갖고 있다가 임의의 수에 대해서 2보다 작아질 때까지 ln 2를 따로 더하면서 계속 2로 나누면 된다. 2는 잘 알다시피 2진법을 쓰는 컴퓨터가 좋아하는 수이기도 하고 말이다. 그래서 주어진 수가 2 이하의 범위에 들어오면 그때 급수를 써서 최종적으로 구한 로그값을 또 더하면 된다.

double pseudo_ln(double x)
{
    #define LN_2  0.693147180559945
    double v=0;
    while(x>2.0) x/=2.0, v+=LN_2;

    double x_min1 = x-1, xm = x_min1;
    for(int i=1; i<=16; i++, xm*=x_min1)
    if(i&1) v+=xm/i; else v-=xm/i;
    return v;
}

단, 이 급수의 아쉬운 점은 x가 0이나 2라는 양 극단에 가까워질 때 정확도가 꽤 크게 떨어진다는 점이다. 이는 계산하는 항의 수를 충분히 크게 잡아도 쉽게 극복되지 않는다.

그래서 성능면에서 실용적인 가치는 별로-_- 없지만, ln이 exp의 역함수라는 점을 이용하여, 기존 exp 함수로부터 방정식 근 찾기 기법을 이용하여 로그를 구하는 방법도 이 기회에 실습하게 되었다. 그게 없으면 무엇보다도 초기에 정확하게 값이 구해진 채 공급되어야 하는 LN_2 내장값은 또 어떻게 구하겠는가?

일변수 방정식의 근을 찾는 기법은 수치해석 교재에서 가장 먼저 다뤄지는 기초 주제이다.
exp(x)는 기복이 없으며 그래프 모양이 워낙 예쁘고 원천적이기-_- 때문에, 근이 존재하는 초기 구간만 잡아 주면, 어떤 근 찾기 알고리즘을 쓰더라도 근을 구할 수는 있다. 단지 얼마나 빨리 수렴하여 구해 내느냐가 문제일 뿐이다. 애초에 지수 함수 정도면 범용적인 방정식 근 찾기 알고리즘이 과분하게 느껴질 정도로 특징이 너무 분명하기도 하고 말이다.

가장 먼저 나오는 것은 이분법(bisect)이다. 이게 자료구조에서는 이분법이라고 하면 이분 검색처럼 log n 시간 만에 문제를 푸는 효율적인 알고리즘이라고 불리는 반면, 수치해석에서는 정수 개의 discrete한 데이터가 아니라 사실상 연속인 구간을 다룬다. 그렇기 때문에 통상적인 이분법조차도 수렴이 느린 비효율적인 방법으로 간주된다.

double solve_bisect( double (*pfn)(double), double v )
{
    double f=-10.0, t=10.0; int nt=0;
    while(1) {
        double d = (f+t)/2.0;
        double p = pfn(d) - v;
        if(fabs(p) < 0.000001) break;
        if(p > 0) t=d; else f=d; nt++;
    }
    return f; //nt는 계산 횟수 counter
}

double pseudo_ln2(double x)
{
    return solve_bisect(pseudo_exp, x);
}

근 찾기 알고리즘 중에서는 뉴턴-랩슨(혹은 그냥 뉴턴) 법이 수렴이 매우 빠른 알고리즘으로 여겨지고 있다. 이 방법은 이분법과는 달리 시작점과 끝점이라는 구간을 잡고 시작하는 게 아니라 시작점에서 해당 방정식의 접선을 그은 뒤, 접선과 x축이 만나는(y=0) 지점을 다음 점으로 잡는다. 이 작업을 방정식의 값이 근인 0과 충분히 가까워질 때까지 반복한다.

사용자 삽입 이미지


방정식 f(x) 위의 점 (x_0, f(x_0))을 지나는 접선의 방정식은 기울기가 f'(x_0)일 테니 y=f'(x_0)*x + f(x_0) -f'(x_0)*x_0이 된다. 그래야 x에다가 x_0을 집어넣었을 때 f'(x_0) 나부랭이는 소거되고 함수값으로  f(x_0)만 남기 때문이다.
이 접선이 y=0을 만족시키는 다음 점 x_1을 방정식으로 풀면 x_1=x_0 - f(x_0)/f'(x_0)이라는 생각보다 깔끔한 식이 나온다. 이를 코딩하면,

double solve_newton( double (*pfn)(double), double (*pfn_prime)(double), double v )
{
    double d = 0.0; int nt=0;
    while(1) {
        double p = pfn(d) - v;
        if(fabs(p) < 0.000001) break;
        d = d - p / pfn_prime(d); nt++;
    }
    return d;
}

double pseudo_ln3(double x)
{
    return solve_newton(pseudo_exp, pseudo_exp, x);
}

뉴턴 법 함수는 도함수의 포인터를 별도로 받는데, exp는 어차피 도함수가 자신과 동일하므로 자신을 한번 더 넘겨주면 된다는 점도 특징이다.

프로그램을 실제로 돌려 보면 알겠지만, 동일 오차 범위를 줬을 때 뉴턴 법은 이분법보다 통상 2~5배나 더 빨리 수렴하는 걸 볼 수 있다. 마치 퀵 정렬이 pivot을 기준으로 자료가 그럭저럭 이미 정렬돼 있을수록 더욱 빨리 동작하고 자료의 상태에 민감하듯, 뉴턴 법은 접선과 가까운 형태의 부드러운 곡선일수록 수렴이 더욱 빨라진다.

자, 지금까지 공대 학부 수준의 아주 허접한 수학 덕질을 감각 유지 차원에서 잠시 복습해 보았다. 각종 공식들이 유도되는 원리를 좀 더 깊이 생각해 보고 싶으나 시간과 여유가 부족하다.

아, 수학에서는 거듭제곱뿐만이 아니라 팩토리얼까지도 자연수가 아닌 실수, 그리고 복소수 범위에까지 정의하고 그 증가폭을 측정하는 방법에 대해 연구가 진행돼 있다. 그 일환으로 ln n!이 n log n - n과 얼추 비슷하다는 스털링의 공식이 있고, 그보다 더 괴랄한 감마 함수라는 것도 있어서 z! = Γ(z+1)이다. 머리 좋은 똘똘이들의 수학 덕질의 끝은 도대체 어디까지인지를 다시 생각하게 된다.

Posted by 사무엘

2012/09/10 19:32 2012/09/10 19:32
, , , , ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/731

조화평균, 조화수열, 황금비

1. 조화평균과 조화수열

우리는 중등 학교의 수학에서 산술, 기하, 조화평균을 배운다.
물론, 대부분의 일상생활에서 숫자를 다룰 때는 단순히 합계를 자료의 개수로 나누기만 하는 산술평균 하나만 있어도 충분하다. 그러나 다른 개념의 평균이 필요할 때도 있다.

가령, 어떤 수치가 1년 간격으로 예전보다 3배, 4배, 5배씩 증가해서 총 60배가 되었다면, 이를 해마다 4배씩 증가했다고 싸잡아 간주할 수는 없는 노릇이다. 4의 3승은 64이지 60이 아니기 때문이다.

이런 식으로 비율 내지 배율을 좋아하는 계산 분야에서는 기하평균이 필수이다. 앞의 예에서는 (3+4+5)/3이 아니라, 3*4*5의 세제곱근인 약 3.915가 정확한 값이다.

그럼 조화평균은 무엇이며 어떤 용도로 쓰일까?
역수의 산술평균을 또 역수로 취한 값이 바로 조화평균이다. 두 수 a, b의 조화평균을 그 정의대로 구해서 식을 정리하면 2ab / (a+b)가 나온다. 쉽게 말해 곱을 합으로 나눈 셈이다.

자동차가 동일한 길이의 두 구간을 달리는데 한 구간은 시속 30km로, 다른 구간은 시속 60으로 달렸다면, 전체 구간에 대한 자동차의 표정 속도는 30과 60의 조화평균인 시속 40이 나온다. 한 구간의 길이가 30km였다고 생각해 보면 가는 데 시속 30으로 1시간, 시속 60으로 30분이 걸렸을 터이니 전체 60km를 1시간 반 만에 주파하는 속도는 시속 40이기 때문이다.

반대로 길이가 중요하지 않고 소요 시간의 절반을 시속 30으로 달리고 나머지 소요 시간 동안 60으로 달렸다면 자동차의 표정 속도는 응당 산술평균인 시속 45가 될 것이다. 관점의 차이를 이해하시겠는가?

학교에서 조화평균은 병렬 연결된 저항들의 전체 저항값을 구할 때 정도에나 쓰였지만 교통 관련 계산을 할 때 더욱 유용히 쓰일 수 있다.
어떤 노선에 버스가 5분 간격으로 다닌다고 치자. 그런데 5분으로도 모자라서 그 상태에서 3분 간격의 버스가 추가로 더 투입되었다면, 실질적인 배차 간격은 얼마로 좁혀졌다고 볼 수 있을까?

답부터 말하자면 이 값은 5와 3의 조화평균의 절반과 같은 1.875분이다.
5와 3의 최소공배수인 15분이라는 시간을 생각해 보면, 그 동안 5분 간격 버스는 3대가 다닐 수 있다. 그러나 3분짜리 버스는 5대가 다닐 수 있으므로 15분 동안 버스가 총 8대로 늘어난 셈이 된다.

따라서 실질적인 평균 배차간격은 15를 8로 나눈 1.875분이다. 5와 3의 조화평균인 3.75는, 5분 간격 버스와 3분 간격 버스를 합친 것이 3.75분 간격 버스 두 대를 합친 것과 동일한 증차 효과를 낸다는 걸 의미한다.

임의의 동일한 수들에 대해서 기하평균(G)은 산술평균(A)보다 크지 않으며, 조화평균(H)은 기하평균(G)보다 크지 않다는 것이 증명되어 있다. 그리고 아예 H=G^2 / A라는 항등식도 알려져 있다. 어떤 데이터에 대해서 두 종류의 평균값을 알고 있으면 다른 한 평균값은 그로부터 유도해 낼 수 있다는 뜻이 되겠다.

한편, 1/3, 1/4, 1/5 ~처럼 역수가 등차수열을 이루는 수열은 조화수열이라고 한다. A, A와 B의 조화평균, B으로 구성된 세 수는 응당 조화수열이다.
이건 등차나 등비수열도 아니고 도대체 무슨 의미가 있는지 궁금할 것이다. 하지만 자연에서 조화수열은 아주 직관적으로 쉽게 찾을 수 있다. 이름에 괜히 harmonic이 붙은 게 아니다.

일단 우리 눈에 사물이 비쳐 들어오는 원근법이란 게 반비례이기 때문에 조화수열과 관계가 있다. 직선으로 뻗은 도로에 균일한 간격으로 그어진 차선을 보자. 멀리 떨어진 놈일수록 중앙의 소실점에 가까워지고 겉보기 간격이 더욱 조밀해진다. 그 간격이 수학적으로는 바로 조화수열인 것이다.

거시적으로 보면 태양은 달보다 N배나 더 크지만 지구로부터의 거리도 똑같이 N배나 더 멀리 떨어져 있다. 그렇기 때문에 지구에서의 겉보기 크기가 둘이 거의 같으며 일식도 일어날 수 있다.

사람의 뇌는 두 눈이 보내 준 2차원 영상을 합성하여 3차원 공간을 인지하는 능력이 대단히 발달해 있다. 그런데 그 능력은 수학적으로 따지자면, 2차원 조화수열 간극으로부터 3차원 등차수열 간극을 유추하는 게 상당수를 차지하고 있을지도 모른다. 그만큼 조화수열은 우리에게 친숙한 존재이다.

그 다음으로 우리가 조화수열을 시각적으로 볼 수 있는 흥미로운 분야는 음악이다. 실로폰도 그렇고 파이프 오르간이나 하프도 그렇고, 음을 만들어 내는 매체는 저음이 언제나 길고 고음은 한 치의 예외 없이 짧다.

그런데 그 짧아지는 간격이 조화수열이다. 매체를 그런 간격으로 만들면 소리의 파형 주기는 기하급수적으로(=등비수열) 짧아지는 평균율 음계가 나오는가 보다. 어떻게 그게 물리적으로 가능한지는 잘 모르겠다.

2. 황금비

조화수열이라는 말이 나왔으니 말인데, 아름다움이나 조화 같은 걸 수학적으로 설명할 때 빠짐없이 등장하는 건 황금비이다.

기본 발상은 a:b = (a+b):a 비례식을 만족하는 a와 b의 비율이다. 음, 뭔가 심오하지 않은지? 쉽게 말해 긴 변과 짧은 변의 비율이, 긴 변과 짧은 변을 합한 것하고 긴 변과의 비율과 같은 걸 말한다. 이걸 식으로 표현하면 이차방정식으로 귀착되고, 황금비의 값은 (1+sqrt(5))/2, 대략 1.618이 된다.

황금비 상수는 뭔가 심오함이나 신비로움, 괴팍함이 느껴지는 초월수도 아니고, 간단한 이차방정식만으로 값을 구해서 모든 특성을 파악할 수 있는 평범한 대수적 수에 불과하다. 그런데 이게 왜 그렇게 중요한 걸까?

인간이 보편적으로 새벽 2시에 가장 깊이 잠들어 있는지, 저녁 8시에 죄책감 없이 가장 잔인해지는지는 잘 모르겠지만, 저 비율이 인간이 보편적으로 가장 심리적인 안정감과 균형과 조화를 느낀다고 그런다. 오죽했으면 golden ratio라는 이름이 붙었겠는가? 이것 말고 golden이라는 말이 붙은 개념은 “자신이 대접받고 싶은 만큼 남에게도 대접해 줘라”로 요약되는 golden rule 정도밖에 없다.

1 1 2 3 5 8 13 21~ 로 이어지는 그 유명한 피보나치 수열도 현재 항과 이전 항의 비율이 황금비로 수렴한다는 건 잘 알려진 사실이다. 일반항을 구하는 공식엔 응당 황금비 상수가 들어간다.

또한, 0부터 시작해서 x=sqrt(1+x)를 무한 반복해도 x는 황금비로 수렴한다. 계산 과정의 특성상 x는 sqrt(2)도 한 번 거치지만, 궁극적으로는 다른 수로 수렴하게 된다는 게 흥미롭다.
황금비는 역수가 자신에서 1을 뺀 값과 같다는 특징이 있기도 하다. (0.618...) 1/x = x-1인데, 이는 특별한 게 아니라 황금비의 정의의 특성상 당연한 귀결이다.

도형 중에서는 정오각형이 변 길이와 대각선 길이의 비가 황금비이다.
1마일이 대략 1.609km인 건 아무래도 황금비와는 관계가 없고 전적으로 우연인 듯하다.
또한 종래의 4:3 aspect ratio를 깨고 컴퓨터 화면이 가로로 좀 더 길쭉한 추세로 가는 것 역시, 사람들이 황금비를 심리적으로 더 좋아해서인지는 모르겠다.

한편, A4나 B4 같은 용지의 길이 비율은 황금비가 아니라 sqrt(2)이다. 본인은 A4 용지의 크기가 210*297mm인 건 알고 있었지만 그 비율이 sqrt(2)를 표방한 것인 줄은 전혀 모르고 있다가 최근에 알게 되고는 크게 놀랐다. 심심해서 297을 210으로 나눠 봤는데 딱 1.414...가 나왔으니 말이다.

이런 비율의 장점은 우리가 이미 실생활에서 적지 않게 경험한 적이 있지 싶다. 종이를 반으로 접어도 크기 비율이 접기 전과 동일하게 유지된다는 것.
즉, 황금비가 a:b = (a+b):a를 추구했다면, 용지는 a:b = b:a/2를 추구한 셈이다.
황금비가 길이가 1인 정오각형의 대각선 길이라면, sqrt(2)는 길이가 1인 정사각형의 대각선 길이이다.

원래는 조화수열에 대해서만 글을 쓰려고 했는데 어쩌다가 황금비까지 나오면서 얘기가 옆길로 샜는지 모르겠다. 둘은 실용적인 의미가 약간 유사점이 있다 보니 미묘하게 한 글로 엮이게 된 것 같다.

Posted by 사무엘

2012/07/25 08:26 2012/07/25 08:26
, ,
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/711

1.

수학에서 원주율 pi와 자연상수 e는 가장 유명하고 친근한 상수임이 틀림없다. 이들은 유리수를 계수로 가지는 대수방정식의 근이 되지 않는 초월수임이 증명되어 있고, 이들의 정의나 다른 특성에 따라 값을 구하는 식이 여럿 존재한다.

pi = 4(1/1 - 1/3 + 1/5 - 1/7 + 1/9 ... )
e = lim (1 + 1/n )^n (n → 무한대)

pi의 저 공식은 정말 이보다 더 쉬울 수 있을까 싶을 정도로 너무 깔끔하고, 저게 도대체 파이와 어떻게 관계가 있을까 하는 생각이 들기도 한다. 사실, 저것은 arctan(tan의 역함수) 함수의 테일러 급수에다가 1을 대입하여 얻은 식이다. 45도일 때 기울기(=탄젠트)가 딱 1이 되니, 저 값은 pi/4가 나오고, 따라서 pi를 구하기 위해 4를 곱한 것이다.

e의 경우, 숫자를 무한대로 띄우는 n승과, 그 지수 연산의 발산 효과를 무효로 만드는 1/n (1에다가는 아무리 큰 지수 연산을 해도 그대로 1..)의 극한이 저렇게 가까워지는 게 신기하기 그지없다.

그러나 위의 두 공식은 둘 모두 n 값이나 항의 개수가 100000이 넘어가도 소숫점 겨우 네댓 자리까지밖에 일치하지 않을 정도로 수렴이 대단히 느린 게 흠이다. 이 방식으로는 소숫점 n째 자리까지 일치하려면 계산량이 n의 지수함수 형태로 증가해야 한다. 알고리즘으로 치면 엄청나게 비효율적인 알고리즘이다.
그래서 실제로 pi나 e의 값을 계산할 때는, 매 회에 좀 더 복잡한 계산이 수행되더라도 적은 횟수로도 더 빠르게 수렴하는 다른 식을 찾아 쓴다.

자연상수 e는 exp(x), 즉, 미분해도 자신과 동일한 함수의 테일러 급수로부터 얻은 식을 이용해 값을 구할 수 있다. 바로 n팩토리얼의 역수의 무한합인데, 직관적일 뿐만 아니라 수렴 속도도 아주 빠르다. 물론 팩토리얼이 숫자를 폭발적으로 키우는 연산이긴 하지만, 그만큼 정확도도 커져서 14!까지만 계산해도 소숫점 8~9자리까지 정확한 값이 나온다. 그래서 이걸로 끝이고 다른 계산법을 찾을 필요가 사실상 없다.

자연상수라는 이름엔  '자연'이라는 단어가 괜히 붙은 게 아니다. 얘는 수학의 입장에서는 특성이 매우 자연스럽고 직관적이고 사랑스럽기까지(!) 한 수이기 때문에, 초월수라는 증명도 상당히 초창기에 이뤄졌다. 리우빌 상수--10진법 기준 n!에 속하는 소숫점 자리만 1이고 나머지는 0인 좀 괴랄한 0.110001000… --처럼 초월수의 존재를 증명하기 위해 일부러 설정된 수가 아닌 수 중에서는 초월수라는 게 증명된 최초의 수가 바로 자연상수이다.

pi는 e보다 더 오묘한 수여서 초월수 증명도 10년 남짓 더 늦게 나왔으며, 더욱 복잡하고 다양한 유도식들이 존재한다. 특히 컴퓨터가 발명되고 원주율 계산이 컴퓨터의 성능을 측정하는 잣대로 통용되기 시작한 뒤부터는 컴퓨터의 입장에서 더욱 계산하기 쉬운 형태의 식이 연구되기 시작했다. 그래도 어느 것이든 e만치 형태가 간단하면서도 빨리 수렴하는 식은 존재하지 않는 것 같다.

비록 컴퓨터 시대에 발견된 식은 아니지만,
sqrt(2) / 2 라는 분수에서 시작하여
sqrt( 2+ sqrt(2) ) / 2와 같은 식으로 분자에다가만 x → sqrt(2 + x)로 변환을 하면서 생성된 수들을 계속 곱하면 2/파이 (파이의 역수의  두 배)에 수렴하는데,
이것도 e만치는 아니지만 계속되는 곱셈과 제곱근 버프 덕분인지 수렴 속도가 빠른 편이다.

2.

1부터 n까지 자연수가 있고 이들의 역수를 나열하면 조화수열이 된다. 조화수열의 무한합은 비록 무지막지하게 느리지만 무한대로 발산한다는 것이 알려져 있다.
한편 n!의 역수의 무한합은 아까 말했듯이 e가 되는데,
그럼 n^2의 역수의 무한합은 무엇이 될까?

거듭제곱의 지수가 1보다 커지는 순간부터 역수의 무한합은 유한한 값으로 수렴하긴 한다. 그러나, 그 수렴값의 특성을 알아내는 건 아주 어려운 일이어서 지금까지도 알려진 게 그리 많지 않다.
n^x의 역수의 무한합을 일반적으로 x에 대한 리만 제타 함수값이라고 한다.

그리고 그 x가 짝수일 때는 놀랍게도 pi와 관련이 있는 값으로 수렴한다는 것이 천재 수학자 오일러에 의해 밝혀졌다. 가령, 2일 때는 이렇다.

1 + 1/4 + 1/9 + 1/16 + 1/25 ... = pi^2 / 6

그러니 이것도 응당 파이를 구하는 데 쓸 수 있는 공식이다.
비록 이것 역시 아까의 1/3 1/5 1/7 공식 만만찮게 수렴 속도가 몹시 느리기 때문에 실용성은 떨어지지만 말이다.

여기서 갑자기 pi가 튀어나오는 것도 신기하지만, 이 수의 진짜 놀라운 면모는 또 다른 곳에 있다.
바로 이 수는 자연수에 존재하는 소수의 분포와 관계가 있다.

1부터 N 사이에 있는 임의의 두 자연수를 뽑았을 때 이것이 서로 소일 확률은 N이 커질수록 바로 저 수, 다시 말해 (pi^2)/6의 역수로 수렴한다! 그 확률은 대략 60.8%이다.

아니, 리만 제타 함수에서 파이가 왜 조건부로 튀어나오며, 게다가 미적분· 해석학하고는 아무 관계가 없는 정수론과 관련된 의미가 왜 이런 데서 발견되는 걸까? 이걸 알아 낸 사람도 오일러이다.

2를 포함해서 리만 제타 함수의 짝수승의 값은 그래도 pi가 얽혀 있으니 초월수라는 건 확실히 인증이다만 홀수승의 값들은 무리수인 것만 알려져 있지 다른 특성은 알려진 바가 없다. 초월수일 게 거의 확실시되고 있긴 하나, 그조차도 정식으로 증명되지는 못했다.

3일 때의 값은 '아페리 상수'라 하여 일부 공학 분야에서도 쓰인다. 이 수가 무리수라는 증명을 1978년에 한 프랑스의 수학자 아페리의 이름을 딴 것이다. 정의대로 각 자연수들을 3승한 뒤 역수를 구해서 더하면 값을 구할 수 있지만, FM 방식은 역시 수렴이 더디기 때문에 훨씬 더 복잡하지만 더 빨리 수렴하는 별도의 급수 전개를 써서 값을 구한다.

그런데 이 값의 역수는 임의의 세 자연수가 서로 소일 확률이라고 한다. 마치 가위바위보에 참여하는 인원이 많아질수록 무승부가 나올 확률이 치솟듯, 세 자연수는 두 자연수일 때보다 서로 소일 확률이 올라가서 그 값은 약 83.1%에 달한다.

작은 범위에서라도 정말 얼추 그렇게 되는지는 프로그램을 짜서 간단히 확인해 볼 수 있다.
1부터 N까지 3중 for 문을 작성해서 모든 숫자 조합에 대해서 최대공약수를 구해서 1이 나오는 경우를 세면 되는데, N이 몇천 정도만 돼도 3중 for 문은 오늘날의 최신 컴퓨터에서도 버벅대는 작업량이다.

3.

그래서 본인, 이 기회에 멀티코어 프로그래밍을 실습해 봤다.
i5 쿼드코어답게 CreateThread 함수로 스레드를 4개 만들어서 뺑뺑이를 돌리는 분량을 인위로 분할한 뒤, 계산 결과를 취합했다. 그랬더니...

809615629/973620600 0.831551 (7753)
809615629/973620600 0.831551 (3448)

코어 하나밖에 못 쓰고 고로 CPU를 최대 25%만 쓰던 싱글스레드 오리지널 코드는 7.8초가 걸린 반면,
스레드를 여러 개 만드는 코드는 CPU를 95% 가까이 점유하면서 제 속도를 내더니, 싱글스레드의 절반이 채 안 되는 3.5초 남짓한 시간 만에 처리를 다 끝내는 걸 알 수 있었다. 실제로 서로 소인 조합이 전체의 83.1%가량을 차지하는 것도 사실이었다.

요즘 세상에 CPU를 70% 이상 한꺼번에 점유하는 프로그램을 내 손으로 직접 만들 일은 없었는데 참 오랜만에 보는 광경이었다. 요즘은 단일 프로그램이 CPU 성능을 제대로 활용하려면 이런 식의 테크닉을 동원해야 한다는 걸 더욱 절실히 느끼게 됐다.

Posted by 사무엘

2012/06/07 08:21 2012/06/07 08:21
, ,
Response
No Trackback , 9 Comments
RSS :
http://moogi.new21.org/tc/rss/response/692

삼각함수와 회전 변환

사용자 삽입 이미지
요 그림이 고등학교 수학 II에서 배우는 진정한 묘미 중 하나입니다.

(0, 0), (x, 0), (0, y)의 직각삼각형을 원점을 축으로 θ만큼 돌리니까 원점은 그대로고 밑변은 (x cosθ, x sinθ)가 됩니다.
그런데 밑변보다 y만치 위로 떠 있던 점은, 회전 과정에서 가로로는 높이 y의 sin값만치 “감소”(왼쪽으로)하고, 세로로는 cos값만치 증가합니다.

그러니 (x cosθ - y sinθ, x sinθ + y cosθ)의 형태가 되는데, 이는 원래 점인 x, y에 대한 일차변환으로 일반화할 수 있습니다. 결국

(cosθ, -sinθ)
(sinθ,  cosθ)


가 됩니다. “꼬마신 신꼬”라고 외우는 그 유명한 회전변환 행렬입니다.
이걸 모르면 특히 컴퓨터그래픽에서 현란한 벡터 조작이나 3차원 그래픽 같은 건 상상도 할 수 없습니다.

이 행렬식의 값은 1 (임의의 각도의 cos 제곱과 sin 제곱의 합은?), 따라서 이렇게 도형을 일차변환 시키더라도 원래 도형의 넓이를 바꾸지 않는다는 걸 알 수 있습니다. 역행렬은 sin 쪽 부호만 맞바꾸면 됩니다. 기하학적으로, 상식적으로, 역행렬 공식에 맞춰 생각해도 전부 명확합니다.

공통수학에서는 삼각함수란 게 있다는 것, 그리고 한 삼각형의 세 변과 세 각이 주어졌을 때 삼각함수가 이런 특성을 갖는다는 것을 배웁니다. 기하학인지 대수학인지 감을 못 잡는 이 괴상한 함수는 흥미보다는 학생들에게 어마어마한 암기를 강요하면서 악몽 같은 기억으로 남아 있을 것 같습니다.

그러다가 수학 II로 오면서 단순히 삼각형과 관련된 것이 아닌 삼각함수 자체의 특성을 더 깊게 공부하게 됩니다. 이 회전행렬은 삼각함수의 덧셈 정리를 유도시킵니다.
특히, 저 행렬에다가 회전 행렬과 같은 각인 (cosθ, sinθ) 열벡터를 뒤에 곱해 주면 cosθ와 sinθ 값으로부터 cos 2θ, sin 2θ의 값을 얻을 수 있게 되고, 그 값으로는 아예 cos²θ, sin²θ의 값도 구할 수 있게 됩니다.

  cos 2θ = cos²θ - sin²θ,  cos²θ = (cos 2θ + 1)/2
  sin 2θ = 2 cosθ sinθ

공을 공중을 향해 몇 도로 던져야 가장 멀리 날아가는지를 삼각함수를 계수로 하는 이차방정식으로 풀어 보면, 결국 cosθ sinθ 값(곱)을 최대로 하는 θ 값을 구하는 문제로 귀착됩니다. 이는 sin 2θ의 값을 최대화하는 것과 같으므로 θ는 45도임이 명확해집니다.

sin과는 달리 cos은 양 함수의 제곱의 합으로 바뀐다는 점도 흥미롭습니다. 2θ보다 더 일반적인 α와 β의 경우를 생각해 보면 더욱 흥미로운 결과가 나오는데요, 덧셈 대신 두 각의 차이를 나타내는 뺄셈만을 예로 들어 보겠습니다.

  cos(α-β) = cosα cosβ + sinα sinβ
  sin(α-β) = sinα cosβ - cosα sinβ

cos을 보면 이는 정확하게 벡터 내적과 관련이 있음을 알 수 있습니다. x, y 성분인 벡터를 거리와 각도로 바꿔서 표현해 보면, Ax·Bx + Ay·By가 왜 |A||B| cosθ인지가 명확해집니다. 공통수학 때 배운 코사인 제 2법칙과도 이미 관련이 있고요.
cos은 90도일 때 0이 되기 때문에 두 벡터가 기하학적으로 직각인지 판단할 때 유용히 쓰일 수 있습니다. 부호가 갈리는 기점이 직각이죠. 시계에서 3시를 향하고 있는 벡터가 있다면, 5시나 1시를 향하는 벡터와는 양수이고, 7시나 11시 벡터와는 음수가 되는 셈입니다.

그럼 sin은 무슨 관련이 있는 걸까요? sin은 90도가 아닌 0도를 기점으로 부호가 바뀝니다. 3시를 향하는 벡터 기준으로 5시나 7시를 향하는 벡터의 부호가 서로 같고, 1시, 11시 벡터와는 서로 다릅니다.
정보 올림피아드 대비하여 기하 알고리즘 공부할 때, 특히 convex hull 같은 거 구할 때 단골로 등장하는 게 세 점이 시계 방향인지 반시계 방향인지 판단하는 공식인데요, 그게 바로 sin과 관련이 있습니다. Bx·Ay - By·Ax입니다. 이 식은 두 벡터가 일직선상에 있을 때 값이 0이 됩니다.

그러나 cos 계열인 벡터의 내적은 sin과는 달리 3차원 이상에서도 일관되게 구하는 공식이 있고 임의의 차원에서도 의미를 갖는다는 점에서 더욱 의미 깊다고 할 수 있습니다. 시계 방향 여부는 2차원 평면에서만 의미를 가지며, sin과 관련이 있는 벡터의 외적 역시 3차원 공간에서만 정의됩니다.

이렇게 한바탕 수학 II 초· 중반에서 홍역을 치른 삼각함수는 나중에 아예 sin(x)/x의 0 극한을 구하고 삼각함수를 미· 적분함으로써 더욱 해석학적으로 접근하게 됩니다. 고등학교 수학 교육 테크트리에서 맨 마지막으로 지어지는 최고급 건물 내지 유닛은 단연 미적분이라 할 수 있습니다.

Posted by 사무엘

2011/11/02 19:31 2011/11/02 19:31
, , , , ,
Response
No Trackback , 15 Comments
RSS :
http://moogi.new21.org/tc/rss/response/592

다음은 고등학교 수준에서 다뤄졌을 법한 전형적인 확률· 조합 문제이다.

N명의 사람이 각자 모자를 쓰고 왔는데 이 모자를 다 벗어서 모아놓았다. 잠시 뒤 이 모자를 무작위로 사람들이 찾아 쓸 때, 모든 사람이 한 명도 예외 없이 남의 모자를 쓰게 될 확률은?


수가 커질수록 소수를 발견하기 어려워지는 것만큼이나 저 확률은 0으로 수렴이라도 하는 걸까? 답부터 말하자면 그렇지 않다. N이 커질수록 그 확률은 1/e 에 수렴한다.
즉, 대략 37% 정도 된다는 뜻이고 이는 3지선다 문제를 깬또-_-로 맞힐 확률과 고만고만함을 의미한다. (깬또는 도대체 어느 나라 어원의 말일까? 순우리말이라면 흠좀무) 하필 자연대수와 관계가 있는 확률로 수렴한다는 것도 흥미로운 점.

신기하지 않은가? 이 정도면 여러분이 감으로 예상한 확률보다 높은 걸까 낮은 걸까? 수학이 좋은 점은, 인간의 감만으로는 아리까리한 문제에 대해서 명확하게 이렇게 될 수밖에 없다는 답을 제시한다는 것이다. 영적인 안목만 없을 뿐이지 추상적인 세계에서는 성경만큼이나 100% 절대무오한 진리를 담고 있는 학문이 바로 수학이다.

N개의 모자를 늘어놓을 수 있는 모든 가짓수는 잘 알다시피 N! (팩토리얼)이다.
N=2인 경우라면 1 2가 2 1로 뒤바뀌는 경우밖에 없으므로 1/2 = 50%
N=3이면 6가지 조합 중에 2 3 1, 3 1 2가 존재하므로 2/6 ≒ 33.3%
N=4는 잘 세어 보면 9가지 경우가 존재하여 9/24 = 37.5%
N=5일 때는 44가지 경우가 있다. 44/120 ≒ 36.7%
그리고 쭉쭉쭉...;;

그런데 이 가짓수에서 재미있는 패턴이 발견된다.
가짓수를 나타내는 함수를 f(x)라고 정의하면, 일단 f(x)의 값은 x-1의 배수임이 반드시 보장된다.
f(5)는 4의 배수인 11, f(4)는 3의 배수인 9인 식이다.
실제로 가짓수를 세어 보면, 왜 그렇게 되는지 알 수 있다.

이 f(x)를 구하는 방법은 점화식으로 의외로 간단하게 유도된다.
패턴을 잘 관찰해 보면 f(1)=0, f(2)=1 이후로 f(x) = (x-1)*(f(x-1)+f(x-2))가 된다.

f(4) = 3*(1+2) = 9
f(5) = 4*(2+9) = 44
f(6) = 5*(9+44) = 265

숫자의 증가의 폭이 팩토리얼과 동급으로 폭발적인 건 마찬가지이기 때문에, 그 비율의 극한이 0이나 무한대가 아니라 상수로 나온다.
f(x) = f(x-1)+f(x-2)인 피보나치 수열 점화식에다가 (x-1)을 곱한 것밖에 없으나, 점화식의 특성상 그 여파는 쌓이고 쌓이면서 훨씬 더 커진다. 피보나치 수열의 일반항은 2^n 같은 지수함수급인 반면 저건 팩토리얼급..;; 팩토리얼 자체가 f(x) = x*f(x-1)로, 점화식에 덧셈도 모자라서 곱셈이 등장하니까 말이다.

본인은 1/e라고 하면 x^x 함수를 최소로 만드는 값이기도 하다는 것을 예전부터 알고 있었다.
x^x는 a^x 같은 지수함수는 말할 것도 없고 심지어 팩토리얼보다도 더욱 폭발적으로 증가하는 괴랄한 함수이다.
이 함수는 양변에 로그를 씌워서 미분하는데, 도함수는 x^x * (ln x + 1)이 된다.

양수 x에 대해서 x^x 자체는 0이 결코 될 수가 없다(x가 0에 가까워져도 함수값은 1에 수렴). 하지만 x에다 1/e를 집어넣으면 ln x + 1이  ln 1 - ln e + 1 = 0-1+1 = 0이 된다. 고로 도함수의 값은 0. 이때가 최소이며, 그 최소값은 e^(-1/e)에 해당하는 약 0.69 정도.
e 자체뿐만이 아니라 e의 역수도 이런 의미를 지닌다는 걸 알 수 있다. 아래 그림을 참고하라.

사용자 삽입 이미지

대표적인 공돌이 유머인 미분 귀신 적분 귀신에 잘 묘사되어 있듯, 다항함수는 유한 번 미분하면 0이 되어 버린다. 그러나 초월함수들은 미분을 거듭해도 전혀 줄어들지 않으며 오히려 쓸데없는 계수들이 덧붙거나(지수함수), 형태만 바꾸면서 뱅글뱅글 순환한다(삼각함수).

그런데 그 정점에 있는 것이 바로 e^x이다. 미분해도 적분해도 형태가 전혀 변하지 않는다. ^^;;;
이 녀석은 테일러 급수로 다항식 전개를 해 보면.. 진짜 그렇게 될 수밖에 없는 형태임을 알 수 있다.
테일러 급수 자체가, 특정 지점에서 주어진 함수와 함수값과 n차까지 도함수가 일치하는 다항함수를 구하는 것이니 원..

1 + x + x^2/2 + x^3/6 + x^4/4! + x^5/5! ....

이게 끝없이 반복되니까 미분하면 왼쪽으로 shift, 적분하면 오른쪽으로 shift.. -_-;;
x에다가 1을 집어넣으면 결국 자연대수 e는 1부터 시작해 팩토리얼들의 역수의 합으로 2.71828...로 시작하는 그 값이 자연스럽게 유도된다. 수학에서 원주율 다음으로 유명하고 중요한 상수이다.
2.718281828 ..1828이 잠시 반복되는 덕분에 파이보다 외우기 쉽다.

우리는 학교 수학 시간에 자연상수에 대해서 (1+ 1/n)^n의 n 무한대 극한값이라고 처음으로 배운다. 이게 e로 수렴한다는 것도 무척 재미있는 사실이긴 하나, 저 식은 수렴 속도가 매우 느려서 비실용적이다. n=1000이 돼도 아직 2.716이고 2.718에도 도달 안 해 있다.
그 반면 팩토리얼 역수의 합은 직관적이고 수렴 속도도 꽤 빠른 편이어서 좋다. 6!까지 갈 때 이미 2.718에 도달하고 9!에서 벌써 소숫점 여섯째 자리까지 일치하기 시작한다. 굿..;;

범위가 0부터 1까지인 n차원 공간상의 점 P(a1, a2, a3, ... a_n)이 있을 때, 0<a1<a2<a3<...<a_n을 만족하는 영역이 차지하는 부피(?) 내지 product는 어떻게 될까? 1/n!이다. 2차원일 때는 한 변의 길이가 1인 삼각형의 넓이가 되므로 1/2, 3차원일 때는 삼각뿔의 부피가 되므로 거기에다가 1/3을 또 곱하면 1/6이 되고, 차원이 그보다 올라가도 적분을 거듭하면 그런 식으로 값이 더욱 작아진다는 걸 알 수 있다.

미분이나 적분을 하면 항의 차수가 1 늘거나 감소하는 대신에 원래 갖고 있던 계수가 곱해지거나 나눠지는 만큼, 이 과정을 일반화하면 팩토리얼 연산도 태생적으로 연관이 되지 않을 수 없게 되는 것 같다. 팩토리얼은 확률· 조합 같은 이산수학 영역뿐만이 아니라 해석학에서도 중요한 의미를 지니는 연산인 셈이다.
아울러, -1승이라 할 수 있는 1/x만 적분하면 ln x라는 완전히 다른 함수가 된다는 것도 아주 흥미로운 점이 아닐 수 없다.

Posted by 사무엘

2011/01/06 12:23 2011/01/06 12:23
, ,
Response
No Trackback , 10 Comments
RSS :
http://moogi.new21.org/tc/rss/response/445

수학, 그리고 수학의 정석

최 불암이 학교에서 <수학의 정석> 책을 주워 왔다.
그는 책을 주인에게 찾아 주려고 교내에서 방송을 했다. "수학의 정석 책을 어디어디에서 습득하였으니 잃어버리신 분은 와서 찾아가시기 바랍니다." (설정상 최 불암은 교사였던 듯)
그런데 하루를 기다렸는데도 찾아가는 사람이 없었다. 그는 다시 방송을 했다. "책에 이름이 적혀 있습니다. 주인이 누군지 아니 빨리 찾아가세요."
그래도 찾아가는 사람이 없어서 최 불암은 그 이튿날, 마이크를 대고 냅다 소리를 질렀다.
"야, 홍 성대! 너 책 빨리 안 찾아갈 거야?"

.
.

본인은 고등학교에 진학해서 <수학의 정석> 실물을 접하기 전에, 초딩 시절 이 개그를 통해서 그 이름도 유명한 홍 성대 씨에 대해서 존함을 듣게 됐다. 삼류만화 패밀리에서는 그가 정석교 교주로 묘사된 바 있다. "싸인과 코싸인과 탄젠트의 이름으로 비나이다. 로~그~"

사용자 삽입 이미지

이... 인수분해..!!
대충 저런 만화 되시겠다. ㄲㄲ 출처는 작도닷넷의 삼류만화 아카이브.

홍 씨는 서울대 수학과 재학 시절이던 무려 1960년대 중반에 <수학의 정석>을 집필하여, 본인의 지금 나이 때 이미 백만장자가 되었다. 수학 과외를 뛰다가 자기가 직접 책을 지어 보면 어떨까 하는 생각을 하게 됐다고 한다.

서울대 수학과라는 것만으로도 비상한 머리의 소유자인 데다, 그 나이에 벌써 떼돈까지 벌었으니 공부 더 계속할 필요가 없었으리라. ㅜ.ㅜ 30도 안 된 나이에 수학 교재를 집필할 생각을 했던 것에 대해, 그때 자기는 정말 여간 똘끼가 충만한 상태가 아니었던 것 같다고 그는 그 당시를 회상한다고 한다.

<수학의 정석>은 최소한 우리나라에서는 성경 다음으로 많이 팔린 책이 돼 있다.
워낙 크게 성공한지라 이분은 1981년에 전주에 상산 고등학교를 설립하고, 나중엔 모교인 서울대에다가도 건물까지 한 채 지어 기증했다. 정석의 힘.. ㄷㄷㄷ;;

슬하에 딸이 있다. 따님은 서울대 수학과 박사를 마친 후 고등 과학원 연구원을 거쳐 서울대 수학과 교수가 되었다. =_=;; 물론 부친이 누군지 모르는 상태에서 채용된 거라는 게 서울대 측의 설명이다.
서울대 수학과 박사 -> 고등 과학원 -> 교수 하니까 생각나는데, 이건 퍼즐 관련 저술과 온라인 활동으로 우리에게 친숙한 경남대 박 부성 교수도 동일하게 거친 진로이다. 가히 브레인들..;;

아울러, 따님의 사위는 서울대 수학과 석사 출신이니, 이 정도면 그야말로 뼛속까지 수학 덕후 가문. 저런 분들에 비하면, 코레일 기관사 철덕 커플은 아주 평범한 정상인이고 양반일 것이다..
수학자라고 해서 설마 진짜로 "탄젠트의 이름으로 비나이다 로그"라고 기도를 할-_- 리는 없겠지만, 그들이 어떤 점에서 덕후인지에 대해서는 아래의 유명한 조크에 단적으로 설명되어 있다.

천문학자와 물리학자, 그리고 수학자가 스코틀랜드에서 휴가를 보내고 있었다.
그들이 기차를 타고 여행을 하던 중 들판에서 풀을 뜯고 있는 검은 양 한 마리를 보았다. 그러자 천문학자가 말했다.
"그것 참 신기하군.  스코틀랜드 양들은 죄다 검은색이잖아?"
물리학자가 천문학자의 말을 반박했다.
"그게 아니야.  스코틀랜드산 양들 중에서 일부만이 검은색이라 해야지."
이들의 말이 한심하다는 듯, 수학자는 하늘을 잠시 쳐다본 뒤 조용히 입을 열었다.

"자네들은 너무 성급한 판단을 내린 거야. 스코틀랜드에는 적어도 몸의 한쪽 면 이상의 면적에 검은 털이 나 있는 양이 적어도 한 마리 이상 방목되고 있는 들판이 적어도 하나 이상 존재한다고 해야 말이 되는 거라구!"


그만큼 수학을 하는 사람들은 뭐든지 정확하게 있는 그대로만 표현하는 엄밀한 용어를 쓰는 걸 좋아한다는 뜻이다. 사고 체계가 그런 쪽으로 철저히 단련되어 있기 때문에, 모든 진술을 명제라는 형태로 받아들이고 for all, given, such that, at least 같은 표현과, lemma, definition, theorem 같은 용어를 좋아한다. 저건 굳이 수학 전공이 아니더라도, 이공계 출신이기만 해도 충분히 수긍이 갈 것이다. 미분 귀신, 적분 귀신 개그류와 더불어..;; ㄲㄲㄲ
설마 홍 성대 씨가 자녀 가정 교육도 저런 식으로 시켰을까?? ^^;;

영어는 교육 과정이 유행을 많이 탄다. 단적인 예로 성문 종합 영어는 오늘날에 옛날 정도의 인지도를 유지하지 못한다. 그러나 수학은 정말 왕도가 없고 절대불변 보편적인 진리를 다룬다. 성경과 비교했을 때, 수학은 선악이라든가 영적인 가치가 없는 진리라는 게 다를 뿐이다. 그래서 정석이 40년 전이나 지금이나 사랑받는 게 아닐까 한다. 수학에는 다른 과목들이 넘볼 수 없는 '포스'가 있다.

그래서일까? 각종 매체에서 학교의 수학 선생은 인간미가 없고 뭔가 정상이 아닌 무지막지한 이미지-_-로 묘사되어 있다.
한 10년 전 PC통신 시절에 히트 쳤던 박 상욱 씨의 <구타교실>1)이라는 소설을 보면, 인간 백정 구타 기계인 똥행패 선생은 체육 선생이 아니며 하다못해 과학 선생도 아니다. 수학 선생으로 설정되어 있다. 아래의 그림은 이 소설을 만화화한 <구타닷컴>2)의 표지.

사용자 삽입 이미지

똥행패가 어떤 인간인가? 빠따를 때리며 손에 전해져 오는 감촉만으로도 바지 원단의 재질은 물론 엉덩이의 두께까지 파악해 내는 구타 컴퓨터가 아닌가. ㄲㄲㄲㄲ (소설 중에서)


영화 <말죽거리 잔혹사>에서도 주인공의 담임 선생이 왜 수학 선생으로 설정되었겠는지 잘 생각해 보기 바란다.

수학과는 달리, 삐딱 나간 제자를 교화하고 헌신과 사랑으로 아이들을 가르치는 선생은 내가 아는 한 언제나 음악 선생이다. 도덕 선생도 아님. 영화 <사운드 오브 뮤직>, <코러스>, <홀랜드 오퍼스>가 좋은 예이며, <구타교실>에서도 그나마 정상인인 여선생은 음악 선생으로 나온다. ^^;; 이렇듯 각 과목에는 인간이 보편적으로 느끼는 색깔이 존재한다는 결론이 도출된다.

요즘 교사 임용 시험 경쟁률이 살인적이라는 건 주지의 사실이다. 영어는 워낙 잘 하는 인간들이 너무 많으며, 암기 위주인 과목들도 다들 달달 외우면서 피튀기게 경쟁하다 보니.. 특히  TO가 적은 마이너 과목들은 실수로 한두 개 틀리면 바로 떨어지고, 실력이 아니라 국가 유공자 가산점 빨로 당락이 결정될 정도라고 한다. 직업으로 치면 마치 식당이나 택시 기사처럼, 진입 장벽도 낮고 망하기도 쉬운 그런 직종 같다.

그러나 수학은? TO가 많으나 과목 자체가 워낙 어렵고 진입 장벽이 높기 때문에, 까놓고 말하자면 100점 만점에 6, 70점만 넘어도 안정된 합격권이라고 들었다. 정말로 실력으로 진검 승부가 가능한 순수 머리 싸움 과목이다. 그런데 국제 수학 올림피아드 입상자라고 해도 우리나라 고등학교 수학 미적분을 술술 풀어내는 건 아니니, 이것도 흥미로운 면모가 아닐 수 없다. 당연히 둘은 서로 다루는 분야가 완전히 다르기 때문이다. 정올 경시와 공모가 다른 것만큼이나 서로 다를 것이다.

지금 정석 책 다시 꺼내서 공부하라고 하면 절대 못 할 것 같다. 홍 성대 같은 분 완전 부럽.. ㅜㅜ 하지만 매체에서 수학과는 정반대의 이미지로 묘사되어 있는 음악도, 근간을 이루는 이론을 파고들어 보면 수학적으로 굉장히 재미있는 요소가 많다는 게 역설이라 하겠다. Looking for you 분석하면서 이런 거 많이 생각해 봤는데... 먼 미래에 기회가 되면 글로 또 다루도록 하겠다. ㅋㅋㅋ

Notes:
1) 본인의 고등학교 시절에 재미를 북돋웠던 PC 통신 소설이 둘 있는데 하나는 앞서 언급한 <구타교실>이고 또 하나는 <환상의 테란>. 후자의 경우는 스타 1.08 패치가 나오면서 일종의 현실화까지 되었다. 그런데, 프로게이머 중에 변 형태라는 선수가 등장할 줄이야! (똥행패의 본명)

2) 교실이 닷컴으로 바뀐 특별한 이유는 없다. 그냥 그 당시가 한창 닷컴 기업 vs 굴뚝 기업 운운하면서 개나 소나 닷컴 붙이는 게 유행이던 시절이어서... ㅋㅋ

Posted by 사무엘

2010/12/03 08:52 2010/12/03 08:52
, , , , ,
Response
No Trackback , 18 Comments
RSS :
http://moogi.new21.org/tc/rss/response/423

2차 곡선(원뿔 곡선) 이야기

수학에서 함수라는 것은 y=f(x)와 같은 형태로, x에다가 임의의 수를 대입하면 그에 대응하는 y 값이 계산을 통해 딱 하나로 산출되어 나오는 관계를 말한다.

하지만 f(x, y)=0라고 함수를 정의할 수도 있다.
이 식을 만족하는 x, y가 곧 정의역과 치역임이 규정된다.
이런 형태의 함수를 수학 용어로는 음함수(implicit function)라고 일컫는다.
딱 명시적인 함수 형태는 아니지만 함수를 암시적으로 규정하고 있다는 뜻인데, ‘음’이라고 하면 negative가 먼저 떠올라서 한국어로는 뜻이 잘 와 닿지 않는 것 같다.

음함수가 표현력이 더욱 풍부하다. 그도 그럴 것이 y=sqrt(1-x^2)라고만 하면 사분원반원 하나밖에 표현을 못 하지만, x^2+y^2=1이라고 하면 원 전체를 표현할 수 있기 때문이다.
그리고 컴퓨터 상으로 음함수를 처리하는 것도 더욱 까다롭다. x뿐만 아니라 x와 y를 2차원적으로 모두 고려해야 하기 때문이다. 2차원만으로 모자라서 z축도 동원하여 3차원까지 가면 흠..;;;

고등학교 시절에는 이런 음함수 중에서 x, y의 계수가 최대 2차까지 갈 수 있는 녀석을 배운다. 일반화하면 아래와 같은 꼴.

a*x^2+ b*x*y+ c*y^2+ d*x+ e*y+ f = 0

2차식인 a, b, c중 적어도 하나가 0이 아니라면 이 음함수는 아래의 형태 중 하나가 된다.

1. x, y가 실수 범위에서 전혀 존재하지 않기 때문에 빈 그래프. (x^2+y^2=-1 같은 경우)
2. 두 직선 (x^2-y^2=0 같은 경우. 또한, xy=0 이라고 하면 x축과 y축^^)
3. 타원 (x^2+y^2=1)
4. 쌍곡선 (x^2-y^2=1)

원이나 포물선은 굉장한 레어 케이스에서나 존재 가능하다.
또한, a, b, c 계수의 관계에 따라 곡선의 모양이 어떻게 될지 알려주는 판별식도 있다.

2차 곡선인 이들 원, 타원, 포물선, 그리고 쌍곡선은 모습도 인간 세계에서 수학적인 의미를 두기에 충분한 가치를 지니고 있다. 모래시계처럼 ▶◀ 형태로 놓인 원뿔의 단면을 잘랐을 때 나오는 곡선이라고 해서 원뿔곡선(conic section)이라고도 불린다. 신기한 일이 아닐 수 없다.

사용자 삽입 이미지

짤방은.. 초점이 동일한 어느 타원과 쌍곡선의 모습을 자작 프로그램으로 그린 것. 나름 안티 앨리어싱까지 되어 보기에 더욱 아름답다. ㅋ

타원은 “한 초점에서의 거리 + 다른 초점에서의 거리”가 일정한 점들의 집합이다. 두 초점에다가 실을 묶고 팽팽하게 연필을 그으면 비교적 쉽게 그릴 수 있다.
원은 두 초점의 위치가 일치하는 특수한 경우라 하겠다. 타원 모양으로 된 당구대 안에서 그 타원의 한 초점에서 공을 굴리면, 그 공은 다른 초점을 반드시 지나게 될 것이다.

쌍곡선은 “한 초점에서의 거리 - 다른 초점에서의 거리”의 절대값(=차이)이 일정한 점들의 집합이다. 절대값이다 보니 필연적으로 곡선이 둘 존재한다. 초등학교 시절에 배웠던 y=1/x 반비례 그래프가 알고 보니 이 쌍곡선이었다는 사실을 알게 된다.

포물선이야 중학교 시절에 제곱근과 2차식이라는 개념 자체를 처음으로 접할 때 배운다. 그런데 포물선은 단순한 2차식을 넘어서 “한 초점과 한 기준선이 주어졌을 때 초점에서의 거리와 준선까지의 수직 최단 거리가 일치하는 점들의 집합”으로 다른 관점에서 정의가 이루어진다. 사실, 타원과 쌍곡선도 한쪽 초점이 한없이 멀어지면 포물선 모양으로 수렴하게 된다.

포물선은 중력이 존재하는 지구상에서 물건을 던지기만 해도 매우 쉽게 볼 수 있다(단, 공기 저항이 없어야). 포물면은 반사하는 모든 빛을 초점으로 한데 모을 수 있다. 다만, 만들기가 구면보다는 어렵다.

2차 곡선은 이렇듯 세상에서 쉽게 볼 수 있고 실용적이다. 거리와의 제곱에 비례해서 감소하는 만유인력과도 관계가 있다. 제곱의 의미는 2차원, 즉 면적이다.
인공위성은 흔히 지구를 향해 한없이 추락하는 물체라고들 한다. 공중에서 충분한 추진력으로 위성을 가속하지 못하면 그 발사체는 지구로 떨어져 버린다. 그러나 속력이 어느 정도 빨라진 순간부터는 이제 지구로 떨어지지 않고 원 궤도를 그리게 된다.

더 빨라지면 위태위태 타원 궤도를 그리게 되고, 어느 정도 도를 넘어서면 포물선, 그 이후부터는 쌍곡선 궤도를 그리면서 그 발사체는 지구로 다시는 돌아오지 않게 된다. 옛날에 이런 거 시뮬레이션 프로그램을 장난감 삼아 짜면서 놀았던 기억이 있다. ^^;;

그 반면에 음함수의 식이 3차까지 가면, 모양만 변태적으로 복잡하지 쓸모가 없다. 변수의 값이 어떻냐에 따라서 쌍곡선 같은 그런 곡선이 3쌍둥이가 생기기도 하고, -⌒- 이런 모양이나 아니면, 그런 모양에 U자 모양 곡선이 합쳐진 놈 등... 자연에서 볼 일도 없고 의미가 없다는 것이다.

앞서 음함수를 처리하는 건 쉬운 일이 아니라고 언급했는데, 실제로 그렇다.
정확하게 일치하지는 않겠지만 윤곽선 폰트를 래스터라이즈하는 일과 비슷한 과정이 아닐까 하는 생각이 든다.
무식하게 x*y개의 함수값을 일일이 다 구해 보지 않고도 함수값을 구성하는 영역만 매끄러운 경계선을 추출하고 거기에다 안티 앨리어싱까지 하는 건 보통 어려운 일이 아니다.

아래아한글이나 포스트스크립트 같은 다른 폰트 시스템은 잘 모르겠지만, 윈도우 운영체제가 사용하는 트루타입 폰트 래스터라이저는 매 도트에 대해서 윤곽선 안에 있는지의 여부를 판단해서 글자를 찍어 낸다. 그래서 힌팅 정보가 없으면 작은 글씨에서 가는 획이 아예 화면에서 사라지는 일이 생길 수 있다.

본인은 옛날에 너무나 깔끔하게 잘 출력되는 영문 폰트들을 보고서 트루타입 폰트 래스터라이저가 굉장히 똑똑한 줄 알았는데, 알고 보니 다 아주 정교한 수작업으로 만들어진 힌팅 정보 덕분이었다. 힌팅은 획의 굵기를 일관성 있게 보정할 뿐만 아니라 윤곽점을 래스터라이저가 글립 존재 여부를 판단할 때 사용하는 위치로 강제로 옮겨서 획이 사라지지 않게 하는 역할도 한다.
흠, 글 주제가 수학에서 폰트 얘기로 급반전.. 어쨌든 음함수의 렌더링도 그만치 쉬운 일은 아니라는 뜻이다. ^^;;

Posted by 사무엘

2010/10/01 20:23 2010/10/01 20:23
, , , , , , ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/383

지구를 두르고 있는 띠 문제

아는 분들은 이미 다 알 만도 한 문제이지만...;;

우리가 사는 지구가 편의상 반지름이 대략 6400km 정도 되는 완전한 구라고 가정하자. 그리고, 이 지구의 적도 부분을 띠로 둘러서 꽉 조인 매듭을 만들었다고 치자. 그러면 이 띠의 길이는 원의 둘레에 해당하므로, 반지름에다 2π를 곱한 약 4만 km 정도의 길이가 될 것이다.

그런데 원둘레에 딱 맞던 이 띠의 길이를, 사람 키보다 약간 큰 정도인 2m만치 더 늘렸다. 다시 말하자면 4만 km에 달하는 띠의 길이를 겨우 2m 더 늘린 것이다. 띠는 이제 원둘레보다 눈꼽만치 더 길어졌고 헐렁해졌다. 그래서 띠를 지표면으로부터 모든 구간을 균일하게 띄워서 다시 빳빳하게 만들었다. 그렇다면 이 띠는 지표면으로부터 얼마나 떠 있을까? 띠가 더 길어진 게 티가 나긴 할까?

이 문제의 답을 감으로 당장 떠올린 것과,
연필을 들고 수학 공식을 세워서 푼 것과는 어떤 차이가 있는지 생각해 보자.

.
.
.

잘 알다시피, 띠를 겨우 2m 확장했을 뿐이지만 그 넓은 지구의 지표면으로부터 띠는 무려(?) 30cm가량은 지표면으로부터 균일하게 떠 있게 된다.
그리고 이 30cm라는 수치는 행성의 반지름과는 전혀 관계없다. 지구가 아니라 목성의 적도를 두르고 있는 띠라 하더라도, 띠를 2m 확장했다면 띠의 반지름은 지표면으로부터 무조건 30cm씩 더 올라가게 된다. 그러므로 지구의 반지름이 6400km이고 띠의 길이가 4만 km라는 사실에 주의를 환기시킨 것은 훼이크요 낚시 교란 작전일 뿐이었다.

지표면에서 30cm 뜬 것 자체도 반지름이 이미 수천 km에 달하는 지구의 관점에서 보면 새 발의 피, 손톱의 때도 안 되는 보잘것없는 변화량이다. 그러나 우주의 관점에서 본 변화와 지표면에서 본 상대적인 변화의 폭은 서로 다르게 느껴질 수밖에 없으며, 인간의 직관은 그런 것을 혼동하기 쉽다. 이 문제는, 마치 인간의 눈이 착시 현상을 일으키는 것만큼이나 인간의 생각 역시 편견과 실수에 빠지기 쉬움을 보이는 좋은 예라는 생각이 든다. 그런 인간 두뇌의 한계를 보완하고자 수학이라는 사고 체계가 발달한 것이다.

Posted by 사무엘

2010/07/17 17:13 2010/07/17 17:13
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/323

원에 대한 적분 외

원이란 2차원 공간상의 한 점에서 거리가 같은 점들의 집합으로 정의된다. 공간이 3차원으로 확장되면 구도 이와 같은 맥락으로 정의 가능하다.
이 정의에 따라, 먼저, 0..r 범위에서 반지름이 r인 사분원을 나타내는 방정식

  f(x) = sqrt(r^2 - x^2)

를 정의하자.
이 사분원의 호의 길이는 거리의 적분에 따라

  int(  sqrt( f'(x)^2 + 1 ) , x=0..r)

(f'(x)는 f(x)의 도함수. int는 짐작하듯이 0부터 r까지 x에 대한 정적분을 나타냄)
을 풀면 PI*r/2 가 된다. 사분원의 길이이므로 여기에다 4를 곱하면
반지름이 r인 원의 길이는 2*PI*r이 나온다.
위의 적분식에서 1은 당연한 말이지만 적분변수가 약분되어 1이 된 것이며, 그걸 역시 제곱한 값이기도 하다. 괜히 더해진 게 아니다. ^^;;

넓이는 그냥 f(x)를 적분하면 바로 구해진다.

  int( f(x), x=0..r)

의 값은 PI*r^2 /4 가 되고, 역시 4를 곱하면 반지름이 r인 원의 넓이는 PI*r^2이 된다. 적분을 실제로 풀기 위해서는 치환 적분 기법이 필요하다.

이제 3차원 세계로 가서 구의 부피를 구하면 어떨까?
반구의 단면은 역시 0부터 r까지 반지름 자체가 원의 방정식과 같은 무수한 원으로 이루어져 있으며 이것들을 적분하면 부피를 구할 수 있다. 어렵지 않다. 즉, 원의 넓이 PI*r^2에서 r 대신에 f(x)를 넣으면 된다는 소리.

  int( f(x)*f(x)*PI, x=0..r)

의 값은 2/3 * PI * r^3이 된다. 반구의 부피이므로 이것에다 2를 곱하면 4/3 * PI * r^3이 바로 반지름이 r인 구의 부피이다.

마지막으로 구의 겉넓이를 구해 보자.
여기서 사람들이 제일 많이 틀리는 게 뭐냐 하면, 넓이를 그대로 적분하면 부피가 되었듯이 원호 길이를 그대로 적분하면 겉넓이가 될 거라는 생각이다. 그런데 그렇게 하면 적분을 해석적으로 풀든, 심지어 100개 1000개로 구간을 아무리 많이 나눠서 컴퓨터로 계산을 해 봐도 정확한 값이 나오지 않는다! 실제값보다 더 작은 값이 나온다.

원의 넓이나 구의 부피처럼 각 구간에서의 함수값만이 중요하다면 구간 수를 무수히 늘림으로써 정확한 값으로 수렴이 가능하겠지만, 구의 겉넓이는 앞서 다뤘던 '길이'를 구하는 것과 일면 비슷한 개념이다. 내 자신의 값뿐만 아니라 인접한 구간과의 기울기라는 개념이 감안되어야만 정확한 적분값이 나온다.
그래서 2*PI*r뿐만 아니라 원호를 구할 때 쓰던 식이 첨가되어야 한다.

  int( 2*PI * f(x)* sqrt( f'(x)^2 + 1 ), x=0..r)

이 적분식의 값은 2*PI*r^2이 나오며, 역시 2를 곱하면 반지름이 r인 구의 겉넓이는 4*PI*r^2임을 알 수 있다.

덧붙이는 말

1. 1부터 100까지 일일이 덧셈을 할 필요가 없이 등차수열의 합을 구하는 식에 대입만 하면 100이 아니라 1000, 10000까지의 합도 손쉽게 구할 수 있듯.. 우리가 알고 있는 리만 적분도 굉장히 대단한 지식이다. 수천, 수만 개의 구간을 나눠서 일일이 함수값을 구하며 뺑이를 칠 필요 없이, 함수식의 부정적분을 구한 후 하한값과 상한값의 차이만 구하면 된다니, 놀랍지 않은가? 게다가 여기에다 부분 적분과 치환 적분의 위력까지 더해지면 초월 함수를 다루기도 더욱 수월해진다.

2. 사실 미분과 적분은 서로 다른 별개의 분야에서 출발했다. 접선 기울기하고 면적/부피는 언뜻 보기에 분야가 다른 것 같은데, 함수의 부정적분이 도함수의 역함수와 같다는 것이 증명되면서 미적분학이라는 한 학문이 태동한 것이다. 옛날엔 '극한이라는 걸 수학적으로 엄밀하게 정의하는 게 가능하나?' '이건 너무 사악한 사고방식이 아닌가?' 이런 걸 갖고 고민하던 시절이 있었다. 그저 기계적인 계산 테크닉(로피탈의 정리 같은. -_-)만 달달 외워서 점수 따기에는 이 분야는 너무나 깊이 생각하고 느껴야 할 게 많다. 본인 역시 학창 시절엔 그런 걸 별로 경험하지 못했다. 세상에 이런 개념을 처음 만든 사람은 무슨 생각으로 이런 걸 만들어냈을지를 곱씹어 보자.

3. 리만 제타 함수라는 게 있다. ζ(n)은 1/1^n + 1/2^n + 1/3^n ..... 의 극한이다. n=1인 경우에 속하는 조화 수열은 0에 수렴하지만, 그 합은 로그 스케일로 매우 느리게 발산-_-하긴 한다. (일반적으로 미분과 적분을 거치면 x의 지수가 1 늘어나거나 줄게 마련인데, 지수가 -1에 속하는 1/x은 부정적분이 예외적으로 생뚱맞은 ln x로.. =_=) 하긴, 숫자가 커질수록 소수의 개수도 로그 스케일급으로 발견되며 매우 드물어진다. 소수의 개수 역시 무한하다는 뜻이기도 하다. 숫자가 커질수록 졸라 찾기 힘들어지겠지만 말이다. -_-;;

이런 함수가 왜 근사한 이름까지 붙어 있는가 하면, n이 2 이상의 짝수일 때 ζ(n)의 값은 PI의 n승의 유리수배의 형태로 산출되기 때문이며, 더구나 이 함수는 소수의 분포와도 관계가 있기 때문이다. 이 엄청난 발견을 해 낸 사람은 불세출의 천재 수학자인 오일러이다. 특히 삼각함수의 테일러 전개와 방정식의 근의 관계를 이용하여, ζ(2) = PI^2 / 6 임을 최초로 알아내기도 했다. 따라서 그 수는 초월수라는 것 역시 덩달아 증명된 셈.

나는 증명을 뻔히 보고도 뭔 말인지 못 따라가겠던데, 사실 저것도 수학에서 가장 아름다운 방정식이라는 e^(PI*I) + 1 = 0만큼이나 그의 위대한 업적이 아닌가 생각한다. 파이, 삼각 함수, 루트, 해석학, 기하학, 복소수 등등등... 다 위로 올라가면 서로 구분이 없이 여기저기서 다 만난다는 뜻이다. 심하게 경이로운 사실이다!

Posted by 사무엘

2010/04/15 20:07 2010/04/15 20:07
, , ,
Response
No Trackback , 8 Comments
RSS :
http://moogi.new21.org/tc/rss/response/246

« Previous : 1 : 2 : 3 : 4 : 5 : Next »

블로그 이미지

그런즉 이제 애호박, 단호박, 늙은호박 이 셋은 항상 있으나, 그 중에 제일은 늙은호박이니라.

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2024/04   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        

Site Stats

Total hits:
2676836
Today:
1404
Yesterday:
2124