1. 오일러 상수: 감마

초등학교 시절에 반비례 함수라고 배웠던 1/x는 조화급수를 나타내며, 궤적은 쌍곡선이고 부정적분은 ln x (+C)가 되는 꽤 독특한 함수이다.
그런데 1/x의 값을 1 간격으로 n까지 구한 조화수열의 합과(즉, 1 간격의 구분구적법), 아예 해당 함수의 정적분(실제 면적)은.. 일단 명목상으로 값이 비슷할 것 같은데 정확하게 얼마나 차이가 날까? n이 무한대로 근접할수록 값이 어떻게 될까?

먼저, 이런 발상이 왜 나왔겠는지부터 생각을 해 보자.
1/x라는 문제의 함수는 x가 무한대로 갈 때 함수값 자체는 0으로 수렴하여 한없이 줄어들지만, 급수의 무한합 내지 정적분은 무한대로 발산한다는 아주 기괴한 특징이 있다. 보통은 다 발산하거나 다 수렴하지, 저렇게 되는 건 몹시 드물다.

1/x 말고 그냥 x라든가 1/x^2 같은 주변의 다른 함수에 대해서  급수의 무한합과 정적분의 차이를 구해 보면 구하는 게 무의미한 trivial한 결론이 나와 버린다. 그냥 무한대로 빠지거나, 아니면 한쪽이 그냥 0이 돼 버려서 차를 구할 필요가 없어지는 식이다.

하지만 1/x는 그렇게 trivial하게 빠지지 않는다. 더구나 무한급수와 정적분의 차이가 “무한대 - 무한대” 꼴의 극한이 되는지라, 극한값이 유한하게 나온다는 게 직관적으로 보장도 되지 않는다. 그러니 이 극한값은 수학적으로 파고들 명분과 의미가 있으며, 옛날 천재 수학자의 관심을 끌게 되었다.

일단 1/x에 대해서 무한합과 정적분의 차이가 특정값으로 수렴한다는 것 자체가 증명되었으며, 그 값은 대략 0.577215… 형태로 빠진다. 이 수는 관례적으로 오일러-마스케로니 상수라고 불린다.

자연상수 e야 미적분과 밀접한 관계가 있으니 중등교육 수준에서도 이과의 최종 테크 한정으로 배운다. 하지만 저 상수는 쓰이는 곳이 너무 난해한지라, 수학과에서 해석학을 전문적으로 배우는 정도가 아니라면 딱히 접할 일이 없다.

더구나 쟤는 특성이 밝혀진 것도 별로 없다. 사칙, 삼각함수, 지수, 로그만으로는 저 수를 나타낼 수 없다. 그러니 정황상 초월수 무리수인 것이 99.999% 확실해 보이긴 하지만.. 수학자들이 수긍할 수 있는 완벽 엄밀한 논리 전개만 동원해서는 초월수는커녕 무리수인지도 정확하게 증명이 못 돼 있다고 한다. 의외의 일이다.

다만, 이 수는 e^(-x) * ln(x)라는.. 비교적 친근한(?) 초등함수 조합을 0부터 무한대까지 이상적분을 해서 얻을 수 있다(음수 버전이 나옴). 친근해 봤자 쟤는 이미 부정적분은 초등함수 형태로 나타낼 수 없는 수준이지만 말이다.

그리고 이 수는 팩토리얼의 대수적 확장 버전인 감마 함수와도 관계가 있다. GAMMA(x)-1/x라는 함수에서 x=0의 극한값이 이 수의 음수 부호 형태이다. 신기하지 않은가? 그래서 이 오일러 상수는 그리스 문자 ‘감마’(γ)를 써서 표기하곤 한다. 상수는 소문자 감마이고 함수는 대문자 감마이다.
이 글의 전체 내용을 수식으로 요약하면 다음과 같다.

사용자 삽입 이미지

2. 오메가 상수와 람베르트 함수

고등학교 수학에서는 지수와 로그를 다루고, 이과 및 자연계에서는 이에 대한 미· 적분까지도 다룬다.
그럼 다음으로 지수함수 e^x에다가 x를 또 곱한 x*e^x라는 함수를 생각해 보자. 취급하기가 약간 더 복잡해졌지만.. 그래도 얘는 부분적분을 통해 부정적분을 온전한 형태로 구할 수는 있다.

그런데 x*e^x = 1 이라는 방정식의 근을 구할 수 있을까? (뭔가 오일러의 항등식과 살짝 비슷하게 생겼는데.. 그냥 기분 탓임..)
양변에 로그를 씌워서 식을 정리하면 x= -ln x까지는 나온다. 하지만 이 이상 식을 정리하는 건 무리이고, 이 시점에서 발상을 전환하여 뭔가 새로운 개념이나 용어를 창조해야 할 것 같다. 그리고 그걸 1700년대에 이미 실제로 한 사람이 있다.

일단 저 식을 실수 범위에서 만족하는 근 x는 대략 0.567143…으로 전개되는 값이다. 앞서 다뤘던 오일러 상수와 얼추 비슷한 크기라는 게 흥미롭다. 물론 특성과 의미는 전혀 다르지만 말이다. 더 나아가 x에 대해 t*e^t = x를 만족하는 t를 되돌리는 함수가 바로 고안자의 이름을 딴 “람베르트 W” 함수이다.

고안자인 요한 하인리히 람베르트는 수학, 물리, 천문학, 철학 등 다방면에서 가히 레오나르도 다 빈치 급으로 불세출의 천재였다고 전해진다. 오일러와도 같은 국적의 동시대 사람이었으나.. 좁은 세상에 태양이 둘일 수는 없어서 그런지 람베르트는 오일러보다야 인지도가 낮다.

오일러 상수에 그리스 문자 ‘감마’가 부여되어 있다면, 앞서 언급한 W(1)에는 관례적으로 그리스 문자 ‘오메가’가 부여되어 있다. 오메가가 w와 비슷하게 생겨서 두 문자가 저렇게 섞여 쓰이는 것 같다.
W(1)은 오일러 상수보다는 분석하기가 아무래도 더 용이한지, 초월수라는 것은 간편하게 증명되어 있다.

하지만 W라는 함수도 기존 초등함수의 형태로 나타낼 수 없으며 절대로 만만한 물건이 아니다. 그럼 정체를 알기 위해 만년 수치해석 근사값에만 의지해야 하느냐 하면.. 그렇지는 않다. 해석학적인 의미를 지닌 형태로 나타낼 수는 있는데, 그게 감마 함수가 들어간 무한급수이다. 이 역시 공대 수준의 숫자 공부만 한 사람이라면 그냥 포기하는 게 속 편할 것 같다..;;

하지만 이런 물건이 왜 존재하느냐 하면.. 그게 존재함으로써 더 복잡한 문제를 풀 수 있고 다른 복잡한 개념을 간결하게 표현할 수 있기 때문이다.
x*a^x뿐만 아니라 아예 x^x=b 같은 방정식의 근도 Lambert 함수 형태로 표현 가능하다.

단적인 예로 x^x = e의 근은.. 저 오메가 상수의 역수.. 1/W(1), 대략 1.763222…이다. e에다가 단순 가공을 한 게 아닌, 뭔가 차원이 다른 수가 튀어나온 셈이다. x^x 정도면 적분도, 방정식 근도 모두 통상적인 방법으로는 못 구하는 난감한 물건이니 말이다.
어쩐지 뭔가 메이플 같은 수학 패키지로 지수함수가 섞인 복잡한 방정식 풀이를 시켜 보면.. LambertW 이러는 식으로 답이 나오곤 하던데 그게 저런 뜻이었다.

Lambert 함수는 양의 실수에서는 ln x보다도 더욱 느리게 증가하는 별볼일 없는 함수이다. 하지만 수학 전공자들은 이런 함수를 실수도 모자라서 복소수 영역에서 갖고 논다. 도함수나 부정적분을 구하면 이 함수 자체가 포함된 더 복잡한 형태가 나오는 게 지수/로그함수 계열과 비슷해 보인다.

얘는 음수 -1/e부터 0 사이에서는 마치 제곱근처럼 값이 2개가 나온다는 특징이 있다.
비록 중등 교육과정에서 가르치지는 않지만.. 해석적으로 분석을 못 하는 것도 아닌데, 관점에 따라서는 얘도 초등함수의 범주에 넣을 수 있어 보인다.

사용자 삽입 이미지

참고로 람베르트 함수 말고 삼각함수 중에도..
우리가 0 극한값을 배울 때 써먹었던 sin(x)/x처럼.. 하필 sin(x), cos(x), sinh(x), cosh(x)를 x로 나눈 물건의 정적분 함수를 따로 Si(x), Ci(x), Shi(x), Chi(x) 요렇게 표기한다. 기존 초등함수들의 조합으로 나타낼 수 없는 새로운 특성을 갖지만 그래도 수학적으로 다른 의미가 있기 때문이다.

저렇게 써 놓으니 무슨 한어병음 표기처럼 보인다만=_=;; 어쨌든 저런 건 초월함수들 중에서 적분함수라고 따로 불린다.

Posted by 사무엘

2020/07/09 08:35 2020/07/09 08:35
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1771

4색 정리, 정사각형 분할 문제

일명 “4색 정리, 4색 문제”는 개념 자체는 마치 페르마의 마지막 정리처럼 초등학생도 이해할 수 있을 정도로 아주 단순하다. 하지만 엄밀한 증명은 20세기의 현대 수학자조차도 감당하지 못할 정도로 난해했던지라, 1976년이 돼서야 컴퓨터의 brute-force 계산 능력의 도움을 받아 간신히 증명됐다.

사용자 삽입 이미지

요즘으로 치면 무슨 머신 러닝을 돌리듯이 당대의 슈퍼컴 두 대를 장정 50일을 돌리면서 가능한 모든 지도 모델에서 증명이 성립함을 확인했다고 한다.
물론 저건 오늘날의 머신 러닝에 비할 바는 못 된다. 내 기억이 맞다면, 1970년대 중반의 크레이 슈퍼컴퓨터는 20여 년 뒤에 등장하여 클럭 속도가 GHz급에 도달한 펜티엄 3~4급 PC와 얼추 비슷한 성능이었다. 요즘 PC라면 GPU 세팅만 잘 하면 하루는커녕 길어야 수십 분~몇 시간이면 시뮬레이션이 끝나지 싶다. 그만치 세상이 많이 변했다.

하지만 1976년은 지금으로부터 무려 45년 가까이 전의 과거이다. 증명할 지도 모델을 설계하고 계산량을 그 시절 컴퓨터로 감당 가능하게 최소화한 것만으로도 독창적인 학술 공로이며, 대학교 수학과 교수 급의 전문가가 아니면 할 수 없는 일이었다.
또한 극도로 비싸고 귀하신 몸이던 슈퍼컴을 당장 실용적으로 필요하던 일기예보나 모의 핵실험, 탄도 예측(?)이 아닌 학술 연구용으로 끌어들여 온 것 역시 해당 연구자의 행정력과 근성과 로비 덕분이었던 셈이다.

한편, 정사각형을 크기가 서로 다른 작은 정사각형들로 분할하는 문제(lowest-order perfect squared squares)도 굉장히 난해하지만 답이 존재는 하는 굉장히 기묘한 문제인데.. 4색 정리와 비슷하다면 비슷한 시기인 1978년에 길이 112짜리 사각형을 21개로 분할하는 해법이 발견됐다. 이 역시 컴퓨터를 동원하여 찾아낸 것이었다.

사용자 삽입 이미지

또한, 저 정사각형들도 최대 4개의 색만으로 서로 경계를 구분하여 칠할 수 있을 테니, 이것도 4색 문제하고 관계가 있다고 볼 수 있겠다. =_=;;
1982년에는 동일 연구자의 후속 연구를 통해 저게 이론적으로 존재 가능한 optimal 내지 lower bound라는 것도 증명됐다. 즉, 20개 이하의 서로 다른 정사각형으로 큰 정사각형을 꽉 채우는 방법은 존재하지 않는다는 것이다.

다만, 가장 작은 정사각형 분할의 하한은 112가 아니라 110이라고 한다. 분할 개수는 21개보다 딱 1개 더 많은 22개이다. 참으로 신기한 노릇이다.

사용자 삽입 이미지

그 전에 컴퓨터의 도움 없이 사람이 찾아낸 가장 단순한 정사각형 분할은 175를 24개로 분할하는 것이었다. (81, 55, 39, …) 1946년에 데오필루스 윌콕스(1912-2014)라는 영국 사람이 발견했다.

사용자 삽입 이미지

정사각형을 서로 다른 정사각형으로 분할하는 방법 자체는 다양한 크기별로 무한히 존재하기라도 하는지? 이게 증명돼 있기라도 한지는 모르겠다. (자명한 닮은꼴은 물론 제외. 작은 정사각형의 크기값들이 모두 서로 소인 것으로 한정)

