'초등함수'에 속하는 '초월함수'들 중에 지수함수인 e^x는 미분을 하던 적분을 하던.. 도함수나 부정적분이 전부 자기 자신과 동일한 굉장히 특이한 기본 함수이다.
지수는 저렇고, 삼각함수/쌍곡선함수는 그냥 답정너 정의에 가깝게 미분-적분 순환고리를 그냥 외운다.
그럼 e^x의 역함수인 ln x는 부정적분이 과연 어찌 될까?

ln x는 도함수가 1/x라는 간단한 형태로 정의되는 덕분에, '부분적분'으로 부정적분을 구하는 아주 교과서적인 예로 다뤄진다.
부분적분은 곱의 미분법으로부터 유도되어 두 함수 F, G의 곱에 대해

F(x)G(x) = ∫ F'(x)G(x) dx + ∫ F(x)G'(x) dx

가 된다는 원리이다. 보통은 저것보다는 순서를 바꿔서

∫ F'(x)G(x) dx = F(x)G(x) - ∫ F(x)G'(x) dx

요런 형태로 더 소개되는 편이다.
ln x의 경우, 위의 부분적분에서 F는 그냥 x로, G는 ln x를 집어넣으면 바로 풀린다. 그러면 F'(x)는 1이라는 상수가 되고 G'(x)는 1/x가 되므로

∫ ln x dx = x*ln x - ∫ x/x dx = x*ln x - x = x(ln x - 1)

이렇게 답이 구해진다. x*(ln x)' 가 x/x로 바뀌어서 1로 상쇄되는 것이 백미이다.;;

사용자 삽입 이미지

그럼 ln x의 0..1 정적분의 값은 얼마일까? 다시 말해 위의 그래프에서 선이 y축의 0 아래로 뚝 떨어지는 구간의 면적은 얼마일까?
저 역도함수에다가 0과 1을 대입해서 차를 구하면 -1임을 알 수 있다. 그러나 더 직관적으로 아는 방법도 있다.
저 구간은 ln x의 역함수인 exp(x)에서 x의 음수 구간 면적과 동일하기 때문이다.

사용자 삽입 이미지

그러니 exp(x)를 0부터 -∞까지 적분해 봐도 동일한 값을 더 쉽게 구할 수 있다. exp는 그냥 자기 함수에다 값을 대입하는 것만으로 적분값을 구할 수 있으니 말이다.

그리고 더 흥미로운 사실이 있다.
ln x의 부정적분인 x(ln x - 1)의 의미는 바로..
저 X축의 x, 그리고 Y축의 ln x라는 직사각형에서.. 맞은편의 역함수 exp(ln x) 구간의 면적을 뺀 나머지 면적이라는 것이다. -x의 의미는 바로 -exp(ln x)라는 것..!!

부분적분에서 곱을 구성하는 두 함수 중의 하나가 그냥 x 자체인 덕분에, 기하학적으로 이런 의미까지 지니게 된 셈이다.
앞서 부분적분 식에서는 x가 x*(1/x)를 적분해서 얻어졌었는데.. 여기서는 exp와 ln이 상쇄되어 얻어졌다는 게 흥미롭다.

이런 부분적분은 삼각함수 등 다른 초월함수들의 '역함수'의 부정적분을 구할 때도 요긴하게 쓰인다.
부분적분의 특성상 원함수의 도함수도 알아야 하는데, 그건 역함수의 미분법을 동원해서 구하면 된다.

다음으로, ln x를 넘어서 (ln x)^2의 정적분을 구하려면?
부분적분 패턴에서 F'(x)와 G(x)를 모두 ln x로 잡으면 된다. 그러면 F(x)는 x*(ln x -1)에 대응하고, 최종적으로는 아래와 같은 복잡한 식이 도출된다.

사용자 삽입 이미지

이를 일반화해서 (ln x)^n의 부정적분은

