본문 바로가기
Programming/Algorithm

수, 거듭제곱, 로그

by 작은별하나 2011. 9. 21.
반응형

1.2.2. 수, 거듭제곱, 로그

 

우리가 가장 먼저 접하는 수는 자연수(Natural number)란 것일텐데요. 수학이란 학문이 A→B로 가는 연산이 있다면, 항상 B→A 로 가는 방법을 따지죠. 꼭 반대(역)가 필요한 학문이고, 수학자들은 그래서 영원한 반대주의자들의 집단일 수밖에 없나 봅니다.

 

모 광고에서 모두다 "예"라고 할 때, "아니오"라고 답하는 사람.. 그러다 왕따 당하기 딱 좋죠. 그래서인지, 최근에 우리나라에서 수학은 왕따 당하는 듯 합니다.

 

그렇지만 다르게 생각한다면, 수학은 해를 구하는 학문이라는 것이죠. A→B 로 가는 연산이 있다면 어떤 경우에 해당 연산 결과가 B가 될 것인가죠. 그렇게 하다보니 그 해가 정말 맞는 것인지, 그리고 오직 그 해만 존재하는지를 따지게 된 것이라고 봅니다.

 

말이 좀 샜지만...

 

자연수에서 출발을 해서 정수(integer)가 나오는 것은 덧셈이라는 연산에서 출발합니다.

덧셈의 정의는 잘 알고 있고, 이미 이전 글에서 간략하게나마 밝혔으니까 무시해도 될 듯 합니다.

 

3+2 는 5라는 것을 초등학교 저학년만 되어도 다 아는 사실입니다. 그러다가 3에 어떤 수를 더해야 5가 될 것인가를 묻게 됩니다. 초등학교 저학년 수준으로 본다면, 3+□=5 라 쓰고 □에 들어갈 수를 찾으라고 합니다. 푸는 방법을 알려주지 않아도, 덧셈에 대한 정의만 안다면 쉽게 알 수 있는 문제입니다. 손가락을 꼽아가면서 세어보면 □에 들어갈 수는 2라는 것을 알 수 있습니다. 이것을 보다 체계적으로 나타내기 위해서 뺄셈이란 연산을 두게 됩니다. 5-3 식으로 말이죠. 좀 더 발전해서 새로운 수의 개념이 필요해지고, 그 수들이 바로 정수(integer)입니다. 일반적으로 역 연산은 닫혀 있지 않는 경우가 많이 존재합니다.

 

다음으로 수학에서 두드러지는 현상은 거듭 연산입니다. 3+3+3+3+3+3 은 얼마일까요 식의 연산이죠. 거듭 연산에서는 주의하실 것이 항등원의 개념이 숨겨져 있습니다. 예를 들어서 3을 1번 더하면 얼마일까요라는 질문을 받아보도록 하죠. 그러면 초기 조건이라는 이야기를 제기할 수 있을 것입니다. 이러한 초기 조건을 제기하지 않았다면, 그동안 주입식 교육에 찌들어 살았다는 증거입니다. 초기 조건은 시작하는 수는 0이라는 것입니다. 이 0은 항등원이고, 그런 이유로 수십, 수백, 수천번 거듭 연산을 해도 바뀌지 않는 수라는 것입니다. 어쩌면 당연하다고 할 수 있는 이것을 수학을 좀 한다하는 사람들도 무시하고 있습니다. 프로그램을 짤 때, 초보자가 가장 실수를 많이 하는 것이 초기값을 적지 않고 거듭연산을 하는 것입니다.

 

//    Sum from 1 to 100 (Wrong version)
int Sum100()
{
    int sum;
    int i;

    for( i = 1 ; i <= 100 ; i++ )
        sum = sum + i;
    return sum;
}

 

이 프로그램은 초기값을 넣지 않아서 논리적 오류를 발생시킵니다. 진보된 컴파일러에서 발생할 수 있는 오류를 지적하기는 하겠지만, 실행하는데에는 전혀 문제가 없습니다.

 