단지 2차원이 아니라 3차원에서 정육면체를 서로 크기가 다른 정육면체로 꽉 맞게 채운다거나 그 이상의 차원에서 같은 방법으로 hypercube를 채우는 방법은 아예 존재하지 않는다고 한다.
직관적으로 생각해도 명확한 것이... 3차원만 생각해 봐도 그런 정육면체가 있다면 여섯 면이 다 제각기 크기가 서로 다른 정사각형으로 거대한 정사각형을 이룬 모습을 기본적으로 하고 있어야 할 것이다. 하지만 정육면체만으로 그렇게 되는 것은 불가능하기 때문이다.

벡터의 외적이 딱 3차원 벡터에 맞게 존재하는 이항연산이듯이, a^n+b^n=c^n의 정수해가 존재하는 n의 상한이 딱 2인 것처럼.. 정사각형 분할은 딱 2차원 평면에서 존재 가능한 절묘한 문제인 것 같다.

Posted by 사무엘

2020/06/25 19:38 2020/06/25 19:38
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1766

원소가 0 아니면 1 두 종류밖에 없는 N*N 크기의 어느 정사각행렬 M(N)이 있다. N은 2의 거듭제곱 형태로만 가능하며, M(N)의 생성 규칙은 이러하다.

일단, 크기가 1인 M(1)은 그냥 {0} 하나뿐이다.
그 뒤, M(2*n)은 M(n)의 각 원소들에서 0과 1을 뒤바꾼 놈을 M(n)의 왼쪽과 위쪽, 그리고 좌측 상단에 총 3개 카피를 씌우는 형태로 생성된다. 그러므로 M(2)는

(1 1)
(1 0)

이 되며, 다음 M(4)는 쟤를 뒤바꾼 놈을 또 덧붙여서

(0 0 0 0)
(0 1 0 1)
(0 0 1 1)
(0 1 1 0)

이 된다. 생성 규칙이 이런 식이다.
이런 식으로 M(16), 더 나아가 M(256)을 그림으로 나타내면 이런 모양이 된다.

사용자 삽입 이미지

흐음. 무슨 프랙탈 같기도 하고..
이런 행렬은 고안자의 이름을 따서 Walsh 행렬이라고 부른다.
그런데, 모노크롬이나 16색을 어렵지 않게 접할 수 있던 옛날에 이런 무늬를 화면에다 깔아 놓으면 꽤 근사해 보였을 것 같다~!

이걸 갖고 더 재미있는 장난을 칠 수도 있다.
옛날옛적에 학교에서 전자· 컴공을 전공했던 분이라면 혹시 그레이 코드(gray code)라고 기억하는 분 계신가?
통상적인 2진법과 달리, 숫자가 1씩 증가할 때 언제나 1개의 비트만이 바뀌게 숫자를 특이하게 표현하는 방식이다. 즉, 01111이다가 10000으로 바뀌는 식의 격변이 없다는 것이다. 물론 이런 숫자 인코딩을 갖고 진지한 산술 연산을 할 수는 없지만, 다른 용도로 쓸모는 있다고 한다.

사용자 삽입 이미지

0 1 3 2 6 7 5 4 ...
난 저걸 봐도 비트를 flip하는 규칙 자체를 잘 모르겠다. 숫자가 커질수록 긴가민가 헷갈린다. 솔까말 이거 규칙을 찾는 걸로 IQ 테스트 문제를 내도 될 것 같다.
그런데 일반 숫자를 그에 상응하는 그레이 코드로 바꾸는 공식은 어이없을 정도로 간단하다. x^(x>>1), 다시 말해 자신의 절반값과 자신을 xor 하면 된다.

자, 여기서 끝이 아니다.
저 수열에서 각 숫자들을 구성하는 2진법 비트의 배열 순서를 뒤집어 보자. 10진법으로 치면 1024를 4201로 바꾸는 것과 같다.

비트를 shift나 rotate하는 게 아니라 reverse 하는 건 내가 알기로 왕도가 없다. 그냥 for문 돌려서 1비트씩 차근차근 처리하는 수밖에 없다. 마치 주어진 숫자를 2진법으로 표현했을 때 1의 개수를 구하는 것처럼 말이다.
비트 수가 고정돼 있고 속도가 무진장 빨라야 한다면 미리 계산된 테이블을 참조해야 할 것이다.

N=8이라면 비트 자릿수는 3일 테고.. 0 1 3 2는 2진법으로 각각 000, 001, 011, 010일 텐데,
이걸 뒤집으면 차례대로 000, 100, 110, 010.. 즉 0 4 6 2 ... 형태로 바뀐다. 이 정도면 완전 난수표 수준으로 숫자를 뒤섞은 거나 마찬가지로 보인다.

저 수열이 확보됐으면 그걸 토대로 기존 Walsh 행렬을 개조해 보자. 즉, 지금 줄 배열이 0 1 2 3 4..의 순인데, 그걸 0 4 6 2 ... 즉, 둘째 행(1)에다가 다섯째 행(4)을 집어넣고, 다음 행에다가 일곱째 행(6)을 넣는 식으로 순서를 바꾼다. 그러면..

사용자 삽입 이미지

이런 인상적인 모양의 무늬가 만들어진다. 이것도 크기별로 규칙성이 있다. 좌측 상단은 사각형이 큼직하고, 우측 하단으로 갈수록 픽셀이 조밀해진다.
얘는 여러 명칭으로 불리는데, 통상적으로는 Walsh 행렬의 Hadamard 변환이라고 불린다.
실제 저 행렬/테이블을 구하는 건 아무 프로그래밍 언어로나 10분이면 코딩 가능할 것이다. 참고로 비트 reverse 같은 난감한 동작 없이 저 행렬을 얻는 다른 계산법도 존재한다.

이런 무늬 행렬은 전자공학 신호 처리 쪽에서 쓰인다고는 하는데.. 난 그쪽을 전공하지 않아서 잘 모르겠다. 단지 0과 1만 갖고도 인간 두뇌의 잉여력이 얼마나 폭발할 수 있는지에 경이로움을 느낄 따름이다.

수 년 전에 디더링 패턴의 생성 규칙에 대해 글을 쓰고 나서 이런 재귀적인 무늬를 주제를 다룬 건 무척 오랜만이다. xor은 온갖 난수와 암호도 만들어 내는 이산수학과 정보 이론의 진수임이 틀림없어 보인다. 세상에 이런 게 있다는 걸 알게 됐다는 차원에서 간단히 글을 남기게 됐다.

(xor은 x-y 2차원 평면에다가 진리표를 나타냈을 때 0과 1 결과를 직선 하나로 단순 분류할 수 없는 유일한 연산이기도 하다. 일명 XOR 문제..;; 마치 특정 그래프에 대해 한붓그리기가 불가능한 것과 비슷한 인상을 주는데.. 과거에 한때는 퍼셉트론 무용론과 함께 AI 겨울을 야기한 이력이 있다.)

Posted by 사무엘

2020/06/09 08:35 2020/06/09 08:35
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1760

0과 음수에 대한 생각

수학에서 다루는 수 중에는 음수라는 게 있다. 얼마를 빼는 것은 음수를 더하는 것과 동급으로 치자고 발상의 전환을 한 것이다. 그래서 0의 양 옆으로 양수와 음수가 존재하게 됐다.

음수는 덧셈· 뺄셈· 곱셈· 나눗셈이라는 기본 사칙연산 범주에서는 별로 어려울 게 없다. 곱셈과 나눗셈에서는 부호가 마치 xor 연산과 비슷하게 바뀐다는 것만 염두에 두면 된다. (둘 다 동일하면 양수, 다르면 음수) 뭐, 음수라는 개념뿐만 아니라 -1 곱하기 -1이 어째서 +1이 되는지도 마냥 직관적으로 쉽게 이해 가능한 개념은 아닐 수 있는데..

더 나아가 실수 나눗셈 말고 '나머지'를 같이 구하는 정수 나눗셈에서는 피연산자에 음수가 섞여 있으면 연산의 정의부터가 깔끔하게 딱 떨어지지 않고 굉장히 골치 아파진다. 내 기억이 맞다면 나머지의 부호는 나누는 수의 부호와 동일한 것이 원칙일 텐데, 당장 컴퓨터의 정수 나머지 연산은 그렇지 않다. 걔들은 부호 불문하고 몫은 그냥 소숫점을 짤라낸 것이고, 나머지는 그 몫으로부터 파생된 부산물이기 때문이다.

또한 bit shift 연산에서도 음수만치 shift한 결과는 그냥 undefined가 된다. a<<(-b)가 자동으로 a>>b로 되는 게 아닌 게 의외이다.

그럼 음수는 나머지나 비트 shift 같은 정수 컴퓨터 연산에서만 복병인가 하면 그렇지 않다. 일반적인 대수학에서 거듭제곱의 영역으로 가 봐도 음수는 난감한 상황을 만들어 낸다.
가장 먼저, 제곱해서 음수가 되는 수 자체가 통상적인 실수 중에는 존재하지 않는다. 이런 수는 도대체 특성이 어떤 놈일까? 이런 개념을 처음으로 떠올리고 고안한 사람은 도대체 무슨 부귀영화를 바라고 무슨 약을 빨고 이걸 생각해 낸 걸까?

지수함수의 정의역을 실수 전체로, 대수적으로 확장할 때도 음수는 애로사항이 꽃핀다. 당연히.. a^b에서 b 말고 a가 음수인 것 말이다. 음수의 거듭제곱은 횟수에 따라서 부호가 음수와 양수 사이를 널뛰기 하듯 바뀌는데, 그 횟수 자체가 자연수를 넘어 다른 이상한 수가 된다면 결과가 도대체 어떻게 되겠는가?

지수함수를 대수적으로 확장한 결과에 따르면, 음수에 대해 정수가 아닌 거듭제곱을 한 결과는 허수가 섞인 복잡한 복소수가 된다. (-1)^(1/2)는 당연히 그 정의상 i가 되고 말이다.
0과 1은 그 어떤 수로 거듭제곱을 시켜도 다른 정상적인 형태의 수가 나오지 않는다. 그렇기 때문에 이 두 수는 로그 함수의 base가 될 수 없다.

하지만 복소수 범위에서는 0과 1만 빼고 나머지 아무 복소수라도, 음수와 심지어 -1조차도 log의 밑이 될 수 있다. -1을 삐리리 승 하면 100이 될 수 있고 1000이 될 수도 있다는 뜻이다. 단지 그 수가 실수가 아닌 복소수 중에 있을 뿐이다. -1의 거듭제곱은 그냥 -1과 1 사이만 진동할 거라고? 천만의 말씀이다.

다만 정의역을 실수로만 한정하면 x에 대해서 Re((-1)^x)의 그래프.. 쉽게 말해 -1의 x승의 실수부는 cos(Pi*x)의 그래프와 같으며, 허수부를 나타내는 Im((-1)^x)의 그래프는 sin(Pi*x)의 그래프와 완전히 같다! 애초에 x^n=1의 근이 복소평면에서 정다각형의 꼭지점 형태로 나타나니, 거듭제곱과 삼각함수는 피할 수 없는 귀결이라 하겠다.

사용자 삽입 이미지

어째서 그렇게 되는지는 너무 어렵게 생각할  것 없이 그 유명한 오일러의 등식 정도만 따져 봐도 된다. 우리는 고등학교 수준에서는 로그를 그냥 실수 범위까지만 배웠겠지만, 그것이 그림의 전부가 아니다.
또한, 정의역을 실수로만 한정했을 때 이렇다는 것이고, 다른 임의의 복소수를 주면 (-1)^x는 절대값이 1보다 더 큰 다른 수도 얼마든지 나올 수 있다.

a^x를 넘어 아예 x^x의 그래프를 복소수 범위까지 생각해서 그려 보면 더 환상적인 결과를 얻을 수 있다.
얘는 양의 실수 범위에서는 x=1/e일 때 최소값을 갖는다. x=0일 때는.. 0의 0승이기 때문에 값을 구하기가 좀 아햏햏하긴 하지만 극한값이 양쪽 모두 1이기도 하고, 많은 경우에 0^0은 여느 수의 0승과 마찬가지로 1이라고 편의상 통용되곤 한다.

사용자 삽입 이미지

하지만 x가 본격적으로 음수가 되면.. 이제 그래프는 실수 영역에 존재하지 않게 된다. 뭐, 어차피 실수부와 허수부 모두 0으로 급격하게 쪼그라들기 때문에 생각만치 볼 건 없긴 하다만... 그래프의 모양이 꽤 예술적이어 보이지 않는가? =_=;;

수학에는 수에서 특정 부분의 정보를 떼어내고 남은 부분만 되돌리는 연산자 내지 함수가 세 가지 남짓 있다.

(1) 가장 먼저, 수에서 부호를 제거하는 ‘절대값’이 있다. 여닫는 세로줄 기호는 다들 친숙할 것이다. y=|x|는 오르내리는 사선을 만들어 낸다.
얘는 복소수를 대상으로는 복소평면에서 원점으로부터의 거리를 의미하기도 하며, 행렬에서는 행렬식을 의미하기도 한다.