x*(ln x)^n - a*x*(ln x)^(n-1) + b*x*(ln x)^(n-2) ... +- z*x*(ln x) +- z*x + C (적분상수)

이런 꼴이 된다. 모든 항에 x는 기본으로 붙어 있고 그 다음에 (ln x)의 n승에 대한 항이 형성되어 항의 수는 총 n+1개..
부호는 -와 +가 번갈아가며 바뀐다.
맨 앞의 제일 고차항인 (ln x)^n의 계수는 언제나 1이지만, 그 다음 항인 a...z로 갈수록 n과 n-1, n-2... 가 차례로 곱해져서 n=2일 때는 2 2.. n=3일 때는 3 6 6, n=4일 때는 4 12 24 24... 이렇게 계수가 정해진다.

그러므로 0에서 1까지의 정적분 값은 n의 홀짝 여부에 따라 부호가 교대로 바뀌는(홀-음수, 짝-양수) n!이 된다.
원함수에다가 미리 -를 씌운 (-ln x)^n라고 해 주면 0..1 정적분은 간단하게 n!로 떨어진다. n이 홀수승일 때는 (ln x)^3의 값이 음수이던 것이 - 부호를 만나서 양수로 바뀌고, 짝수승일 때는 거듭제곱이 음수를 양수로 바꾸기 때문에 팩토리얼이 언제나 양수로 나오는 것이 보장된다.

로그의 거듭제곱의 적분이 팩토리얼과 관련이 있다니.. 신기한 노릇이다. 이 덕분에 지수뿐만 아니라 팩토리얼조차도 정의역이 단순히 자연수에 국한되지 않고, 지수함수와 적분와 동급인 실수 영역에 연속적인 형태로 정의될 수 있게 됐다.

(-ln x)^n의 0..1 정적분은 치환적분 기법을 동원해서 다음과 같은 형태로 바꿀 수 있다.

사용자 삽입 이미지

뭐.. 로그를 쓰면 구간이 0~1인데, 지수를 쓰면 구간이 0~무한대로 바뀐다는 차이가 있다. ㄲㄲㄲ
요 함수가 일명 '감마'(Γ) 함수라고 불린다. 단, 감마 함수는 모종의 이유로 인해 팩토리얼과 완전히 같지는 않아서 Γ(n+1)의 값이 n!에 대응한다.

x^x은 0일 때와 1일 때의 함수값이 동일하고, 그 사이엔 함수값이 살짝 작아졌다가 1 이후부터 폭발적으로 커진다.
감마 함수도 양의 실수 구간에서는 이와 비슷한 성질이 있어서 1과 2일 때의 함수값이 동일하다. 그 사이에는 함수값이 약간 작아졌다가 2 이후부터 폭발적으로 커진다.

단, x^x는 미분을 통해 그 최소값을 해석적으로 정확히 구할 수 있는 반면, 감마 함수는 대략 x≒1.46163에서의 최소값 0.88560...을 수치해석으로 구할 뿐이다. 이 수의 정확한 특성은 알려져 있지 않은 것 같다.
그런데.. 감마 함수는 소수점이 .5 인 수.. 다시 말해 자연수에다가 1/2이 첨가된 수에 대해서는 π(원주율)의 제곱근의 배수인 그 무언가를 되돌린다. 이런 것도 여느 지수함수나 그쪽 바리에이션에서는 발견할 수 없는 면모이다.

특히 Γ(1/2)의 값은 딱 정확하게 sqrt(pi)인데, 이것은 정규분포 함수의 원형인 e^(-x^2)의 전구간 적분 면적과 동일한 값이다.
1/2일 때 감마 함수 적분식은 적분변수 x를 sqrt(t)로 치환하면 딱 정확하게 e^(-x^2)의 전구간 적분과 동일한 식이 나오기 때문이다. ㅎㄷㄷㄷ..