거듭연산은 결국 새로운 연산이 됩니다. 덧셈의 거듭연산은 곱하기 연산이며, × 로 표기합니다. 다음은 당연히 나올 수 있는 것이 역 연산입니다. 곱하기에 대한 역 연산은 나누기 연산이며, ÷로 표기합니다. 자연수에서 나누기 연산은 몫과 나머지로 계산하는 방법도 있지만, 새로운 수의 개념을 도입해서 유리수로 표시할 수 있습니다. 자연수에서 정수로 확장해도 마찬가지입니다. 단 정수 ÷ 정수 인 경우 나머지 표기법에 대해서 논란이 있을 수 있습니다.

 

다음으로 확장할 수 있는 수는 실수(Real number)입니다. 실수에 대해서는 오래전에 피타고라스 학파에서 발견할 수 있는 여지가 있었지만, 피타고라스 학파는 무리수의 존재에 대해서 부정하였다고 합니다. 무리수는 해를 구하는 과정에서 쉽게 접할 수 있습니다.

 

어떤 수를 거듭 곱해서 2가 될 때, 그 수는 얼마인가?

 

이 해를 찾기 위해서는 자연수, 정수, 유리수의 범주 안에서는 불가능합니다. 그 수는 해당 범주 밖에 있는 무리수이기 때문입니다. 무리수는 순환하지 않는 소수로 표현됩니다. 유리수도 무한 소수가 될 수 있지만, 순환고리가 있어 해당 고리가 무한히 반복됩니다.

 

무리수는 또한 두가지로 나눌 수 있습니다. 다항식의 해로 표현될 수 있는 무리수와 그렇지 않은 초월수입니다. 예를 들어서 다음과 같은 경우입니다.

 

반지름이 1인 원의 둘레는 얼마인가?

 

이 답을 찾기 위해서 우리는 다항식을 만들고 거기서 해를 찾을 수 있을까요? 다항식의 해로 표현될 수 없는 수입니다. 이러한 수를 우리는 초월수라고 합니다.

 

거듭 더하기를 곱하기라고 하면, 거듭 곱하기를 우리는 거듭제곱(또는 승)이라고 표현합니다. 거듭제곱은 윗첨자를 이용해서 표현합니다.

 

\[ 2 \times 2 \times 2 \times 2 = 2^4 \]

 

거듭제곱에도 초기 조건이 당연히 필요합니다. 곱셈의 항등원인 1이 초기값이 됩니다. 그런 의미로 어떤 수의 0제곱은 1이 됩니다. 그러면 0의 0제곱은 얼마일까요? 물론 주입식 교육을 받은 사람들은 정의되지 않았기 때문에 값이 존재하지 않는다고 합니다만, 거듭제곱의 원 의미를 생각한다면 1이어야 맞습니다.

 

거듭제곱의 역 연산은 로그(logarithm)이라고 합니다. 거듭제곱은 교환법칙이 성립하지 않으므로 항등원이 존재하지 않으며, 또한 그러한 이유로 로그의 표기법은 앞서의 연산 기호와 다소 다릅니다.

 

\[ 2^4 = 16 \]

\[ \log_2 16 = 4 \]

 

 

로그 함수에는 밑수가 있으며, 이 밑수는 거듭제곱의 밑수와 동일합니다. 위 식에서 16이란 수를 얻기 위해서 2를 몇 번 곱해야 하는 가입니다. 당연히 이 거듭제곱과 로그 함수에도 실수로 확장이 가능합니다.

 

728x90

'Programming > Algorithm' 카테고리의 다른 글

Bitwise operation I  (0) 2011.09.21
수, 거듭제곱, 로그  (0) 2011.09.21
Induction II  (0) 2011.09.20
Induction I  (0) 2011.09.19
Euclid algorithm  (0) 2011.09.19

댓글