(2) 그리고 수에서 소수점을 떼어내고 근처의 정수를 되돌리는 floor 내지 ceiling 연산이 있다. 얘는 그래프에서 계단을 만들어 낸다.
(3) 끝으로, 복소수에서 실수부 내지 허수부만을 되돌리는 Re() 및 Im()이 있다.

이런 연산들은 다 특정 분야에서 인간에게 필요하고 특정 관점에서 의미가 있기 때문에 고안된 것이겠지만.. 미적분 같은 해석학의 관점에서 자연스럽고 직관적인 연산은 결코 아니다. 절대값 연산은 부호가 바뀌는 지점에서 미분 가능하지 않은 지점을 만들며, 소수점 자르기는 더 나아가 아예 연속이지도 않은 지점을 만든다.

멀쩡한 복소수에서 실수부나 허수부만 떼어내는 것도 저 그래프의 예쁘고 매끄러운 모양과는 달리, 만만찮게 인위적이고 부자연스러운 보정이다. 그렇기 때문에 x^x에서 x가 음수일 때 실수부와 허수부의 그래프 식을 따로 구해서 각각 최대값과 최소값까지 구하는 건 양수일 때와 같은 방법으로 할 수 없다. 복소함수를 취급하는 더 복잡하고 난해한 방법론을 동원해야 한다.

복소수라는 개념을 떠올리고 나니까 어째 리만 가설이라는 것도 나올 수 있고 20세기엔 수렴· 발산 여부로 만델브로트니, 줄리아니 하는 프랙탈 집합까지 발견할 수 있었다. 이런 걸 도대체 어떻게 찾아냈을지 오묘하기 그지없다. 다들 계산량이 엄청나고 빡세다는 공통점도 있다. 하긴, 프랙탈이 '차원'이라는 개념도 대수적으로 확장했다. 행렬 계산의 최적 시간 복잡도에서 거듭제곱 계수가 2도, 3도 아닌 로그함수 값이 된 것처럼 말이다.

이상이다.
리만-제타 함수라든가 감마 함수 같은 난해한 함수들이 양수 구간과 음수 구간이 모양이 심하게 차이가 나고, 특히 음수 구간에서는 상하로 심하게 널뛰기를 하는 근본 이유가.. 지수 함수와 관련된 음수의 기괴한 특성 때문이라고 감을 잡으면 될 듯하다.
x^x 말고 0의 x승의 경우.. 양수에 대해서는 그냥 0이 될 것이고 0^0은 사실상 1이 통용되고 있고, 음수 승은 0으로 나누는 것과 동급인 부정으로 귀착된다.

Posted by 사무엘

2020/01/22 19:34 2020/01/22 19:34
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1708

모양이 그럴싸한 비선형 함수들

1. 증가 양상 변화

코딩을 하다 보면... 0부터 1 사이에 있는 속도, 압력, 밝기 등 자연계의 다양한 아날로그 신호를 입력으로 받았는데 그걸 있는 그대로 곧이곧대로 처리하는 게 아니라, 특정 구간(특히 중앙)이 더 부각되어 인지되도록 비선형적으로 보정해야 할 때가 있다. 그 구간을 if문으로 따로 분리하는 건 좀 무식해 보이니, 가능하면 함수 형태로 스무쓰하게 처리되게 하는 게 좋을 것이다.

이런 처리의 대표적인 예로는 화면의 '감마 보정'(gamma correction)이 있다.
일반 사용자의 입장에서는 이건 막연히 화면의 밝기를 조절하는 기능으로 보인다. 하지만 이건 단순히 모든 색들의 RGB 값을 일괄적으로 올리는 게 아니다. 양 극단의 제일 어둡거나 밝은 색은 그냥 놔 두고, 어중간하게 어두운 색들의 명도를 올려서 화면이 전반적으로 선명하게 보이게 해 준다.

모니터가 브라운관이든 LCD든 오래되면 그렇잖아도 어중간한 색깔을 표현하는 능력이 떨어지니, 감마 보정이 화질의 개선에 도움이 된다.
그리고 애초에 사람의 눈도 밝기를 그렇게 선형적으로 인식하지 않는다고 한다. 흑백 그러데이션을 그냥 선형적인 색 변화로만 늘어놓으면 색깔띠가 밝은 부분보다는 어두운 부분이 더 부각돼 보인다. 이때 적절히 감마 보정을 하면 흑백과 회색 구간이 그럭저럭 균형 잡혀 보이게 된다.

사용자 삽입 이미지

그럼 이 감마 보정은 어떻게 하는 걸까?
정의역 0~1, 치역 0~1, f(0)=0, f(1)=1이고 증가량의 차이만 있을 뿐 단조증가 자체는 보장되는(전구간에서 도함수의 값이 0 이상이 보장) 어떤 함수 f가 필요하다.
이런 조건을 만족하여 감마 보정에 쓰이는 함수는 의외로 단순하다. 그냥 지수함수이다.

사용자 삽입 이미지

0보다 크고 1보다 작은 지수를 설정하면 구간 0~1에 대해서 f(x)는 x보다 값이 커진다. 그래서 원본보다 화면을 더 밝게 만드는 효과를 낸다. x=1에 근접할수록 그 증가폭이 작아질 것이다.

한편, 단순히 f(x) = x^t 말고.. f(x) = (1 - (1-x)^(1/t) )^t 는 어떨까 싶다.
얘는 t가 1/2일 때는 사분원의 궤적을 만들며, 2일 때는 2차 베지어 곡선을 만드니 참 흥미롭다. 그 외의 값일 때도 0 부근에서의 증가치와 1 부근에서의 감소치가 일치하는 나름 대칭형 곡선을 형성한다는 점에서 단순 지수함수와는 차이가 있다.

사용자 삽입 이미지
(빨강-자주...-초록-파랑 순으로 t=0.5, 0.7, 1, 1,5 ,2이다. 이 선들은 자기 자신은 좌우로 대칭이지만 빨간 선과 파란 선이 y=x를 기준으로 마주보며 대칭인 건 아니다.)

얘는 한눈에 봐도 적분하기 어렵게 생겼다. t가 치환적분이 가능한 1/2, 2 등의 알려진 값이 아니라 1/3 정도만 돼도 0부터 1까지의 면적, 다시 말해 정적분의 값은 초등함수의 형태로 표현되지 못한다.

2. 좌우대칭 종 모양

함수 중에는.. 값 자체는 전부 양수이지만 거의 전구간에서 0에 가깝고, f(-x)=f(x)인 우함수이고, 원점 x=0 주변에서만 최대값이 언덕처럼 봉긋 솟아 있는 물건이 있다.
이런 함수의 대표적인 예는 바로.. 확률· 통계의 영원한 친구인 정규 분포 확률 밀도 함수이다.

얘의 본질은 상수의 -x^2승이다. 그냥 지수가 아니라 음의 제곱 지수이다.
이런 함수도 부정적분이 깔끔한 형태로 나오지 않으며, 일부 구간의 정적분을 구하려면 수치해석을 동원해야 한다.
그 대신 얘는 음의 무한대에서 양의 무한대까지 함수 전체를 적분한 면적을 구할 수 있다. 가령, e^(-x^2)의 전체 정적분은 sqrt(Pi), 즉 원주율의 제곱근이다. (약 1.7724..)

전구간의 적분 면적은 옛날에 독일의 그 가우스라는 수학자가 이 종 모양을 입체 공간에서 뺑 돌려서 회전체의 부피를 구하는 식으로 발상을 전환하여 구했다. 일종의 이상 적분 기법인데, 더 이상의 자세한 설명은 생략한다. 고등학교 수준에서는 이 함수의 해석학적 특성을 도저히 따져볼 수 없다.

평균 0, 표준편차 1의 표준 정규 분포의 확률 밀도 함수는 저 함수에서 지수를 -x^2 / 2로 절반으로 나누고, 함수값에다가 1/sqrt(2*Pi)도 곱해서 전구간의 면적이 1이 되게 한 형태이다.

그럼 정규분포 함수보다 해석학적으로 분석하기 더 쉬운(?) 함수 중에는 좌우대칭 종 모양이 없을까?
바로 삼각학수 '탄젠트'의 '변종'에 속하는 놈들의 '도함수'가 이 범주에 든다.

탄젠트의 역함수인 arctan(x)는 도함수가 1/(x^2+1)이라는 꽤 단순한 형태인데, 그래프는 종 모양이다. x=0에서 최대값이 1이고, 전체 면적은 pi이다.
그리고 하이퍼볼릭 탄젠트 tanh(x)는 도함수가 1-tanh(x)^2로 기묘하게 구해지는데, 얘 역시 x=0에서 최대값이 1이면서 전체 면적은 2이다.
숫자 공부를 손 놓은지 10수 년이 지나서 그런지 이런 기본 기초 하나도 갑자기 새삼스럽게 느껴진다.

사용자 삽입 이미지
제일 안의 초록색 선은 exp(-x^2), 빨간 선은 tanh(x)의 도함수, 파란 선은 arctan(x)의 도함수이다.

얘들은 그 정의상 자신의 부정적분이 깔끔하게 존재한다.
부정적분에 속하는 arctan이나 tanh이라는 오리지널 함수를 살펴보면.. 단조증가이면서 f(x)=-f(-x)인 기함수이며, 무한대로 갈수록 특정값에 수렴하고 반대로 무한소로 갈수록 음의 특정값에 수렴하는 걸 알 수 있다. 함수의 기울기는 x=0일 때 가장 크다.

사용자 삽입 이미지

요런 모양의 함수만을 일컫는 용어가 "sigmoid"라고 있다. 선형이 얼추 기울어진 S자 모양이라는 점에서 유래된 명칭이다.
특히 tanh의 경우 sigmoid 함수의 대표격으로 여겨지며, Logistic function이라는 이름으로 배율 변경과 평행이동만 된 바리에이션이 쓰이기도 한다.

맨 먼저 다뤘던 확률 밀도 함수를 0부터 x까지 정적분한 함수는 수학에서 따로 '오차 함수'라고 불리며 중요하게 다뤄진다. 5차가 아니라 error라는 뜻이다. 얘도 물론 sigmoid에 속한다.

그렇잖아도 5차 이상의 방정식은 유한 번의 사칙과 거듭제곱으로 표현할 수 없는 근을 가질 수 있는데, 적분은 마치 그런 것처럼 x^x, sin(x)/x, 1/ln(x)처럼 단순한 식조차도 초등함수의 형태로 표현되지 않는 결과가 나올 수 있고 미분보다 어려운 연산으로 간주되는 걸까? 하긴, 1/x의 부정적분이 갑자기 ln(x)가 나오는 것에서부터 적분의 난해함이 발현되는 것인지도 모르겠다.

아무튼..
직선을 굽게 하는 1번 모양, 종처럼 생긴 2번 모양, 그리고 2번을 적분한 S자 모양까지..
요런 함수가 있다는 걸 알아 두면 코딩 하다가 언젠가 써먹을 날이 올 수도 있을 것이다.

Posted by 사무엘

2019/06/22 08:35 2019/06/22 08:35
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1632

리만-제타 함수와 리만 가설

18세기를 살았던 레온하르트 오일러가 인류 역사상 얼마나 충격과 공포 괴수 급의 천재 수학자였는지는 자연계· 이공계 맛을 조금이라도 본 사람이라면 모를 수가 없을 것이다. 본인 역시 이에 대해서 이 블로그에 글을 쓴 바 있다.

그의 여러 업적 중에서 자연수들의 거듭제곱의 역수의 무한합과 관련된 것들이 특히 주목할 만하다. 이걸 일반화해서 그냥 리만-제타 함수라고 하는데, 가령 2승에 해당하는 ζ(2) = 1/1 + 1/4 + 1/9 + 1/16 ...이런 식이다.
오일러는 천재적인 직관으로 ζ(2) = pi^2 / 6이 된다는 것을 최초로 발견했다. 그는 더 나아가 이런 무한합이 다음과 같이 모든 소수들을 후처리한 값들의 무한곱과 동치라는 것을 증명했으며...

사용자 삽입 이미지
(이런 식으로 3^s, 5^s, 7^s ... 순으로 몽땅 소거하는 것이 포인트)

사용자 삽입 이미지

2 같은 짝수 승일 때는 이 값이 언제나 원주율을 거듭제곱 및 유리수배 한 형태로 나온다는 것까지도 알아냈다.
자연수의 거듭제곱의 역수의 무한합에는 원주율도 들어있고 소수의 분포도 들어있고.. 가히 노다지가 가득했다. 괜히 난해한 문제가 아니었던 것이다.