물론 e^(-x^2)은 부정적분이 초등함수의 형태로 표현되지 않는 괴상한 물건이며, 가우스 적분이라는 완전히 새로운 방법론을 동원해야 전체 면적만을 구할 수 있다. 이 과정이 뱅그르르 회전과 관계가 있기 때문에 갑자기 원주율이 튀어나오는 것이다. 하지만 이건 이 글의 범위를 한참 넘어서기 때문에 더 자세한 얘기를 생략하겠다.

다시 본론으로 돌아오면.. 로그의 n승을 정적분 했더니 n팩토리얼이 튀어나왔다. 반대로 팩토리얼 값에 로그를 씌운 것도 로그와 관련이 있다. log N!은 수가 증가하는 정도가 N log N과 얼추 비슷하다.
왜 그런가 하면 N!은 1*2*3...*N이니 log N!은 log 1+log 2+log 3+ ...log N과 같기 때문이다. 그리고 이건 log N에 대한 적분에다 근사시킬 수 있으며, 그 부정적분에는 N log N이 포함되어 있다.

컴퓨터 알고리즘 중에서 정렬이라는 건 n개의 원소들을 나열하는 순열 최대 n!개의 가짓수 중에서 오름차순/내림차순 순서를 만족하는 것을 찾아내는 과정이다. 그런데 비교 연산을 한 번 할 때마다 그 가짓수를 이분 검색 하듯이 최대 절반으로 줄일 수 있다.

그러니 가짓수도 팩토리얼로 폭발적이고, 매 단계마다 가짓수를 줄이는 규모도 지수로 폭발적인데.. 결국 비교 연산을 수행하는 정렬 알고리즘의 이론적인 시간 복잡도는 팩토리얼의 로그급인 n log n으로 귀착되는 것이다.

팩토리얼 내지 팩토리얼의 로그를 근사하는 공식을 더 엄밀하게 파고들면 n log n에다가 다른 자잘한 항들도 여럿 붙는다. 이런 건 감마 함수를 변형해서 만들어지는데, '스털링의 근사 공식'이라고 한다.
애초에 x^n * e^(-x)도 e^(n ln x - x)로 바뀌니, n log n이라는 결론이 달라지지는 않는다.

이상이다. 로그에 이렇게 심오한 의미가 많이 담겨 있는 줄 몰랐다.;; 얘기가 꼬리에 꼬리를 물고 이어지는데, 로그의 밑 얘기만 하고 글을 맺도록 하겠다.

이공계에서 쓰이는 로그의 밑은 사실상 딱 세 종류.. 2, e, 아니면 10이라고 보면 되겠다.
2는 컴퓨터과학 전산학에서 특별히 아주 좋아하는 숫자이고, e는 지금까지 봐 왔듯이 천상 수학 미적분 해석학 전용이다. 10은 10진법과 관계가 있다 보니 데시벨이나 pH (산/염기 지수) 같은 로그 기반의 현실 과학 단위에서 쓰인다. 단, 복소해석학으로 가서 로그를 복소수 범위로 확장하면.. 0과 1만 빼고 -1이나 i조차 로그의 밑이 될 수 있으니 참 ㅎㄷㄷ하다.

현실에서 엄청 큰 측정값을 표기할 일이 있으면, 어지간해서는 메가· 기가· 테라· 페타 같은 접두사를 동원해서 자릿수를 줄이는 걸로 퉁칠 것이다. 아예 로그를 동원해서 자릿수를 후려친다는 건 정말 그 분야에서 얻을 수 있는 측정값의 스케일이 0의 개수 자릿수 차원에서 극단적으로 널뛰기 한다는 걸 뜻한다.

원래는 log 다음에 아래첨자로 밑을 일일이 써 주는 게 정석이다. 그러나 쓰이는 밑이 분야별로 저렇게 뻔히 답정너이니.. 그런 번거로운 표기는 잘 쓰이지 않는다. 밑이 e인 로그는 자연로그라고 해서 그냥 ln이라고 쓰는 정도?
밑을 생략한 log 표기는 밑이 무엇이건 중요하지 않고, 수가 증가하는 게 log 스케일이라는 것만이 중요할 때 쓰인다. 앞서 언급했던 시간 복잡도 표기처럼 말이다.

