도구적 수학

by Dongeun Paeng
Aug 05, 2022 · 만 32세

수학에서 해를 찾는 방법은 여러가지다. 직관을 이용하는 법, 해석적으로 접근하는 법, 수치적으로 접근하는 법 등이 있다.

그런데 "해석적", "수치적" 같은 용어를 굳이 사용할 필요는 없어보인다. 더 쉽게 풀어쓸 수 있다.


수치적 방법은 근사(approximate)하는 것이다. 답이 1인 문제에 대해서, 1.0000000000000001 정도로 계산이 가능하다면 1이라고 믿는 것이다.

해석적 방법은 반대다. 방정식을 통해 엄밀하게 해를 찾는 것이고, 왜 답이 1일 수밖에 없는지 연역적이고 논리적으로 증명해야 한다.


예를 들어보자.


limnn(1/n)\displaystyle\lim_{n \to \infin}{n^{(1/n)}} 의 값은 얼마일까?


우선 직관적으로 접근해보자. 우리가 찾는 수, 즉 xxnn 번 제곱했을 때 nn 이 나오면 x=n(1/n)x=n^{(1/n)} 이다.

여기서 nn 이 점점 커져서 100, 1000, ...가 될 것을 고려하여, 이런저런 숫자를 xx 에 넣어보자.


'직관적으로', 0.9를 상상해볼 수 있다. 그런데 0.9를 100번 제곱했다간 보나마나 0에 가까워져 있을 것이다.

제곱하면 제곱할수록 그 결과가 nn 과는 멀어질 게 뻔하다. 즉 nn 이 커질수록(더 여러 번 제곱할수록) 값은 0에 가까워진다.

0.99도 그렇고, 0.999도 그렇고, 0.999999도 그렇다. 1이 되지 않는 이상, 제곱하면 제곱할수록 작아지기만 할 뿐이다.


따라서 우리는 우선 x1x \geq 1 이라고 추측할 수 있다.


이번에는 1보다 큰 숫자를 상상해보자. '직관적으로' 1.2를 상상해볼 수 있다. 1.2를 nn 번 제곱했을 때 과연 nn 이 나올까?

예를 들어 1.2를 100번 제곱해서 100이 됐다고 쳐보자. 여기까지만 보면 1.2는 우선 xx 가 될 자격을 얻었다. nn 번 제곱해서 nn 이 됐으니 말이다.

그런데 1.2가 정말 xx 라면, 1.2101=1011.2^{101}=101 이어야 한다. 그런데 100에 1.2를 곱하면 120이다. 즉 1.2는 너무 크다!

한 번 더 곱할 때마다(즉 n이 1 늘어날 때마다) 그 결과도 1씩 늘어나려면, 1.2보다 훨씬 작아야 한다. 얼마나 작아야 할까? 1.1 정도면 되나?

1.1101=1101.1^{101}=110 이므로, 1.1도 여전히 크다. 100에 한 번 더 곱해서 101이 나오는 숫자는 1.01이다.


여기서 벌써 우린 xx 가 1을 향해감을 알 수 있다. 하지만 좀 더 상상해보자.

n=100n=100 일 때 우리의 xx 는 1.01이어야 했다. 왜냐면 그래야만 한 번 더 곱했을 때 101이 나오니까.

그러면 n=1000n=1000 이면 어떻게 될까? x=1.001x=1.001 이어야 한다. 한 번 더 곱했을 때 1001이 돼야 하기 때문이다.

n=100000000n=100000000 이면, x=1.00000001x=1.00000001 여야 한다.


따라서 x=1x=1 이 될 거라고 강하게 믿을 수 있다.


다음으로는 컴퓨터에게 계산을 맡겨보자.(수치적 방법)

간단한 파이썬 코드로 답을 추측할 수 있다.


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()


위 코드는 다음 그림을 그린다.


x=1x=1 이라는 게 쉽게 관찰된다. 수치적 방법은 수학을 깊이 다루지 않아도 답을 예상하게 해주기 때문에, 응용수학/공학 분야에서 많이 사용된다.


끝으로, 해석적으로 접근해보자.


limnxn=l, limnyn=l, xnznyn    limnzn=l\lim\limits_{n \to \infin} x_n = l, \space \lim\limits_{n \to \infin} y_n = l, \space x_n \leq z_n \leq y_n \implies \lim\limits_{n \to \infin} z_n = l


위 정리는 Squeeze Theorem(조임정리)로, 기초 해석학에서 배우는 중요한 정리다.


조임정리에 따르면, 아래 부등식에서 오른쪽 부등식(을 잠시 "RHS"라고 하자)이 0일 경우 limzn=0\lim{z_n}=0 이 된다.


0<zn=n(1/n)1<(2n1)(1/2)0 < z_n = n^{(1/n)} -1 < \left(\cfrac{2}{n-1}\right)^{(1/2)}


위에서, znz_n 이 0보다 크다는 것은 다소 자명하다. "RHS"는 이항정리를 이용해 증명 가능하다.


(zn+1)n=n(z_n+1)^n=n 인데, 좌변은 이항정리를 통해 다음과 같이 전개할 수 있다.


(n0)+(n1)zn+(n2)zn2+(n3)zn3+{n\choose 0} + {n\choose 1}z_n + {n\choose 2}{z_n}^2 + {n\choose 3}{z_n}^3 + \cdots


그런데 여기서 (n2)zn2=n(n1)2zn2{n\choose 2}{z_n}^2 = \frac{n(n-1)}{2}{z_n}^2 이다.


따라서 (zn+1)n>n(n1)2zn2(z_n + 1)^n > \frac{n(n-1)}{2}{z_n}^2 이다.(전개된 식은 더 많은 항들을 지니고 있기 때문)


(zn+1)n=n(z_n+1)^n=n 이므로, 위 부등식의 우변이 nn 보다 작다는 뜻이다.


부등식을 잘 정리하면 드디어 "RHS"가 증명됐다.


이로써 다음 증명이 완성된다.


limn0=0zn0=limn(2n1)(1/2)\displaystyle\lim_{n \to \infin} 0 = 0 \leq z_n \leq 0 = \displaystyle\lim_{n \to \infin} \left( \cfrac{2}{n-1} \right)^{(1/2)}


limnzn=0\lim\limits_{n \to \infin} z_n = 0


limn(n1/n1)=0\displaystyle\lim_{n \to \infin}{(n^{1/n} -1)} =0


limnn1/n=1\displaystyle\lim_{n \to \infin}{n^{1/n}} =1


이렇게 보면 수치적 방법이 제일 쉬워보인다. 실제로 현실에서 만나는 대부분의 문제는 수치적 방법으로 공학자들이 해결한다.

하지만 해석적 방법의 힘은 답을 엄밀하게 찾는 데 있는 게 아니라, 계산 과정을 쉽게 추상화한다는 데 있다. 그리고 가끔, 정말 엄밀해야 할 때는 해석적 방법 외에 엄밀함을 세울 다른 방도가 없다.

NEXT POST

도구적 수학 - 2

Aug 08, 2022 · 만 32세

아래 미로를 푼다고 해봅시다. 더 보기

PREVIOUS POST

디젤

Jul 18, 2022 · 만 32세

디젤 엔진은 휘발유 엔진보다 훨씬 효율적인 장치입니다. 더 보기