한편으로 짝수가 아닌 홀수 승일 때는 저 함수값이 정확하게 무슨 의미가 있는 형태로 표현되는지 아직까지 아무도 모른다. 무리수인 것까지는 알려졌지만 초월수인지조차 아직 정확하게 증명되지 못했다. (심증상으로는 어차피 매우 높은 확률로 초월수일 것 같다만..) 지금까지 인류의 지성이 캐낸 것만 해도 노다지 급인데, 이 함수의 정체는 아직까지도 다 밝혀지지 못해 있다. 홀수 완전수도 그렇고 홀수에 뭔가 이상한 특성이 있기라도 한가 보다.

게다가 이것이 이야기의 끝이 아니다.
언뜻 보기에 ζ(x)는 x > 1일 때에만 유의미한 값을 가지며, x가 커질수록 함수값은 1에 한없이 가까워질 것이다. 그리고 x <= 1이면 얄짤없이 무한대로 발산이니 함수에 대해 논하는 것이 아무 의미가 없다.
가령, ζ(1) = 1 + 1/2 + 1/3+ 1/4 ...는 로그 스케일로나마 발산한다는 것이 잘 알려져 있고, ζ(0)이면 1+1+1+1+...이 될 것이다. ζ(-1)은 역수의 역수이니까 1+2+3+4+...가 되니 이 이상 더 따질 필요도 없다.

그럼에도 불구하고 이 함수는 사실 1을 제외한 다른 모든 수에 대해서 함수값이 정의된다. 아니, 실수를 넘어서 복소수에서까지 정의된다. 어찌 된 영문일까? '해석적 연속'(analytic continuation)이라는 개념을 통해서 정의역을 확장할 수 있기 때문이다.

수학이라는 학문은 이런 식으로 사고의 영역을 확장하면서 서로 다른 개념이 한데 연결되고, 추상화의 수준이 상승하고, 거기서 아름다움과 일치, 질서를 발견하는 식으로 발전해 왔다.
고등학교 수준에서 가장 먼저 발상의 전환을 경험하는 건 허수와 복소수이다. "제곱해서 -1이 되는 수라니, 세상에 그런 황당무계한 물건이 어디 있냐? 그걸 도대체 왜 정의하며 그게 무슨 의미가 있냐?"라고 처음엔 누구나 자연스럽게 생각할 수 있다. 아니, 그렇게 고집을 부리는 게 이전까지 수학 공부를 정상적으로 제대로 한 사람의 반응이다.

그런데 그 개념만 하나 도입하고 나니 이제는 뭐 4제곱해서 -1이 되는 수 이런 식으로 이상한 숫자를 또 만들 필요 없이, 복소수 범위에서 i만 동원함으로써 정수 계수 n차 방정식의 근 n개를 언제나 모두 기술할 수 있게 된다. (대수학의 기본 정리) 이게 대단하다는 것이다.
물론, i로도 모자라서 j, k 같은 괴상한 수를 추가한 삼원수 사원수 같은 확장 개념도 있긴 하지만, 그건 벡터· 행렬과 연계해서 다른 특수한 용도 때문에 쓰이는 것일 뿐, 대수 내지 해석학적인 필요 때문에 쓰이는 건 아니다.

다음으로 거듭제곱을 생각해 보자. 이걸 동일한 숫자를 n회 곱하는 식으로만 정의한다면 끽해야 정수 내지 유리수 승밖에 생각할 수 없다. 그러나 거듭제곱의 역함수 격인 로그가 미분 가능한 연속함수이며, 자연상수의 거듭제곱 e^x를 다항식 급수로 풀어 쓸 수도 있다. 더구나 e^(I*x) = cos(x) + I*sin(x)로 자연상수와 I가 복소평면에서 삼각함수와도 만나게 되었으니, 이제 거듭제곱을 정수와 유리수의 영역에만 한정해서 생각할 필요란 전혀 없을 것이다.

이런 식으로 a^x 정도가 아니라 x^x나 x!(팩토리얼)마저도 매끄러운 함수 형태로 그래프로 그릴 수 있다. 특히 팩토리얼의 경우 '감마 함수'라고 별도의 명칭까지 있고 말이다.
또한 x는 실수가 아닌 복소수로 확장해서 2^I, I^I 같은 것도 생각할 수 있다.
고등학교 수학에서는 음수 로그는 생각하지 않고 지냈지만, 복소수 범위에서는 로그 역시 정의역이 복소수로 확장 가능하다. base(밑)도 0이나 1만 아니면 다 된다. 오일러가 정립한 e^(Pi*I)+1=0 이 괜히 위대한 발상이 아닌 것이다.

그럼 리만-제타 함수의 정의역은 어떤 방식으로 확장할 수 있을까?
일단 무한합 함수를 다음과 같은 형태로 바꾸면.. >1에 대해서만 정의되던 기존 함수를 1을 제외한 >0에 대해서도 정의되게 범위를 조금 넓힐 수 있다.

사용자 삽입 이미지

앞에는 뭔가 등비수열의 무한합 같은 계수가 곱해졌고, 뒤에는 1+2+3+4... 덧셈 일색이던 것이 1-2+3-4+... 형태로 바뀌었다. (참고로, s=1일 때.. 1 -1/2 +1/3 - 1/4...는 ln(2)로 수렴하는 것으로 잘 알려져 있음.)
이렇게 식을 써 주면, s>1일 때는 아까와 결과가 동일하면서도 0<s<1일 때는 음의 무한대로 발산하는 형태로 함수값이 추가로 정의되게 된다.

사용자 삽입 이미지

즉, 이 함수는 1에 대해서 좌극한과 우극한의 값이 서로 다르게 된다.
뭔가 (1, 1)이 중심인 반비례 그래프처럼 생겼지만 실제로 그렇지는 않다. 가령, ζ(4/5)는 -4.4375...이지만 -ζ(6/5)-1은 -4.5915...로 값이 서로 미묘하게 다르다.

그럼 0과 음수에 대해서는 어떻게 정의하느냐 하면.. 더 복잡하고 난해한 개념을 동원해야 한다.
구체적인 유도 과정은 본인도 다 모르겠고 시간과 지면이 부족하니 생략하지만.. 리만-제타 함수는 이미 정의된 함수값으로부터 다른 구간의 함수값을 해석적으로 유추할 수 있는 '함수 방정식'이 이렇게 정의되어 있다.

사용자 삽입 이미지

얘를 0과 음수에 대해서도 적용하면 된다는 것이다.
여기서 감마 함수 Γ(x)는 바로 (x-1)!의 해석적 확장 버전이며, 다음과 같이 정의된다.

사용자 삽입 이미지

x^n / e^x를 0부터 무한대까지 적분한 값이 n!이라니, 신기하기 그지없다.
더 신기한 것은, 리만-제타 함수도 기존의 >1 구간에 대해서는 감마 함수와 매우 유사한 형태로 이렇게 정의할 수 있다는 점이다.

사용자 삽입 이미지

저 복잡한 수식들이 논리적으로 서로 다 맞아떨어진다는 사실을 리만이라는 사람이 발견했다. 자연수의 거듭제곱의 역수 무한합이 도대체 몇 가지나 서로 다른 방식으로 표현되나 모르겠다..!
사실, 리만-제타라는 함수 이름도 저 사람이 정의역을 해석적으로 완전하고 깔끔하게 확장된 뒤에 붙은 이름이다. 그 전에 직관적으로 생각하기 쉬운 1보다 큰 실수 버전은 그냥 '제타 함수'였다.

리만-제타 함수는 음의 짝수에 대해서는 모두 0이 나온다. 함수 방정식에서 sin(Pi*x/2) 부분이 -180도의 배수가 걸리고 0이 돼 버리기 때문이다.
그럼 양의 짝수는 괜찮은가 하면.. 괜찮다. 저 함수 방정식에 포함된 감마 함수라는 놈은 음의 정수가 걸리면 무한대로 발산하며(제타 함수에서 원래 양의 정수가 들어왔을 때), 이 경우 함수 방정식의 값은 극한 형태로 구해야 하기 때문이다. 0과 무한대의 곱 형태의 극한은 원래 제타 함수의 값 형태로 나올 수가 있다.

비슷한 맥락에서 ζ(0)의 값을 구할 때도 극한을 동원해야 한다. 함수 방정식에 따르면 ζ(1-0) = ζ(1)을 동원해야 하는데 리만-제타 함수는 원래 1에서 값이 정의되지 않기 때문이다. 상황이 약간 까다롭다.
이런 우여곡절을 거치고 나면 리만-제타 함수의 음수 구간은 값이 상하로 진동하는데, 그 진동의 폭이 0에서 멀어질수록 급격히 커진다. 그래프의 모양이 얼마나 제멋대로인지 -20부터 4까지의 그래프를 그려 보면 다음과 같다.

사용자 삽입 이미지

그럼 리만-제타 함수의 0 이하 음수 구간은 수학적으로 도대체 무슨 의미가 있는가?
이것은 일명 '라마누잔 합'과 직통으로 연결된다. 20세기 초 인도의 천재 수학자 라마누잔의 이름에서 딴 명칭이다.

1+2+3+4... 무한합이 무한대도 아니고 -1/12라는 웃기는 짬뽕 같은 소리를 들어 보신 적 있나 모르겠다. 비슷한 논리로 1+1+1+1...은 -1/2라고 한다.
이건 0으로 나눗셈을 슬쩍 해 놓고는 "모든 수는 0과 같다", "0은 2와 같다" 같은 paradox 궤변· 유체이탈 화법을 늘어놓은 게 아니라, 무한급수의 합에 대한 정의 자체를 달리함으로써 도출 가능한 결론일 뿐이다.
실제로 모든 수를 0승 해서 1로 만든 것과 같은 ζ(0)의 값은 -1/2이며, 모든 자연수를 그대로 무한히 더한 것과 같은 ζ(-1)의 값이 -1/12이다.

리만-제타 함수와 직접적인 관계가 있는 수열은 아니지만 1+2+4+8+...의 무한합은 이런 체계에서는 -1이다. 자기 자신 s에 대해서 s = 1+2s가 성립되므로, s=-1이 된다는 식이다.
무한히 더하기만 하는 것 말고 더했다 빼기를 반복하는 1-2+3-4+5 ... 교대 무한합은 라마누잔 합에 따르면 등비수열의 무한합을 예외적으로 적용하는 방식으로 구해서 1/4가 된다.
1-1+1-1+1-1...의 교대 무한합은 1/2이다. 이건 1과 -1의 평균 같으니 그나마 좀 직관적으로 들린다.;;;

이들의 구체적인 근거와 계산 내역, 배경 원리는 이 자리에서는 역시 언급을 생략하겠다.;;
이거 무슨 고전 역학만 파다가 갑자기 양자역학이고 상대성 이론이고 하는 분야로 넘어간 듯한 느낌이다. 오일러가 뉴턴이라면 리만은 아인슈타인 정도? 진짜 그런 관계인 것 같다.
혹은 데카르트 좌표계와 유클리드 기하학만 열심히 파다가 갑자기 구면 같은 다른 기하학으로 넘어간 것 같은 느낌이다. (삼각형 세 각의 합이 180도가 아닐 수도 있는..)

무한이라는 개념이 이래서 다루기가 까다롭다. 뭐 하나 까딱 뒤틀면 별 희한한 등식이 다 나오기 때문이다.
0.99999...를 1과 동급으로 만들어 주는 것이 무한이며 그 새 발의 피 같은 소수의 역수들의 합을 발산시켜 주는 것도 '무한'이다. 그런데 한편으로 무한도 다 같은 무한이 아니기 때문에 자연수 전체의 개수보다 0~1 사이의 실수가 훨씬 더 큰 무한이라고 여겨진다.

아무튼 리만-제타 함수를 완전히 확장하고 나니 양수 구간에서는 오일러가 발견했던 그 어마어마한 의미가 담겨 나오고, 음수에서는 또 저런 신세계가 펼쳐지면서 한편으로 1을 제외한 전구간에서 저런 정교한 수학적 질서가 다 충족되었다.
그런데 수학자들의 욕심은 여기서 그치지 않고 이 함수를 복소수 구간에서까지 써먹을 생각을 하게 되었다. 당연히 얘의 저변에 있는 감마 함수, 삼각함수 등등도 전부 복소수 범위에서 값이 정의되어 있어야 할 것이다.

자 그럼 여기서.. ζ(x) = 0을 만족하는 근은 얼마나 있을까?
일단 양의 실수 중에는 그 정의상 존재하지 않는다. 그리고 음수 중에는 아까 말했던 짝수들이 모두 함수값을 0으로 만든다. 이들은 그냥 자명한, 중요하지 않은 trivial한 근이다.

그런데 문제는 이 함수는 복소수 범위에서 다른 근도 갖는다는 것이다. 이것은 유의미한, non-trivial한 근이다.
구하기가 무진장 어렵긴 하겠지만 베른하르트 리만은 0에 가까이 있는 것부터 시작해 근을 4개 정도 찾아내 봤다. 그런데 여기서 신기한 공통점을 발견했으며, 그는 다음과 같은 주장을 하기에 이르렀다.