Posted by 사무엘

2022/10/01 08:35 2022/10/01 08:35
, , , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/2073

다차원 적분

※ 이 글의 내용은 예전에 썼던 <확률과 조합에서 발견한 자연대수 e>와 <원에 대한 적분 외>의 연장선상에 있다.

1차원 선에서 0부터 1까지의 선분의 길이는 두 말할 나위 없이 1이다.
2차원 공간에서 원점, (1,0), (0,1)을 지나는 이등변삼각형의 넓이는 1의 절반인 1/2이다.
이를 더 확장해서 3차원 공간에서 원점과 (1,0,0), (0,1,0), (0,0,1)을 꼭지점으로 갖는 사면체의 부피는 1/6이다.
이를 일반화해서 n차원 적분을 생각해 보면, 차원이 하나 올라갈 때마다 n차원 축을 한 칸씩만 점유하는 초입방체의 부피는 1/(n!)로 팩토리얼의 역수가 되고,  전체 초면체와의 비는 기하급수적으로 감소한다는 걸 알 수 있다. x^n의 부정적분은 (x^(n+1)) / (n+1) + C이다.

한편, 한 변의 길이가 2인 정사각형의 넓이는 4이고, 그 안에 들어가는 반지름이 1인 원의 넓이는 잘 알다시피 pi이다. 원과 사각형의 넓의 비는 pi/4, 즉 78.5% 정도 된다.
이를 공간으로 확장하면 한 변의 길이가 2인 정육면체의 부피는 8이고, 그 안에 들어가는 반지름이 1인 구의 부피는 4*pi/3이다. 구와 정육면체의 부피 비율은 pi/6 (약 52.3%)으로, 넓이일 때보다 비율이 더 작아진다. 이 비율 역시 차원이 증가할수록 더욱 작아진다는 것은 두 말할 나위가 없을 것이다.

그럼 혹시 4차원, 5차원, n차원 초구의 부피를 구할 수도 있지 않을까? 몰론 있다.
원의 방정식의 핵심이라 할 수 있는 f(x) = sqrt( r^2 - x^2 ) 라는 함수를 먼저 정의하자. 얘는 x가 0에서 r로 갈 때 임의의 구간에서 원의 높이를 나타내는, 즉 '둥긂'을 수학적으로 기술하는 함수이니까 말이다.

반지름이 r인 원의 넓이는 잘 알다시피 int( 2*f(x), x=-r..r) 로 나타내어지며 pi*r^2이라는 유명한 공식이 나온다.

그럼 반지름이 r인 구의 부피는 pi*r^2에서 r 대신 f(x)를 다시 집어넣어서 적분을 하면 된다.
int(pi*f(x)^2, x=-r..r) 가 (4/3)*pi*r^3이 된다.

4차원부터도 동일한 방식으로 적분을 계속하면 된다. 수많은 구들이 4차원에 있는 원 표면의 높이 변화량만치 연속적으로 쌓여 있는 것이므로.. 저 r 대신에 또 f(x)를 집어넣으면
int(4*pi*f(x)^3/3, x=-r..r) 은 드디어 파이까지도 제곱이 되어 4차원 초구의 부피는 (1/2)* pi^2 * r^4가 나온다. 한 변의 길이가 2인 4차원 초정육면체와의 부피 비율은 약 30.8%대로 곤두박질친다.

