수학에서 해를 찾는 방법은 여러가지다. 직관을 이용하는 법, 해석적으로 접근하는 법, 수치적으로 접근하는 법 등이 있다.
그런데 "해석적", "수치적" 같은 용어를 굳이 사용할 필요는 없어보인다. 더 쉽게 풀어쓸 수 있다.
수치적 방법은 근사(approximate)하는 것이다. 답이 1인 문제에 대해서, 1.0000000000000001 정도로 계산이 가능하다면 1이라고 믿는 것이다.
해석적 방법은 반대다. 방정식을 통해 엄밀하게 해를 찾는 것이고, 왜 답이 1일 수밖에 없는지 연역적이고 논리적으로 증명해야 한다.
예를 들어보자.
의 값은 얼마일까?
우선 직관적으로 접근해보자. 우리가 찾는 수, 즉 를 번 제곱했을 때 이 나오면 이다.
여기서 이 점점 커져서 100, 1000, ...가 될 것을 고려하여, 이런저런 숫자를 에 넣어보자.
'직관적으로', 0.9를 상상해볼 수 있다. 그런데 0.9를 100번 제곱했다간 보나마나 0에 가까워져 있을 것이다.
제곱하면 제곱할수록 그 결과가 과는 멀어질 게 뻔하다. 즉 이 커질수록(더 여러 번 제곱할수록) 값은 0에 가까워진다.
0.99도 그렇고, 0.999도 그렇고, 0.999999도 그렇다. 1이 되지 않는 이상, 제곱하면 제곱할수록 작아지기만 할 뿐이다.
따라서 우리는 우선 이라고 추측할 수 있다.
이번에는 1보다 큰 숫자를 상상해보자. '직관적으로' 1.2를 상상해볼 수 있다. 1.2를 번 제곱했을 때 과연 이 나올까?
예를 들어 1.2를 100번 제곱해서 100이 됐다고 쳐보자. 여기까지만 보면 1.2는 우선 가 될 자격을 얻었다. 번 제곱해서 이 됐으니 말이다.
그런데 1.2가 정말 라면, 이어야 한다. 그런데 100에 1.2를 곱하면 120이다. 즉 1.2는 너무 크다!
한 번 더 곱할 때마다(즉 n이 1 늘어날 때마다) 그 결과도 1씩 늘어나려면, 1.2보다 훨씬 작아야 한다. 얼마나 작아야 할까? 1.1 정도면 되나?
이므로, 1.1도 여전히 크다. 100에 한 번 더 곱해서 101이 나오는 숫자는 1.01이다.
여기서 벌써 우린 가 1을 향해감을 알 수 있다. 하지만 좀 더 상상해보자.
일 때 우리의 는 1.01이어야 했다. 왜냐면 그래야만 한 번 더 곱했을 때 101이 나오니까.
그러면 이면 어떻게 될까? 이어야 한다. 한 번 더 곱했을 때 1001이 돼야 하기 때문이다.
이면, 여야 한다.
따라서 이 될 거라고 강하게 믿을 수 있다.
다음으로는 컴퓨터에게 계산을 맡겨보자.(수치적 방법)
간단한 파이썬 코드로 답을 추측할 수 있다.
import matplotlib.pyplot as plt
xs = list(map(lambda x: x**(1/x), range(1, 5000)))
plt.plot(xs)
plt.axhline(y=1, color='r', linestyle=':')
plt.ylabel('x')
plt.show()
위 코드는 다음 그림을 그린다.
이라는 게 쉽게 관찰된다. 수치적 방법은 수학을 깊이 다루지 않아도 답을 예상하게 해주기 때문에, 응용수학/공학 분야에서 많이 사용된다.
끝으로, 해석적으로 접근해보자.
위 정리는 Squeeze Theorem(조임정리)로, 기초 해석학에서 배우는 중요한 정리다.
조임정리에 따르면, 아래 부등식에서 오른쪽 부등식(을 잠시 "RHS"라고 하자)이 0일 경우 이 된다.
위에서, 이 0보다 크다는 것은 다소 자명하다. "RHS"는 이항정리를 이용해 증명 가능하다.
인데, 좌변은 이항정리를 통해 다음과 같이 전개할 수 있다.
그런데 여기서 이다.
따라서 이다.(전개된 식은 더 많은 항들을 지니고 있기 때문)
이므로, 위 부등식의 우변이 보다 작다는 뜻이다.
부등식을 잘 정리하면 드디어 "RHS"가 증명됐다.
이로써 다음 증명이 완성된다.
이렇게 보면 수치적 방법이 제일 쉬워보인다. 실제로 현실에서 만나는 대부분의 문제는 수치적 방법으로 공학자들이 해결한다.
하지만 해석적 방법의 힘은 답을 엄밀하게 찾는 데 있는 게 아니라, 계산 과정을 쉽게 추상화한다는 데 있다. 그리고 가끔, 정말 엄밀해야 할 때는 해석적 방법 외에 엄밀함을 세울 다른 방도가 없다.
NEXT POST