"ζ(x) = 0을 만족하는 자명하지 않은 복소수 근 x들은 실수부가 모두 1/2일 것이다."


그리고 우리는 이것을 리만 가설이라고 한다.
리만-제타 함수의 유의미한 근은 무수히 많이 존재하는데, 첫 몇 개가 다음 사이트에 올라와 있다. 실수부는 1/2이고 허수부가 저런 값인 복소수들 근이라는 얘기이다. 즉, 1/2 + 14.134725...I 부터 시작해서 1/2 + 21.02203963..I , 25.010857...I 등이다.
실제로 ζ( 1/2 + x*I )의 절대값을 그래프로 그려 보면 이렇다. 저 산들의 밑바닥이 근이라는 뜻 되겠다.

사용자 삽입 이미지

리만 제타 함수는 복잡한 함수들의 조합에다, 무한대 적분(정확한 부정적분 형태를 알 수 없는 놈을 대상으로 이상적분..)까지 동반하는 형태로 인해, 계산량이 실로 어마어마하다.
그렇기 때문에 평범한 다항함수, 삼각함수, 로그, 지수(일명 초등함수)로만 구성된 함수보다 그래프를 그리기가 훨씬 더 힘들다. 그러고도 저건 정확하게 그려진 게 아니다. (21 부근에 그래프가 정확하게 바닥까지 내려가지 않았음) 다른 건 다 해석적으로 확장한다 쳐도, 대소 비교가 존재하지 않는 복소수 구간에서 적분이란 게 어떻게 존재 가능하단 말인가?

그래프를 봐도 모양이 참 희한하다. 저기서 근들의(= 허수부 값) 분포에는 딱히 규칙성이 없는 것으로 여겨진다. 복소평면에서의 무슨 프랙탈 영역 그림 이래로 이 정도로 복잡기괴한 그래프를 보는 건 개인적으로 처음이다.;; 다만, 지금까지 셀 수 없이 많은 복소수 근들을 직접 구해 봤는데, 일단 리만 가설이 다 성립하긴 했다. 전부 1/2 + xx*I의 형태로 표현되었다. 자명하지 않은 근도 무한히 많이 존재하긴 하며, 이는 증명되어 있다.

아아.. 본인이 수학 분야에서 이렇게 길고 복잡한 글을 쓸 일이 이렇게 또 생길 줄은 정말 상상하지 못했다. 나도 머리가 뱅뱅 돌아 버리겠다.. ㅡ,.ㅡ;;
리만-제타 함수는 문제를 풀기는커녕 그 배경을 이해하는 것만으로도 복소해석학 등 최하 대학교 수학과 학부 이상의 고등 수학 지식을 요구한다.

공대 수준의 수학 지식이 아니다. 공대에서 배우는 통상적인 미적분의 개념을 아득히 초월하니 원.. 복소수는 그 정의상 실수부와 허수부의 관계가 아주 미묘하다 보니, 해석적으로 다루는 방법론도 평범한 다변수 기반 해석학과는 다르다.

이 함수의 자명하지 않은 근의 분포는 우리에게 도대체 무슨 의미가 있을까?
저게 다 규명되고 리만 가설이 증명 내지 반증된다고 해서 무슨 암호 알고리즘이 다 뚫리고 생활이 큰 혼란이 야기된다거나 하지는 않는다.
다만, 리만 가설은 현대 정수론의 금자탑이라 해도 과언이 아닌 소수 분포와 직접적인 관계가 있다.

자세한 내막은 모르겠지만, x보다 작은 소수의 개수를 나타내는 공식 x/log(x)은 제타 함수의 자명하지 않은 모든 근들의 실수부가 "1이 아니다" 내지 "1보다 항상 작다"와 동치 급으로 얽혀 있다고 한다. 즉, 소수 정리는 리만 가설이 참이라는 것을 얼추 전제로 하고 세워져 있다.

하지만 리만의 추측이 수학적으로 딱 엄밀하게 증명되거나 반증되지는 못한 상태이다. 마치 P와 NP의 관계 문제처럼 말이다.
전세계의 날고 기는 천재 수학자들, 심지어 필즈 상을 받은 사람도 내가 이 문제를 풀었다고 증명을 내놨지만, 어디엔가 오류와 불완전한 점(그게 왜 저렇게 연결되는데?)이 발견되어 종종 퇴짜를 맞곤 했다. 오죽했으면 20세기 초에 세계구급 수학자들이 이렇게 말을 했을 정도이다.

  • 나는 잠들었다가/죽었다가 한 500년쯤 뒤에 깨어날 수 있다면, 벌떡 일어나자마자 주위 사람에게 "리만 가설 문제가 이제 풀렸나요?"라고 물어 보고 싶다. -- 다비트 힐베르트(1862-1943)
  • 나는 배를 탈 일이 있으면 낚시로라도 "난 리만 가설을 증명했다. 하지만 증명을 다 적기에는 여백이 부족하다"라는 쪽지를 지니고 탄다. 그 상태로 사고가 나서 죽으면 세상은 낚시에 낚여서 나를 온통 안타까워하고 추모해 줄 것이다. 하지만 나는 무신론자이고, 신이 존재한다면 그런 내게 저런 영광을 허락해 주지 않을 것이기 때문이다." (즉, 저 쪽지가 나를 죽지 않게 하는 일종의 보험· 부적 역할을 할 것이란 말을 참 배배 틀어서 어렵게 표현했다. =_=) -- 고드프리 해럴드 하디(1877-1947)

사람에게는 오늘 당장 먹고 살기 위한 빵과, 내일을 준비하기 위한 꿈이 필요하다고들 그런다. 그것처럼 저명한 천재 수학자들은 다른 자기 전공 분야에서 논문 발표하고 연구 실적을 낸 뒤, 그걸 밑천으로 리스크가 큰(= 전혀 풀리지 않아서 시간과 노력만 낭비하게 될 수도 있는) 리만 가설에도 틈틈이 남 몰래 매달리는 식으로 시간을 분배하는 편이라고 한다.

이건 마치 침몰한 보물선을 인양하고 신대륙에서 금을 찾는 일에다가도 비유할 수 있을 것 같다. 금과 보물을 찾았다가는 인생한방 역전이지만.. 전혀 성과가 없으면 투자금만 날리고 사람을 완전 미치게 만들 수 있으며, 실제로 미쳐 버린 수학자도 몇몇 있다. (영화 뷰티풀 마인드 참고..)
그리고 미치지는 않았는데, 반대로 어줍잖은 실력으로 이 문제를 풀었다고 주장하면서 학계 사람들을 귀찮게 굴거나, 거짓 주작 사기를 치는 사람도 있다. 문화재를 거짓 조작한 사기꾼처럼 말이다.

그랬는데.. 지난 2018년 9월 말, 영국에서 '마이클 아티야'(1929-)라고 나이 90을 바라보는 어느 원로 수학자가 리만 가설을 수리물리학적인 방법론으로 접근하여 완전히 풀었다고 나섰다. 논문을 내고 방송 발표를 자청했다.

사용자 삽입 이미지

이 사람은 여느 듣보잡 관심종자가 아니었다. 무려 1966년(지금 본인과 비슷한 나이.ㅠㅠ)에 필즈 상을 받았으며 2004년에 아벨 상까지 받은 금세기 최고로 손꼽히는 천재요 수학계의 거장이었다. 소싯적에 리만 가설 만만찮은 연구 실적을 잔뜩 내기도 했고, 이딴 것 갖고 사기를 칠 아무 동기도, 이유도 없는 사람이었다.

그의 선언은 세계의 이목을 받았지만 정작 뚜껑을 열어 보니 학계의 반응은 허탈함과 아쉬움 일색이었다. "우리 대선배님이 갑자기 왜 이러시나.." 안 그래도 예전부터 그가 공개 석상에서 횡설수설하면서 오락가락.. 상태가 좀 안 좋다는 정황이 포착되어 왔는데, 이번 방송에서도 수학사가 어떻고 하면서 진짜 증명과 별 관계 없는 얘기만 늘어놓으면서 막무가내로 학계가 내 주장을 안 받아주는 거라고 우기는 식이었기 때문이다. 방송 말고 논문도 검증 과정이라고 하지만 예상 반응은 벌써부터 극히 회의적이다.

그래서 현직 수학자들은 이 사태에 대해서 언급을 극도로 꺼리면서 "비록 증명에 실패했다 하더라도 유의미한 연구의 밑거름이 될 것입니다" 덕담이나 하는 한편으로, "리만 가설이 위대한 수학자 한 분을 또 골로 보냈구나, 그것도 말년에.. 저분은 원래 늘그막에 저렇게 망신당할 군번이 절대 아닌데 아 슬프도다!" 이런 입장이었다고 한다...;;

사실, 본인은 이 뉴스 기사를 접하기 전에는 저 사람에 대해 알지도 못했다. 단지, 리만 가설 이상으로 악명 높고 역시나 여러 사람들을 골로 보낸 이력이 있던 "페르마의 대정리"를 풀어 낸 사람(앤드루 와일즈)이 영국 사람인 건 진작부터 알고 있었다. 저런 유럽 나라들은 어떻게 저렇게 수학· 과학이 발달할 수 있었는지 경이롭고 대단하게 느껴질 따름이다.

Posted by 사무엘

2018/11/25 08:36 2018/11/25 08:36
, , , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1558

파이, 수학에서의 패턴

1998년에 개봉한 <파이>라는 영화가 있다. 제목은 음식 파이가 아니라 원주율 파이를 가리킨다. 구체적인 내용은 본인도 기억이 안 난다만 배경은 아마 20세기 중반 정도의 가까운 과거이고, 수학 덕후 주인공과 유대교 랍비가 나오고 '쿵쿵따다 쿵쿵따다 쿵쿵따다 쿵따~' 이런 인상적인 BGM이 나오고, 이례적으로 흑백으로 만들어진 좀 마이너 매니악한 취향의 영화이다.

벤허처럼 1950년대에도 컬러로 만들어진 영화가 있는 반면, 1990년대에 일부러 흑백으로 만들어진 영화도 소수나마 있다. 내가 아는 건 쉰들러 리스트와 저것밖에 없다.
뭐, 킬 빌은 녹엽정 격투 장면이 수위 조절(사지가 날아다니고 피가 철철 튀고..)을 위해서 일부 흑백으로 촬영됐다고는 하는데.. 그런 일부 장면 말고 작품 전체가 흑백인 것 말이다.

과거에 텔레비전의 화질이 디지털 HD로 한층 업그레이드 되자, 출연자들의 피부 표면이 예전보다 훨씬 더 선명하게 보이기 시작했다. 이 때문에 분장· 화장을 맡은 방송 스탭들의 수고가 더 커졌다고 한다.
그리고 텔레비전이 흑백으로 컬러로 바뀌었을 때에도 예전에 대충 하면 되던 각종 보정이나 특수효과들이 이제는 통하지 않게 되었다고 한동안 난리가 났다고 한다. 예를 들어, 없는 눈을 만들어서 눈 내리는 장면을 만들기가 흑백 시절보다 훨씬 더 어려워진 것이다.

하지만 그 반대도 그저 만만하지는 않다. 컬러 찍듯이 평범하게 세팅을 한 뒤에 영상에서 채색을 제거하고 명도만 남긴다고 해서, 보기 좋은 흑백 영화를 만들 수 있는 건 물론 아니라고 한다. 흑백으로 찍었을 때 배경과 인물 분간이 잘 되게 별도의 방법론을 동원해야 한다.
얘기가 좀 옆길로 새었다만 아무튼.. 저 pi 영화에서는 다음과 같이 주인공의 신념(가설)이 담긴 독백 대사가 나온다.

사용자 삽입 이미지

1. 수학은 자연의 언어이다.
2. 우리 주변의 만물들은 수를 통해 표현되고 이해될 수 있다.
3. 그 수들을 그래프로 표현해 보면 패턴이 나타난다.
그러므로 자연에는 패턴이 어디에나 존재한다.


1번을 반영하여 <컨택트>(1997)라는 영화에서는 외계인이 무슨 심장 박동 같은 신호를 2 3 5 7 11... 소수 간격으로 보내는 장면이 나온다. 수학은 지구인이나 외계인이나 다같이 공감할 자연의 언어이니까 말이다.
2번은.. 오늘날 디지털 컴퓨터에서 맨날 하는 짓이 바로 이것이다. 양자화, 전산화, DB화... 인간이 접하고 취급하는 사물의 모든 현상과 정보를 숫자로 표현했기 때문에 컴퓨터가 글과 그림, 소리를 출력할 수 있다.

그리고 3번과 그 이후는 정말 그러한지는 알 수 없다. 단지 그런 패턴을 발견해서 깔끔한 수식으로 아름답게 표현하는 것이 세상 모든 수학자들의 로망인 건 사실이며, 영화에서는 이를 더욱 드라마틱하게 표현했을 뿐이다.
그런데 패턴이라...;; 이 시점에서 본인은 <말죽거리 잔혹사>의 대사가 떠오르지 않을 수 없었다.