5차원 초구는? int( pi^2 * f(x)^4 / 2, x=-r..r)의 결과는 (8/15) * pi^2 * r^5 (약 16.4%)
6차원 초구는 pi^3 * r^6 / 6 (약 8%)가 된다. 사면체의 부피만큼이나 이것도 비율이 갈수록 곤두박질친다.
요렇게 비율이 한데 수렴하고 특히 짝수차일 때와 홀수차일 때 번갈아가며 무슨 특성이 발견되는 건 리만 제타 함수의 값하고도 비슷해 보인다. 게다가 리만 제타 함수도 n이 짝수일 때는 나름 pi^n의 유리수배가 되기도 하니, 반지름 길이가 1인 n차원 초구의 부피하고도 비록 수학적 의미는 딴판일지언정 좀 비슷해 보이는 구석이 있다.

수학 전공자 중에는 위의 적분들을 직접 손으로 푸는 용자도 있다. 그나마 짝수 승일 때는 루트가 없어지기 때문에 계산이 더 쉬워지는 편. 난 차마 손으로 풀어 볼 시간이나 자신은 없어서 그냥 수학 패키지를 돌려서 답을 구했다.
딱 보면 알겠지만 식에는 규칙성이 있다. 홀수승일 때와 짝수승일 때를 따로 생각해서 각각 차수가 2씩 증가할 때마다 pi에 붙는 제곱도 1씩 증가하고 계수는 2/n씩 증가한다고 보면 정확하다. 짝수승일 때는 1/2 (4차원), 1/24 (6차원)처럼 상수 계수가 1/n!으로 깔끔하게 증가하는 반면, 홀수승일 때는 계수가 좀 복잡하게 올라간다.

울트라 초천재가 아니고서야 4차원이 넘어가는 초구의 존재를 인간의 머리로 제대로 상상하고 실감하기는 거의 불가능할 것이다. '넘사벽'이라는 말이 괜히 있는 게 아니다~!
눈과 귀로 직감할 수 없는 차원이라는 게 신앙의 영역에 있다면, 이해가 안 되더라도 말 그대로 믿음으로 받아들일 수밖에 없을 것이다. 그러나 수학은 그런 게 아니라 고도의 논리와 이성의 영역에 있다.

아쉬운 대로 고차원 공간을 시뮬레이션 할 수 있는 방법은 프로그램을 작성하는 것이다. 다음 코드는 n차원 공간을 -1부터 1까지 점을 순서대로 마구 찍은 뒤, 원점으로부터 거리가 1 이내인 점의 개수를 세서 부피 비율을 구한다. 깔끔한 재귀호출 대신 사용자 정의 스택으로 구현했다.

double GetVolume(int dim, double delta)
{
    double buf[8], vl; int pos=0, i;
    double initv=-1.0-delta;
    __int64 x=0,y=0; buf[0]=initv;
    while(pos>=0) {
        if(pos==dim) {
            for(vl=0, i=0; i<dim; i++) {
                vl+=buf[i]*buf[i]; if(vl>1.0) break;
            }
            if(i==dim) ++x; ++y; --pos; //1 이내에 들면.
        }
        else {
            buf[pos+1]=initv;
            if( (buf[pos]+=delta) > 1.0) --pos; else pos++;
        }
    }
    return (double)x/y;
}

그래서 이렇게 찍으면 결과는 다음과 같이 나온다.

printf("%f\n", GetVolume(2, 0.01)); //0.785075
printf("%f\n", GetVolume(3, 0.01)); //0.523467
printf("%f\n", GetVolume(4, 0.03)); //0.302340
printf("%f\n", GetVolume(5, 0.05)); //0.164649

처음엔 -1부터 1까지 0.01씩 움직이니까 200등분을 했지만 4차원과 5차원으로 갈수록 66등분, 40등분으로 간격을 늘린 이유는.. 당연히 4승, 5승으로 급격히 증가하는 계산량을 감당할 수 없기 때문이다. 그래서 2차원과 3차원은 값이 상당히 정확히 나온 반면, 4차원과 5차원은 오차가 좀 큰 편이다.
그래도 계산이 워낙 단순무식하고 간단하므로 OpenMP 지시자를 집어넣거나 직접 손으로 코드 차원에서 스레드를 강제 분배하든가 해서 멀티코어+병렬화 최적화로 계산 속도를 몇 배 정도 끌어올릴 여지는 존재한다.