사용자 삽입 이미지

"2 로그 2에 4를 푼다. 우선 2로그에서 앞에 있는 2를 뒤로 쭉 빼. 그리고 4 위에 살짝 올려. 왜? 패턴이니까. 수학은 논리가 아니고 뭐다?"


로그값 계산을 저렇게 거창하게.. 무슨 집 맞은편 편의점까지 모험을 떠나고, 동네 뒷산으로 에베레스트 등반을 하듯이 하는 풀이는 처음 본다. ㅠㅠ

당연히, 두 말할 나위도 없이..
전자의 영화에서 말하는 그 심오한 패턴이랑, 후자의 영화에서 말하는 그냥 시험 문제 풀이 테크닉에 가까운 패턴은.. 격이 완전히, 달라도 너무 다른 용어이다.
(뭐, 안 내상 씨도 혹시 진짜 현업 수학 교사를 불러다가 연기 시킨 게 아니냐는 말을 들을 정도로 연기를 잘하긴 했다.;; ㄲㄲ)

말죽거리 잔혹사는 영어 명사의 종류 고추X집물뿐만 아니라 수학에서도 그 당시의 참 비효율적인 입시 위주 암기 위주 교육을 그럭저럭 풍자했다.
하지만 뭐든지 다 잘하는 천재 괴수들은 그런 교육 체제에서도 다 100점 받고 할 거 다 하긴 했다.

Posted by 사무엘

2018/11/03 08:36 2018/11/03 08:36
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1550

본인은 평소에는 15년 넘게 개발하고 있는 날개셋 한글 입력기의 개발에 대부분의 역량이 집중되기 때문에 타 유명 프로그래머 고수들에 비해 타 플랫폼· 언어· 최신 프로그래밍 기술에 대한 개인적인 관심은 덜한 편이다. 뭐, 자주 언급을 안 할 뿐이지 직장에서는 아무래도 갑님이 시키는 대로 해야 하니, 무엇이건 업무와 생존에 필요한 최소한의 맛보기 정도는 한다. 다만 그런 생소한 분야는 본인이 특장점이 없이 그냥 여느 평범한 프로그래머 A, B의 역량과 다를 바 없다.

먼 옛날에 Windows API와 MFC, Visual C++를 처음으로 공부할 때 그러했고, macOS나 안드로이드 개발을 처음으로 익힐 때도 마찬가지이다. 코드와 리소스가 어떤 방식으로 연결되는지 감을 잡는 게 참 어려웠다. 이건 그야말로 프로그래밍 언어뿐만 아니라 각 플랫폼별 바이너리 실행 파일(DLL/EXE)의 구조, 개발툴의 기능에 대한 총체적인 이해가 필요한 부분이니까 말이다.

그래도 리소스(대표적으로 대화상자/화면 레이아웃)의 기술을 위해 XML을 쓰는 요즘 플랫폼에 비해, Win32 API의 rc 파일은 정말 구닥다리이구나 싶은 생각이 든다. 뭐, resource.h와 R.java처럼 개념상 일말의 공통점이 발견되는 것도 있다(개발툴이 자동으로 생성해 주는 리소스 ID 리스트).

또한 안드로이드의 경우, 굉장한 뒷북이긴 하다만 Eclair니 Froyo니 하던 시절과 비교했을 때 개발 환경이 몇 년 사이에 정말 엄청나게 달라져 있었다. 여전히 이클립스를 쓰는가 했더니 Android Studio라고 전용 개발툴로 진작에 갈아탔으며, 무엇보다 에뮬레이터도 x86과 arm이라는 엄청난 CPU 구조 차이를 어떻게 극복했는지 속도가 꽤 빨라졌다.
그도 그럴 것이 그 구글 내부에서 안드로이드 OS에만 달라붙어 있는 세계구급 날고 기는 프로그래머 엔지니어들이 도대체 얼마나 되며, 이들이 매일 생산하는 코드의 양은 또 얼마나 될까?

2010년대 이후에나 등장한 IDE가 copyright이 왜 엄청 옛날인 2000부터 시작하는지 궁금해서 검색을 해 봤더니.. 이건 그 옛날부터 개발되어 온 타 회사의 IDE를(이클립스 말고) Google이 인수해서 자체적으로 발전시킨 것이어서 그렇다고 한다. 으음..

이럴 때마다 늘 드는 생각인데, 새로운 문물이나 지식을 아주 빨리빨리 잘 익히고 남에게 가르치는 것까지 가능할 정도로 머리가 좋은 사람들이 개인적으로 굉장히 부럽다. 난 굳이 말하자면 애초에 남이 안 하는 짓을 골라서 하는 일에 일가견이 있다. 그래서 정보 올림피아드도 공모 부문에서만 입상하고, 코딩과 논문으로 그럭저럭 지금까지 지내 왔다.
그게 아니라 남과 똑같은 조건에서 뭔가를 빨리 달달 외우고 응용하는 능력이라면 본인은 남들 평균보다 못하면 못하지 결코 뛰어나지는 않다.

컴퓨터 쪽에 우글거리는 수많은 고수 괴수들 중에.. 김 상형 님이라고 한때 winapi.co.kr 이라는 사이트를 운영했고 지금은 '소프트웨어 공학'을 일본어 스타일로 축약한 '소엔'이라는 사이트로 여러 유용한 프로그램 개발 정보를 무료로 공유 중인 대인배가 계신다.
사이트 이름에서 유추할 수 있듯 한때 이분의 전문 분야는 Windows API였다. 텍스트 에디터를 그냥 C++만으로 혼자서 처음부터 끝까지 다 만들었고, 그 테크닉을 소스까지 통째로 책을 출간한 바 있다..;;

한 분야의 기술만 통달하기에도 벅찬데 이분은 안드로이드, HTML, 자바스크립트 등 온갖 분야를 다 탐독해서 책을 쓰고 학원 강사로 뛰고 있다.
그냥 위에서 내려오는 회사 업무나 감당하기 위해서 여러 기술들을 찔끔찔끔 서바이벌 수준으로 익히는 게 아니다. 그야말로 남을 가르치고 책을 쓸 정도로 전문가가 되기 위해서 혼자서 도대체 공부를 어떤 방식으로 얼마나 한 걸까? 비결이 궁금해지지 않을 수 없다.

이렇게 강의와 저술만으로 먹고 사는 데 지장 없는 분들은 굳이 회사 들어가서 조직에 매일 필요가 없다. 물론 프리랜서는 월급쟁이보다야 소득이 훨씬 불안정하고 복불복이 심하다. 보통은 자기 친구들에게도 "걍 회사에서 월급 받으며 지내는 게 짱이야, 아무리 엿같은 동료나 상사가 있더라도 어지간해서는 거기서 절대로 뛰쳐나올 생각 마라" 이렇게 권유를 할 정도라고는 하지만..
이것도 자기 하기 나름이다. 엄청난 능력자라면 을임에도 불구하고 여러 기업들을 상대로 갑질을 하면서 자유롭고 편하게 일을 할 수도 있을 것이다.

그리고 컴퓨터가 나왔으니 영어도 빠질 수 없다.
지금보다 자료 접근성이 훨씬 열악했던 옛날에 독학으로 이를 악물고 영어를 마스터해서 198, 90년대에 이미 유명 영어 교재의 저자로 등극한 사람들이 참 대단하다는 생각이 든다.
최 은경 어린이 영어, 오 성식 생활 영어/pops English, 김 인환, 정 철 ... 그리고 최근에는 Arrow English로 유명한 최 재봉 이런 분들.

난 무슨 영문과 교수나 영어 교사, CNN 리포터-_-;; 이런 거 지향하는 게 아닌 이상, 국내에서 영어 때문에 스트레스 받을 일은 없는.. "반도 토박이치고는 뭐 그럭저럭 하네" 딱 그 정도까지만 영어가 된다. 자막 없이 영화를 다 알아듣거나, 토익 만점 이런 경지는 아니다. 그리고 그마저도 나이는 자꾸 먹고 있는데 영어를 당장 쓸 일은 없으니 감이 점점 쇠퇴-_-하는 중이다.
도무지 들리지가 않는 것, 그리고 아무리 머리를 짜내도 독해 속도를 도저히 더 올릴 수 없는 건 그냥 내 머리의 한계인 것 같다.

영어를 잘하려면 뭐 영어식 사고방식과 어순 감각을 익혀야 되고 무슨 발상의 전환을 해야 하고.. 이런 것들은 그냥 기초가 없고 첫 단추부터 완전 잘못 끼운 생짜 영어 포기자한테는 꽤 유효한 조언일지 모른다. 영어 점수 2~30점을 6~70점으로 올리는 데는 도움이 될 것이다.

하지만 90점을 95점으로 올리는 건 무리임. 저런 기초적인 문법과 어순 감각은 이미 다 갖춰져 있고, 거기서 상위권에서 최상위권으로 가려면 그냥 닥치고 영어라는 빅데이터에 수시로 많이 노출돼서 감을 유지하는 것밖에 답이 없다. 외국 어학 연수는 개나 소나 아무나 가는 게 아니라 딱 이 정도 기초가 갖춰진 애들이 가야지 효과가 높아진다.

그런데, 저런 여러 영어 전문가들이 공통으로 말하는 영어 마스터 비결은.. 학창 시절에 영어 교과서 텍스트들을 몽땅 통째로 암송· 암기했다는 것이다. 사실 인간의 언어에는 굉장히 무작위하고 arbitrary하고, 그냥 문맥이 곧 용례를 결정하는 그런 정보가 많다. 암송· 암기는 학습자에게 괴로운 과정이긴 하지만 그래도 그거 효력은 확실한가 보다.
나도 테이큰의 전화 통화 대사 40초 분량은 통째로 줄줄 외우고 있긴 하다만.. -_- I don't know who you are ... I will find you. And I will kill you. 같은 거.. 그런데 영어를 잘하려면 그런 거 암기를 더 많이 해야 한다.

일본은 개개의 국민들이 다 영어를 못 하더라도 국가 차원에서 번역을 엄청 많이 잘 해 놨다고 그런다. 하지만 우리나라는 모든 국민들이 다 영어를 잘하는 것도 아니고, 번역을 깔끔하게 잘한 것도 아니니 뭔가 문제가 있어 보인다.

끝으로, 어려운 과목의 끝판왕인 수학이 있다. 수학은 영어와 달리 유행을 별로 안 탄다. 한편으로는 노력한 만큼 그대로 결과가 나오는 참 정직한 과목 같으면서도, 한편으로는 타고난 머리 지능빨을 타니 불공평한 면모가 느껴지기도 하는 과목이다.
수학에는 '정석' 책 하나로 그야말로 억만장자가 되고 우리나라에서 최고로 성공한 사람이 있다. 물론 이분 역시 머리가 공부벌레 괴수급이었으며, 굳이 책 안 쓰고 학원과 과외 강사료만으로도 그 옛날에, 겨우 20대 나이로도 왕창 잘나갔을 정도로.. 비범했다.

그런 정석의 저자가 말하는 수학 잘하는 비결은.. 수학은 처음에 느리고 시간이 걸리더라도 직접 계산해 보고 손으로 일일이 쓰면서 감을 익혀야 한다는 것이다. 그런 감이 생겨 있지 않은 사람이 눈으로만 보고 넘어가서는, 그리고 덥석 해설과 풀이를 봐서는 진짜배기 수학 실력이 절대 늘 수 없다고.. 참 너무 원론적이고 당연한 조언을 한다. 그건 게임으로 치면 그냥 무한 맵에 치트키 쓰는 것이나 마찬가지니까.

그리고 저 말을 프로그래밍에다가 적용하자면.. 일일이 직접 코딩해 보고 돌려 봐야 실력이 는다는 말과 일맥상통한다. 그 점은 본인 역시 적극 동의한다.
아무 감도 없는 사람이라면 노가다 코딩이라도 해 봐야 된다. 그런 경험을 많이 해 봐야 노가다 코딩을 왜 '노가다'라고 부르는지 그것부터 좀 알게 된다.

개발자, 프로그래머로 먹고 살려면 솔까말 트리 구조 순회 같은 재귀호출을 스택 배열로 직접 구현하기, 포인터 조작으로 연결 리스트의 원소 배열을 역순으로 바꿔치기 정도는 머릿속에서 로직이 어느 정도 암산이 돼야 하고, 굳이 컴퓨터가 없이 화이트보드 앞에서도 의사코드를 쓱쓱 적을 수 있어야 하지 않는가?