사실은 4차원 이상으로 갈 필요도 없이, 3차원 공간에 구가 여러 개 포개어져 있는 장면을 상상하는 것도 쉽지 않다.
학교 수학 시간에 집합 사이의 bool 관계를 구하는 문제에서 집합의 개수는 3개를 넘어간 적이 없었다. 왜냐하면 2차원 평면에서 집합들의 모든 소속 가짓수를 벤 다이어그램으로 그릴 수 있는 한계가 3개이고 2^3, 총 8가지 가짓수이기 때문이다.

그러나 3차원 공간에서 구를 4개 포개어서 입체 벤 다이어그램을 그리면 16가지 가능성을 모두 표현할 수 있다. 구 3개가 8가지 가짓수를 만들고, 거기에 위에다 4개의 구를 적당히 겹쳐 놓으면 8개에다가 넷째 구와 겹치는 놈 8가지가 또 추가되어서 16개가 되니까 말이다. 이 역시 코드로 작성해서 무식하게 확인하면 다음과 같다.

struct SPHERE { double x,y,z; };
const SPHERE fp[4]={
    {0,0,0},
    {0.4,0,0},
    {0.2,0.4,0},
    {0.2,0.2,1.5}
};
auto Square = [](double x) { return x*x; };
SPHERE d;
bool bitfl[16]={false,};
for(d.x=-1; d.x<=1.5; d.x+=0.02)
    for(d.y=-1; d.y<=1.5; d.y+=0.02)
        for(d.z=-1; d.z<=1.5; d.z+=0.02) {
            int bt=0;
            for(int i=0; i<4; i++)
                if( Square(fp[i].x-d.x)+Square(fp[i].y-d.y)+Square(fp[i].z-d.z) <=1) bt|=(1<<i);
            bitfl[bt] = true;
        }
for each(int n in bitfl)
    printf("%d ", n);

반지름은 모두 1이고, (0,0,0), (0.4,0,0), (0.2,0.4,0), (0.2,0.2,1.5)인 4개의 구를 설정한다. 그리고 -1부터 1.5까지 0.02 간격으로 뺑뺑이를 돌려서.. 각 점별로 자기가 속하는 구의 번호에 해당하는 2진수 비트들(8+4+2+1)의 합을 구한다. 그 뒤 그 합에 해당하는 플래그를 켠다.

나중에 플래그의 값을 출력해 보면 모든 비트들이 1로 바뀌었음을 알 수 있다. 즉, 어느 구에도 속하지 않은 놈, 모든 구에 속한 놈, 1, 3, 4번 구에만 속한 놈, 2, 3번 구에만 속한 놈 등등 16가지 가능성이 실제로 모두 존재한다는 뜻이다. 어찌 보면 당연한 얘기이다. 그 반면 구가 5개를 넘어가면 그 32, 64가지 가능성을 한꺼번에 3차원에서 표현할 수는 없게 된다.

사용자 삽입 이미지

반지름이 수십~수백 정도에 달하는 충분히 큰 구의 복셀의 표면을 보는 느낌은 어떨까 문득 궁금해진다.
수학 패키지 소프트웨어들은 3차원 음함수의 그래프를 아무래도 폴리곤+와이어프레임 형태로 근사해서 보여 줄 것이다. 하지만 곡선/곡면을 폴리곤이 아니라 아예 계단현상을 볼 수 있는 복셀로 근사해서 보면 또 느낌이 굉장히 이색적일 것 같다.

사용자 삽입 이미지

표면에는 역시나 원들 무늬가 그러져 있구나!
앞서 보다시피 5차원~6차원 이상으로 가면 단순무식하게 점을 때려박는 것도 계산이 너무 많아서 도저히 감당할 수 없다.
이럴 때 정확한 초구의 부피를 구할 수 있는 건 역시나 수학 해석적인 방법이라는 것을 알 수 있다.
미분 내지 역함수인 부정적분을 할 때 변수의 차수와 계수가 왜 저렇게 변하는지는 다항함수의 차이 극한값을 구해 보면 알 수 있다. 극한부터 시작해서 미분· 적분이라는 개념을 생각해 낸 건 정말 위대한 발견인 것 같다.

Posted by 사무엘

2015/10/15 08:39 2015/10/15 08:39
, , , ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1149

퇴근길에 문득 든 아주 기초 수학 생각이다.
아래 그림은 포물선 2개 x^2+2*x (x=-2..0), -x^2+2*x (x=0..2)와, sin(x*PI/2) (x=-2..2)를 한데 포개 놓은 것이다.
원래 sin, cos 부류의 삼각함수는 주기가 2*PI인데, 이를 4로 좁혀 놓았다.
이렇게 보니까 포물선도 싸인파 곡선과 형태가 생각보다 꽤 비슷해질 수 있다는 걸 느꼈다.

사용자 삽입 이미지

0부터 2까지 구간의 넓이를 정적분으로 구해 보면 이차함수인 포물선의 면적은 4/3인 반면, 진짜 싸인파의 면적은 4/PI이다. 즉, 포물선에 속하는 면적이 약간 더 크다.

그러나 이 두 곡선은 비슷하게 생겨도 그 본질은 굉장히 다르다. 미분을 해 보면 안다. 이들의 도함수를 그래프로 그리면 다음과 같다.

사용자 삽입 이미지

싸인파는 도함수도 기준 위치와 진폭만 다를 뿐, 여전히 전구간이 미분 가능한 매끄러운 싸인파이다.
그러나 두 포물선을 인위적으로 연결한 함수는 도함수가 직선으로 바뀌었고, x=0 지점은 연속이긴 하지만 기울기의 좌극한과 우극한의 값이 서로 달라서 미분이 불가능한 점이 되었다. 마치 절대값이 들어있는 일차함수처럼 된 셈이다.

이걸 또 미분하면 어떻게 될까?
싸인파는 역시 또 싸인파이지만 저 직선은 아예 양수 아니면 음수의 상수함수로 바뀌고, x=0 지점은 이제 연속이지도 않게 된다. 마치 인간이 만든 아무리 매끄럽고 뾰족한 바늘도 확대하고 또 확대해서 보면 울퉁불퉁한 표면이 드러나듯이 말이다.

우리가 자연에서 흔히 볼 수 있는 물체의 운동 양상은 관성에 의한 등속 직선, 아니면 힘을 한 쪽으로 균일하게 받는 포물선 형태가 있다. 하지만 출렁이는 물결이나 음파 같은 진동은 삼각함수에 속하는 싸인파가 자연스러운 움직임이다. 오히려, 포물선 두 개를 갖다붙인 것에 불과해서 미분하면 딱딱한 절대값 직선으로 바뀌어 버리는 곡선이야말로 인위적이고 부자연스러운 형태인 것이다.

왜 싸인파가 자연스러운 움직임일까?
삼각함수는 무한소나 무한대로 발산하지 않고 주기를 갖고 -1에서 1 사이를 한없이 진동만 한다.
그러면서도 전구간이 단절 없이 연속이고 미분 가능하다. 미분을 해도 심지어 도함수조차 형태를 바꾸면서 주기적으로 자기 자신으로 돌아오기를 반복하기 때문이다.
내가 수학적인 통찰력이 부족해서 그 원리를 다 '이해'와 '실감'은 못 하겠지만, 적어도 이런 함수는 돼야 정말 매끄러움의 본질을 수학적으로 표현한 게 아닌가 하는 막연한 추측까지는 한다.

해석학적으로 볼 때 x^n의 x에 관한 미분은 n*x^(n-1)로 떨어진다. 지수함수 exp는 알다시피 (1/ n!)*x^n의 무한합으로 정의되어, x에 대해 미분하더라도 예전항이 바로 다음항의 미분 결과와 같은 꼴이 되는 형태이다.