사실, 유수의 IT 업체들이 학-석사 급의 엔지니어를 뽑을 때 코딩 면접도 딱 이 정도 수준의 난이도가 나온다. 무슨 "B+ 트리를 구현하시오, 동영상 압축 알고리즘의 모든 과정을 설명하시오"가 아니다. 그리고 크고 유명하고 재정 넉넉한 기업일수록 당장 현업에서 쓰이는 HTML5니 자바스크립트니 언어 문법 지식보다는 저런 미래의 잠재성과 응용력, 새로운 기술을 더 본다. 능력 함수에서 현재의 f(x) 값보다 도함수 f'(x)를 말이다.

다시 말해, 최신 자바스크립트나 HTML5 API 지식이 필요하지 않으니까 당장 그런 걸 모르는 사람도 OK 하고 뽑는 게 아니다.
오히려 그 반대로.. 하나도 모르는 상태로 입사했더라도 현업에서 그런 것쯤은 30분 만에 즉석에서 공부하고 숙달될 능력이 있으니까 뽑는다는 뜻이다. 요구 사항이 훨씬 더 고차원적이다.

컴공과 수학의 관계는 어떨까? 물론 완벽하게 동치는 아니다. 기하 알고리즘을 구현하고 있는데 삼각형 넓이나 세 점의 방향을 구하는 공식, 3차원 공간에서 두 벡터에 대한 나머지 기저를 구하는 세부적인 외적 공식 같은 거야 당연히 까먹을 수 있다. 하지만 기억이 안 나면 당장 검색이라도 할 수 있으면 아무 문제될 것 없다.

단지, 수학은 그렇게 문제를 쓱쓱 풀어 나갔던 경험, 단 한 가지 경우라도 놓쳐서는 안 되고 논리적으로 완벽해야 한다는 그 관념이 나중에 프로그램을 짜는 데 낯설지 않은 정신적 자산으로 작용할 수 있다고 본다.
물론 그런 관념이 오로지 반드시 학창 시절의 수학 문제 풀이를 통해서만 형성될 수 있다는 건 아니겠지만 말이다. 기본적인 머리가 있고 필요를 느끼면 결국은 나중에 다른 경로를 통해서라도 적응은 하게 돼 있다.

어휴.. 나도 말은 이렇게 써 놨지만.. 당장 어떻게 풀어야 할지 모르는 어려운 문제를 대면하면 이게 도대체 지금까지 수업 시간에 배웠던 기본 수학 공식이나 법칙과 무슨 관계가 있고 무엇부터 적용해야 할지 막막한 게 많다. 맨날 이런 기억과 경험만 쌓이다 보면 그 누구라도 수학이 싫어질 수밖에 없고 수학을 포기할 수밖에 없을 것이다.. -_-;; 세상에는 나랑 나이 차이도 별로 안 나던 시절에 그런 문제를 생각해 내고 '만든' 사람도 있구만.. 참 자괴감이 든다~!!

Posted by 사무엘

2017/10/22 19:35 2017/10/22 19:35
, , , ,
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1419

C/C++, 자바, 파이썬 등 프로그래밍 언어를 하나 배워서 초보 딱지를 뗄 정도가 되면, 프로그래밍을 할 줄 모르던 때보다 컴퓨터를 훨씬 더 유용하고 창의적으로 활용할 수 있게 된다. 초보 딱지를 뗐다는 건 한 변수로부터 복수 개 + 다중 계층 형태로 된 숫자나 문자열에 접근하는 '복합 자료형(composite type)'을 다룰 수 있고, 함수와 반복문과 재귀호출로 반복 절차를 구현할 수 있음을 의미한다. 거기에다 Windows API에 대한 약간의 지식이 필요하다.

뭐, C/C++보다 더 고수준 언어를 쓴다면 날포인터(raw pointer)를 써서 수동 메모리 관리까지 직접 다룰 일은 없겠지만, 거기는 거기 고유한 방식으로 리스트나 시퀀스처럼 복합 자료형을 제공하는 게 있을 것이다. 복합 자료형과 실행 시간 조건부 반복 및 분기가 튜링 완전한 계산 모델의 본질이며, 자연어로 치면 그냥 Hello world나 I am a boy를 넘어서 길고 복잡한 안은 문장과 이어진 문장을 자유자재로 구사하는 것과 같다.

모든 사람이 전산학과 코딩을 전공으로 삼아 생업 수준으로까지 할 필요는 전혀 없다. 굳이 번듯한 GUI 갖추고 제3자가 쓸 만한 번듯한 소프트웨어를 개발하는 경지에 이르지는 않아도 된다. 그냥 일상생활에서 내가 당면한 문제를 코딩으로 스스로 해결하는 '자가용' 프로그래밍 스킬만으로 충분하다. 원하는 웹사이트 내용을 크롤링 해서 텍스트를 추출하거나, 방대한 무슨 데이터 파일을 내 입맛에 맞게 변환· 가공하거나, 특정 시간대에나 주기적으로 컴퓨터로 하여금 특정 작업을 수행하게 하는 게 대표적인 예이다.

물론 프로그래밍을 공부하는 대신, 그런 일을 수행해 주는 유틸리티(특히 매크로 같은..)를 찾아서 사용법을 익히는 것도 방법이 될 수 있다. 그러나 본인의 경우는 간단한 건 그냥 직접 만들어 쓴다. 그게 더 빠르다.
옛날 직장에 다니던 시절엔 이튿날 아침 9시 3분 전에 회사 인트라넷에 접속해서 출근 도장을 자동으로 찍게 하는 프로그램을 짜 놓고 퇴근 후, 정작 나는 다음날 느긋하게 출근하기도 했었다. 이 정도 잔머리야 뭐 직업 프로그래머라면 완전 껌(piece of cake)일 것이고, 반대로 회사에서 작정하고 오토의 부정 사용을 단속하려 한다면 키보드 드라이버 차원의 보안 프로그램들로 직원들의 컴을 도배시켜 놓겠지만 말이다.

잡다한 서론이 좀 길어졌으니 본론으로 들어가도록 하겠다. 컴퓨터 프로그래밍에는 저렇게 고정된 입력에 대해서 언제나 고정된 답만 출력하는 작업 말고 의외로 재미있고 유용한 분야가 있는데, 바로 난수(random number) 생성을 이용한 시뮬레이션, 무작위 표본 추출 등이다.

이 글은 난수 생성 방법 자체에 대해 다루지는 않을 것이다. 그래도 말이 나왔으니 잠시 언급하자면, 난수란 그 정의상 등장 패턴을 예측할 수 없으면서(혹은, 몹시 어렵고) 각 숫자들의 등장 빈도에 치우침이 없어야 할 것이다. 파이나 자연상수 같은 유명한 무리수가 파면 팔수록 끝없이 생성하는 소수점들은 난수의 범주에 든다고 볼 수 있으려나 모르겠다.

품질 좋은 난수를 값싸고 빠르게 많이 생성하는 알고리즘에 대한 수요는 매우 많으며, 이건 정수와 관련된 응용 수학에서 매우 중요하게 다뤄지는 분야이다. 옛날에 CACM에서 Random numbers: good ones are hard to find라는 논문을 봤던 기억이 나는데... 거기는 그 정도 퀄리티의 논문이 그야말로 상상도 할 수 없을 정도로 옛날에(1988년!) 이미 게재되었다는 게 전율이 느껴진다.
시뮬레이션도 좋고 각종 게임도 좋지만 추첨 역시 단순 유흥이 아니라 그야말로 사람의 인생과 진로를 결정하는 매우 사무적이고 크리티컬한 분야에 쓰인다.

추첨의 가장 간단한 형태는 A명의 사람에게 B개의 물건을 무작위로 배분하거나(단, A>B) 그냥 B명을 무작위로 답정너 선발하는 것이다. 그리고 이를 일반화하면 단순히 "당첨 B개 vs 꽝 A-B개"라는 이분법적인 상태를 넘어서 3개 이상의 상태를 배분하는 것도 생각할 수 있다.
이런 추첨을 종이와 연필만으로 수행하는 대중적인 방법 중 하나는 사다리 게임이다. 이 정도 추첨이야 언제 어디서든 필요할 때 하라고 사다리를 무작위로 생성해 주는 스마트폰 앱도 진작에 나와 있다.

그러나 현실에서는 이보다 더 복잡한 조건을 주고 추첨을 해야 할 때도 있다. 조 추첨이 대표적인 예인데, 각 조별로 인원과 성별이 비록 조의 수로 나눠 떨어지지 않더라도 최대한 균일하게 유지돼야 하며, 그 밖에 구성원들별로 다른 내부 속성도 최대한 균일하게 유지돼야 한다.
본인은 고등학교 시절에 반 내지 학교 행사 때 테이블별 인원 추첨을 컴퓨터 프로그램을 짜서 실시한 적이 있다. 하긴, 반 편성 자체도 일단 컴퓨터가 뒤섞어 놓은 결과에다가 각 반 담임들이 보정을 해서 뽑는다고 들었다. 가령, 문제아들은 한 반에 몰리지 않고 최대한 서로 다른 반에 찢어지게 말이다.

그 뒤 본인은 최근에는 교회 청년부의 소그룹 기도 모임의 인원을 분기별로 새로 추첨해 주는 프로그램을 작성했다.
이 역시 기본적으로 조별 인원과 성별부터 균등하게 맞추지만, 거기에다가 모임에 활발히 참여하는 사람과 그렇지 않은 사람도 나눠서 특정 성향의 사람이 한 조에 너무 몰리지 않고 최대한 분산되게 하는 조건을 추가했다.
그리고 또 중요한 것으로, 동일 집안의 친형제· 친자매· 친남매는 같은 조에 결코 걸리지 않게 했다. 흥미롭지 않은가?

처음에 인원과 성별은 무조건 균등하게 나오게 틀을 먼저 짜서 했다. 그러나 나머지 필터링은 알고리즘으로 구현한 게 아니라 무식한 방법을 썼다. 추첨 결과가 조건을 전체 만족하는지 검사해서 안 그러면 그냥 빠꾸 시키고 될 때까지 추첨을 다시 한다. 그러니 이건 프로그램의 실행 종료와 성공 여부를 전적으로 난수 생성 알고리즘의 품질에다 맡기는 셈이다.

물론 이렇게만 해도 소규모 인원의 조편성 결과쯤이야 운이 나빠 봤자 몇십 번 정도 뺑뺑이 만에 답이 즉시 잘 튀어나온다. 허나, 진지한 프로그램이라면 추첨 결과에 anomaly가 존재하면 조의 인원을 무작위하게, 적절하게 교환하고 보정을 해서 그걸 해소해야 할 것이다. 난수 생성 결과와 무관하게 수행이 유한 시간 만에 끝난다는 게 보장되는 알고리즘으로 말이다.

더 나아가면 이렇게 추첨이라는 computation을 위한 범용적인 '로직 선언형 프로그래밍 언어'를 생각할 수 있을 것 같다. 어찌 보면 SQL처럼 select A from B where 같은 문법 구조를 가질 수도 있겠다. 10명의 인원에다 무엇을 배당하되 무엇과 무엇에는 무엇이 같아서는 안 되고..
마치 "A와 B의 사이에는 C가 있지 않다. C의 오른쪽에는 D가 있다." 이런 단서들 주고 나서 "A~D의 가능한 정렬 순서는 무엇인가?" 이런 문제를 풀듯이 추첨 조건을 쫙 명시할 수 있다.

모든 조건의 충족이 불가능하다면 무식하게 무한 루프에 빠지는 게 아니라 저 조건들만 분석해 보고는 일찌감치 "성립 불가능, 답 없음"이라고 에러가 깔끔하게 튀어나와야 한다.
조건들 중에는 일단 추첨 뒤에 사후 보정을 해야 하는 것도 있겠지만, 여러 가지 속성 변수들을 균등하게 분할하는 것은 변수의 개수만큼 n차원 공간을 만들어서 거기에다가 차곡차곡 무작위로 숫자들을 채워 넣는 선형대수학 같은 방법론을 동원해서 구현할 수도 있을 것 같다. 아무튼 추첨· 배분과 관련된 수학 패키지나 프로그래밍 언어 솔루션이 있는지 궁금하다.

그리고 다음으로.. 컴퓨터 추첨은 추첨 알고리즘에 인위적인 조작이 없다는 걸 어떻게 보장하느냐고 결과에 대한 불신이 있을 수 있다.
이걸 해소하기 위해서는 제3자 참관인을 두는 게 바람직할 듯하다. 그래서 1부터 N회 중 가추첨을 몇 번 할지를 결정하게 한 뒤, 그 횟수를 공언한다. 그리고 그 횟수만큼 그 사람이 실제로 추첨을 돌리고 N회째의 결과를 최종 결과물로 선택하는 것이 모두에게 공정할 것 같다.

프로그램을 개발하는 사람 입장에서는 몇 회째에 조작된 결과를 내놓아야 할지 알 수 없으며, 참관인은 자기가 원하는 추첨 결과가 나왔을 때가 아니라, 먼저 약속했던 횟수만큼만 가추첨을 돌리다가 최종 결과에는 승복해야 한다. 그리고 가추첨의 결과도 계속 공개되므로 각 가추첨의 결과가 충분히 무작위하지 않고 이상하다면 이의 제기가 가능하다.