그런데, 삼각함수인 sin과 cos는 exp를 홀수승 항과 짝수승 항으로 분할함과 동시에 각 항의 부호를 또 +, -로 교대로 오고 가게 바꾼 형태이다. 그래서 함수가 무한대나 무한소로 발산하지 않고 진동하게 된다. 신기하기 그지없다.

미적분학을 공부하면 삼각함수와 더불어 쌍곡선함수라는 물건도 배우게 된다.
얘는 sin과 cos에다가 h를 붙여서 sinh, cosh처럼 쓰는데, 지수함수를 이루는 무한급수에서 각각 홀수승항과 짝수승항만 쪼개서 취한 함수이다. 삼각함수와의 차이는 부호 스위칭이 없다는 점이 전부다.

그래서 쌍곡선함수는 비록 그래프의 모양은 삼각함수와 완전히 다르지만 삼각함수와 굉장히 비슷한 특성을 갖게 된다. sinh와 cosh는 미분하면 부호 스위칭이 없이 서로 상대편으로만 탈바꿈하며, 삼각함수의 덧셈정리와 비슷한 특성도 가진다. 삼각함수가 cos(x)^2 + sin(x)^2 = 1이듯이 cosh(x)^2 - sinh(x)^2 = 1이다. 전자가 원스럽다면 후자는 정말 쌍곡선스러운 형태이지 않은가?

쌍곡선함수는 사실상 수학 해석학적인 의미 때문에나 배우지, 삼각함수에 비해 실생활에서 유용한 구석은 별로 없는 것 같다. 그러나 얘도 자연에서 의외로 중요한 곳에서 자주 볼 수 있다. cosh가 바로 현수선의 방정식을 나타내는 함수이기 때문이다.

현수선이란 밀도가 균일한 줄이 자기 길이보다 짧은 간격으로 양 끝이 어떤 중력장 안에 매달렸을 때, 자신의 무게로 인해 중력의 방향(아래)으로 축 늘어짐으로써 형성되는 선을 말한다.
이것도 포물선과 비슷해 보여서 혼동되기 쉽지만, 포물선하고는 수학적인 성질이 완전히 다르다. 현수선은 증가의 폭이 이차함수가 아니라 지수함수와 같은 스케일이다.

알고 보면 아치도 포물선이 아니라 현수선을 뒤집은 모양이다. 현수선 모양으로 구조물을 건설하는 게 모양이 역학적으로 가장 안정적으로 형성된다고 한다.
왜 현수선이 cosh 함수의 형태로 형성되는지 수학적으로 증명하려면 물리학, 미적분학 등 여러 방면의 이론이 동원돼야 하지 않을까 싶다.

어찌 보면 당연한 말이지만, 현수선은 일부만 잘라 내도 그 모양이 그대로 유지된다. 다시 말해 U자 모양으로 된 현수선의 양 끝의 일부를 잘라내서 u부분만 잡고 있더라도 기존 부위가 받는 힘은 변함없으며, 그 구간의 선 모양이 바뀌지 않는다는 뜻이다.

삼각함수와 쌍곡선함수가 각자 자기 분야에서 포물선과는 다른 매끄러움, 출렁거림 등을 표현하고 있다는 게 경이롭다.
자연 현상으로부터 얻은 물리량이라는 게 태생적으로 연속적인 데이터의 형태이다 보니, 물리학의 발전을 위해서는 수학, 특히 미적분학의 발전이 반드시 선행되어야 했다는 게 느껴진다.

Posted by 사무엘

2013/10/05 08:27 2013/10/05 08:27
, , , , , ,
Response
No Trackback , 5 Comments
RSS :
http://moogi.new21.org/tc/rss/response/884

원에 대한 적분 외

원이란 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


블로그 이미지

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

- 사무엘

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:
2678062
Today:
146
Yesterday:
2484