빵 같은 걸 두 사람이 먹게 반으로 나눌 때, 한 사람은 칼로 빵을 나누고 다른 한 사람은 나눠진 결과물 중 원하는 것(= 더 큰 것)을 취사선택하게 한다면 그야말로 두 사람이 모두 만족하는 결과가 나올 수밖에 없을 것이다. 이와 비슷한 시스템을 구현하는 것으로 논란을 잠재우는 게 합리적이어 보인다.

Posted by 사무엘

2017/07/29 19:33 2017/07/29 19:33
, , ,
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1387

란체스터의 법칙

A와 B라는 두 집단이 서로 패싸움을 시작했다. A는 전투원이 5명이고 B는 4명이다. 그런데 양 진영의 모든 전투원들은 체력· 정신력· 무장 등등이 완전히 동일하며, 기습 가능성이라든가 지형적인 유불리, 엄폐물 같은 것도 없이 탁 트인 개활지에서 순수하게 힘과 힘만이 충돌하는 형태로 싸우게 됐다고 치자. 싸움은 둘 중 한 진영의 전투원들이 몽땅 죽거나 중상을 입어서 전투력을 상실할 때까지 계속된다. 그렇다면 이 싸움의 결과는 어찌 될까?

마오 쩌둥이던가 스탈린이던가.. 인권 쌈싸먹은 독재자답게 "전쟁 나서 1억 인구가 죽는 것쯤은 별 일 아니다. 사람이야 또 낳으면 되니까. 적군이 병력이 1억이면 우리는 1억에다 한 명만 더 붙여서 이기면 된다" 그런 요지의 무지막지한 말을 한 적이 있었다. 정확하게 누가 언제 한 말인지 출처 확인이 잘 안 되네, 분명 본 기억은 있는데..

그런데 저건 병신 같지만 묘하게 설득력이 있는 말이다. 외적인 요인이 차이가 전혀 없고 완전히 동일하다면 상식적으로 생각했을 때 쪽수가 한 명이라도 더 많은 집단이 필승하고 부족한 집단은 필패할 것이다.
위의 경우라면 B가 지고 A가 이기는 것 자체는 따 놓은 당상이다. 단지 문제는 A가 B를 얼마나 너끈히 이기느냐, 어느 정도의 피해를 입고 승리하느냐로 귀착된다.

그 답은 A와 B가 어떤 방식으로 싸우느냐에 따라 달라진다.
조폭들 패싸움처럼 기껏해야 일대일로 근접해서 냉병기를 사용하는 싸움이라든가, 총이라 해도 18세기 전열보병 전술처럼 비현실적일 정도로 너무 신사적으로 일대일 턴제로 싸우는 거라면 말 그대로 일대일로 상쇄하고 남은 병력만이 생존자가 된다. B는 전멸이요, A는 A-B에 해당하는 인원이 남는다. 고로 5:4의 싸움이라면 한 명만 남는 거다. 이것을 일명 란체스터 제1법칙이라고 한다.

그러나 점 vs 점이 아니라 면 vs 면 단위로 실시간으로 부딪치는 현실의 전투에서는 다구리가 더 대규모로 가능하며 병력의 작은 차이가 훨씬 더 큰 차이를 야기한다. 설정상 한 집단의 전투력은 병력에 비례해서 나오게 돼 있는데 그 전투력 자체가 병력의 손실로 인해서 차츰 감소한다. 두 변수가 같이 변화하면서 비선형적인 구도를 만든다는 뜻이다. 그래서 처음부터 병력과 전투력이 열세였던 집단은 그 감소폭이 더욱 커지면서 전멸에 이르지만, 우세 집단이 받는 대미지는 시간이 흐를수록 더욱 작아진다. 전투력도 부익부 빈익빈으로 치닫는다!

그래서 답부터 말하자면, 이런 현실의 싸움에서 A와 B가 붙으면 B가 전멸한 뒤 A는 한 명만 남는 게 아니라 이론적으로 3명이나 생존해 있게 된다. B는 자기 진영 4명이 전멸하는 동안 A를 2명밖에 못 죽인다는 것이다. 공식으로 표현하면 단순한 A-B가 아니라 sqrt(A^2 - B^2)이다.
마치 직각삼각형 세 변의 길이와 같은 구도가 된다. 그렇다면 5명 vs 4명이 아니라 13명 vs 12명이 붙으면, 12명 팀은 전멸하고 13명 팀은 8명만 죽어서 5명이 남는다.

이것은 란체스터 제2법칙이라고 명명되어 있다. 영국의 항공 공학 엔지니어가 1차 세계 대전의 양상에서 착안하여 고안했다.
스타크 같은 전략 시뮬 게임에서 드라군, 마린, 히드라 같은 원거리 공격 유닛들을 서로 마주보게 해서 어택 땅으로 싸움을 붙여 보면 이 법칙이 의외로 굉장히 잘 적중한다고 한다. 란체스터의 법칙에 대해 소개해 놓은 타 블로그 글들을 검색해 보면 전략 시뮬 게임으로 실험을 해 봤는데 높은 적중률을 보고 놀랐다는 말이 많이 나온다. 1억 명에다가 딱 한 명만 더 보태서 이기면 된다는 말이 그저 허세만은 아닌 셈이다.

란체스터 제2법칙이 어째서 성립하는지를 엄밀하게 논하려면 삼라만상의 변화량을 기술하는 끝판왕 도구인 미분방정식을 동원해야 한다.
시각 t에 대해서 A 진영의 병력을 나타내는 함수 f(t), B 진영의 병력을 나타내는 함수 g(t)를 정의하자.
위의 예에서는 전투 전의 초기 상태 t=0에 대해 f(0)=5, g(0)=4가 될 것이다. 뭐, 일반화해서 f(0)=a, g(0)=b라고 잡아도 된다.

전투의 진행으로 인해 f(t), g(t) 모두 병력이 감소할 것이다. 그런데 그 감소하는 변화량이 바로 상대방 함수의 함수값과 같다. d f(t) / dt = -g(t) 요, d g(t) / dt = -f(t)라는 뜻이다.
그렇다면 이 f와 g는 도대체 어떻게 생겨먹은 함수일까? 0보다 큰 t에 대해서 g(t)=0이 되고(B 진영의 전멸) 그 정의상 동시에 f'(t)=0도 되는 지점이 있을 것이다. 그 t가 얼마인지는 중요하지 않겠지만, 이때 f(t)의 값을 a와 b에 대해서 구하면 란체스터 제2법칙을 유도할 수 있을 것이다.

f의 도함수가 -g이고 g의 도함수가 또 -f라니.. 일단 얘는 미분을 짝수 번 반복하면 도함수가 자기 자신으로 돌아오는 뭔가 골때리는 함수 형태가 될 듯하다. 즉, 4배수 주기로 제자리로 돌아오는 삼각함수보다는.. cosh, sinh 같은 쌍곡선함수 형태가 될 것 같다. 걔들은 미분을 하면 cosh, sinh, cosh ... 이렇게 반복되는데, 문제의 저 함수는 f, -g, f, ... 이렇게 반복된다.

그래서 답을 구해 보면.. a>b여서 f가 더 우세한 진영을 나타낸다는 걸 염두에 뒀을 때
2*f(x) = (a+b)/e^x + (a-b)*e^x 요, 2*g(x) = (a+b)/e^x - (a-b)*e^x 가 된다. (2를 곱한 게 저런 것이므로 전체를 2로 나눠 줄 것)
e^x와 e^x의 역수를 절반씩 적절히 더하거나 빼는 cosh / sinh 함수를 상수배/평행이동만 한 형태인 걸 알 수 있다. f는 cosh에 대응하고 g는 그냥 sinh가 아니라 -sinh가 된다.

cosh는 현수선을 나타내는 함수이기도 하다. 그 말인즉슨 A와 B가 싸울 때 A의 피해 양상은 빨랫줄이나 쇠사슬이 아래로 축 늘어진 것과 비슷한 양상으로 스무스하게 감소할 거라는 뜻이다. 실제로 그런지 확인해 보자.


사용자 삽입 이미지

사용자 삽입 이미지
바로 이것이 5명과 4명, 또는 엄밀히 말해 5:4 비율의 병력이 맞붙었을 때 란체스터 제2법칙에 따라 예상되는 병력의 변화 양상이다!
g(x)=0이 되는 시점은 x= ln( (a+b)/(a-b) )/2 가 되며, (a=5, b=4일 때는 저 값은 대략 1.1)
이때 f(x)를 구해 보면 (a+b)/sqrt( (a+b)/(a-b) )가 나오고 식을 정리하면 진짜로 sqrt(a^2 - b^2)가 나온다.
임계점 이후부터는 g는 음수가 나오고 f는 감소가 아니라 오히려 증가하기 시작하지만, 이건 현실에서는 아무 의미 없는 추세일 테니 제끼면 된다.

더 직관적인 비유로 설명하자면.. 5:4가 붙어서 곧이곧대로 1명만 남는 싸움, 즉 란체스터 제1법칙은 y=1이라는 상수 그래프를 떠올리면 된다. 여기서 x가 4부터 0까지 가는(B진영) 동일 면적(= 정적분)을 5에서부터(A진영) 시작한다면 1에 도달한다.

그러나 란체스터 제2법칙은 y=1이 아니라 y=x라는 가변적인 그래프에 대응한다. 여기서 x가 4부터 0까지 가는 B진영의 면적 8(밑변과 높이가 모두 4인 삼각형)을 5에서부터 시작한다면.. 1이 아니라 3에서 멈추게 된다. 윗변 3, 아랫변 5, 높이 2인 사다리꼴의 넓이가 8이 되니까 말이다.
이를 일반화하면, 0부터 B까지 y=x를 정적분한 값은 sqrt(A^2-B^2)에서부터 A까지 정적분한 값과 같다. 이렇게 이해해도 된다.

전쟁이라는 건 여기저기 가성비를 따지면서 지킬 것과 버릴 것을 가리고 작전을 잘 짜야 이길 수 있다. 즉, 경제· 경영과도 밀접한 관계가 있다. 그렇기 때문에 오늘날 란체스터의 법칙은 군사학보다는 경제학 쪽에서도 기초 이론으로 더 중요하게 다뤄진다. 포병 장교에다 수학 박사 출신인 지 만원 박사 같은 분이 아마 이런 분야의 최고 전문가가 아닐까 싶다.
이 법칙은 스플래시 데미지나 사이오닉 스톰-_- 같은 변수가 있지 않은 한, 왜 일반적으로는 "뭉치면 살고 흩어지면 죽는다"가 성립하는지를 무식하게 시행착오 겪을 필요 없이 수식만으로도 잘 설명해 준다. 5:4로만 붙여도 저 그래프와 같은 처참한 결과가 나오지 않던가?

더 나아가서 어지간히 절체절명의 위급한 상황이 아닌 이상, 스타에서 유닛이 생성되는 족족 적진으로 찔끔찔끔 축차투입을 해서는 절대 안 되며 캐리어 같은 유닛도 반드시 일정 기수 이상 모아야 제 성능이 발휘된다는 것을 보여준다.
또한 전쟁이 나면 전투 직전에야 양 진영이 모두 사기 진작이 매우 중요하기 때문에 "마지막 하나까지 결사항전" 운운하지만.. 대세를 도저히 뒤집을 수 없을 정도로 승부가 너무 기울고 100% 개죽음밖에 선택의 여지가 없을 때는 불가피하게 꼬리 내리고 항복도 하는 것이다.

이상. 란체스터 법칙 하나 갖고 미분방정식에, 쌍곡선함수에 별 얘기가 다 나왔다.
다만, 현실의 전장에서는 수학 숫자놀음 나부랭이보다 예측할 수 없는 외부 변수가 훨씬 더 많이 존재하기 때문에 란체스터 법칙이 절대적인 만능 장땡인 건 아니다. 겉으로 드러나는 병력 열세를 극복하고 B가 A를 이긴 사례도 역사엔 얼마든지 존재한다는 것도 생각할 필요가 있다.
그러니 성경에서 하나님께서 기드온에게 병사 수를 32000명에서 거의 1% 수준인 300명으로 일부러 줄여 버리고도 오히려 전투를 승리로 이끄신 것이 대단한 이야기인 것이다(삿 7). 진짜 300의 원조는 무슨 영화에 나오는 스파르타 군대가 아니라 저 군대였던 셈이다.

Posted by 사무엘

2017/02/18 08:32 2017/02/18 08:32
, ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1328


블로그 이미지

철도를 명절 때에나 떠오르는 4대 교통수단 중 하나로만 아는 것은, 예수님을 사대성인· 성인군자 중 하나로만 아는 것과 같다.

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2020/09   »
    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:
1442309
Today:
121
Yesterday:
482