2010년 7월 5일 월요일

중간값의 정리(中間値 定理, Intermediate Value Theorem)

[경고] 아래 글을 읽지 않고 "중간값의 정리"를 보면 바보로 느껴질 수 있습니다.
1. 극한과 연속성의 의미
2. 평균값의 정리


함수의 양끝점 값이 주어지면 그 중간에 있는 값은 반드시 존재하는가? 이런 의문을 수학적으로 풀어주는 정리가 중간값의 정리이다.

[그림 1] 중간값의 정리(출처: wikipedia.org)

[그림 1]을 보면 중간값의 정리는 개념적으로는 자명하다고 할 수 있다. $f(a)$와 $f(b)$가 주어져 있고 함수 $f(x)$가 연속이면 $f(a)$와 $f(b)$ 사이에는 중간값이 반드시 있음을 쉽게 알 수 있다. 하지만 이런 자명한 명제를 증명하기는 매우 어렵다. 코쉬Augustin-Louis Cauchy(1789–1857)가 제안했던 구간 나누기에 기반을 둔 증명[1]이 따라가기에 쉽다. 증명을 끝까지 따라갈 수 있으면 수학하는 재미를 느낄 수 있는 흥미있는 정리이다. 함수의 연속성을 정의한 후 연속 함수의 특성을 이용하여 코쉬가 증명했던 중간값의 정리를 아래에 소개한다[1]. 코쉬가 느낀 희열을 읽는 사람도 느끼기를...

[중간값의 정리]
닫힌 구간 $[a, b]$에서 정의된 연속 함수 $f(x)$가 $f(a) \le u \le f(b)$를 만족하면 $[a, b]$ 사이에 $u$ = $f(c)$를 만족하는 $x$ = $c$가 반드시 존재한다.

[증명]
위의 정리를 바로 증명하지 말고 $u$ = $0$인 특별한 경우를 먼저 증명하자[1]. $u$ = $0$인 경우는 볼차노의 정리(Bolzano's theorem)라고 한다. 볼차노의 정리는 1817년볼차노 36세, 조선 순조 시절에 볼차노Bernard Bolzano(1781–1848)가 증명했다. 닫힌 구간 $[a, b]$를 계속 1/2로 나누어 간다고 가정하면 아래 수열 $(a_n, b_n)$을 얻을 수 있다.

                        (1)

여기서 $a_0$ = $a$, $b_0$ = $b$이다. 이 과정을 지속적으로 반복하면 아래 식 (2)에 제시한 수열 $(a_n, b_n)$의 순서를 얻을 수 있다.

                         (2)

구간을 1/2로 계속 나누어 갔으므로 구간의 간격은 식 (3)처럼 지수적으로 줄어간다.

                         (3)

또한, 수열 $(a_n, b_n)$에 대해서도 식 (1)과 같이 선택했으므로 $f(a_n) \le 0 \le f(b_n)$이 성립해야 한다. 식 (3)을 고려하면 $n$이 계속 커져감에 따라 $b_n - a_n \to 0$에 수렴하므로 $b_n$ = $a_n$ = $c$가 성립해야 한다. 여기서 수열 $(a_n, b_n)$이 수렴하는 값을 $x$ = $c$로 두었다. 또한 $f(x)$는 연속 함수이므로 $f(a_n)$ = $f(c) \le 0$이 성립하면서 동시에 $f(b_n)$ = $f(c) \ge 0$이 성립해야 한다. 따라서 $f(c)$ = $0$이 되어야 한다. 또한 $f(c)$ = $0$이 성립하는 $x$ = $c$는 식 (2)에 의해 반드시 닫힌 구간 $[a, b]$에 있어야 한다.
볼차노의 정리를 확장하기 위해 $g(x)$ = $f(x) - u$라 두면 $g(x)$는 볼차노 정리가 성립해야 하므로 닫힌 구간 $[a, b]$ 사이에 존재하는 어떤 값 $x$ = $c$에 의해 $g(a) \le 0 \le g(b)$, $g(c)$ = $0$이 성립한다. $g(x)$ 대신에 $f(x)$로 이 식을 치환하면 $f(a) \le u \le f(b)$, $f(c)$ = $u$이 성립하여 볼차노의 정리를 중간값의 정리로 확장할 수 있다.
______________________________

수학사 전체를 봐도 볼차노Bernard Bolzano(1781–1848)는 특이한 수학자였다[2]. 천주교 사제이며 프라하 대학교(University of Prague)의 교수로서 신학, 철학, 수학에 엄청난 관심과 재능이 있었다. 1817년에는 볼차노의 정리와 더불어 $\epsilon$–$\delta$ 정의도 엄밀하게 제안했다. 하지만 정치적 성향이 너무 진보적이어서 1819년볼차노 38세, 조선 순조 시절에 대학교에서 해임되고 프라하 교외로 추방되었다. 나쁜 외부 환경에 굴하지 않고 볼차노는 계속 철학과 수학에 매진하였다. 그 결과물 중의 하나가 1847년볼차노 66세, 조선 헌종 시절에 볼차노가 연구한 집합론(set theory)이다. 볼차노는 독일어 멩에(menge) 혹은 집합(集合, set)이란 명칭을 처음으로 사용했고, 무한을 다루기 위해 집합 이론을 사용했다. 칸토어Georg Cantor(1845–1918)가 만든 현대적 집합론은 1874년칸토어 29세, 조선 고종 시절에나 나오기 때문에 볼차노가 집합 개념의 한참 선구자이다.  
중간값의 정리를 증명할 때 식 (3)에 의해 $b_n - a_n \to 0$이라 가정하였으나 이 과정을 제대로 이해하려면 실수(實數, real number)완비성(完備性, completeness)을 생각해야 한다. 실수가 완비성을 가짐을 쉽게 이야기하면 실수는 1차원 좌표계 혹은 수직선(數直線, number line)을 빈틈없이 완벽히 채울 수 있음이다. 또한, 단조 감소(單調減少, monotonous decrease)하는 수열이 유계(有界, bounded)이면 수렴한다는 특성도 사실은 증명해야 하는 사항이나 코쉬는 당연하다고 가정했다[1]. 중간값의 정리중 $u$ = $0$인 볼차노의 정리는 임의 연속 함수의 근을 찾을 때 유용하게 쓰일 수 있다. 위에 제시한 대로 $f(a)$와 $f(b)$의 부호가 다르면 볼차노의 정리에 의해 반드시 근이 존재한다. 이런 근 찾기 방법(root-searching or root-finding algorithm)은 이분법(二分法, bisection method)이라 한다. 전자파 이론에서는 전송선(傳送線, transmission line)이나 도파관(導波管, waveguide)의 분산 관계(分散關係, dispersion relation)를 찾을 때 볼차노 정리 기반의 이분법을 많이 사용한다.

[참고문헌]
[1] J. V. Grabiner, "Who gave you the Epsilon? Cauchy and the origins of rigorous calculus," The American Mathematical Monthly, vol. 90, no. 3, pp. 185–194, March 1983.
[2] E. Morscher, Bernard Bolzano, Stanford Encyclopedia of Philosophy, 2007. (방문일 2020-10-03)

[다음 읽을거리]
1. 극값의 정리
2. 단조 증감 수렴정리
3. 고정점 정리

댓글 17개 :

  1. 오 재밌는 증명이네요

    답글삭제
    답글
    1. 수학, 특히 해석학은 참 재미있지요. ^^

      삭제
  2. 실례이지만 볼자노의 정리를 증명하는 부분에서 이해가 안되서 질문을 드리려고 합니다.
    식 (1)에서 닫힌 구간 a,b를 계속적으로 2등분해나갔을때 수열 c_n = a_n과 b_n의 합의 1/2이고, 수열 (a_n+1 , b_n+1) = (a_n,c_n) when f(c_n)>0 / (c_n,b_n) when f(c_n)<0을 얻는데 일단 위의 수열이 n이 증가함에 따라 양 끝 점이 되는 구간을 의미한다고 생각하는 게 맞는지 궁금합니다.

    그리고 위의 수열이 n이 증가함에 따라 식(3)에 따라서 처음 구간에서 2^n만큼 줄어드는 각각의 구간들의 길이를 의미한다면 (a_0,b_0)와 (a_1,b_1)은 길이가 2배 차이가 나고 (a_0,b_0)와 (a_2,b_2)는 길이가 4배 차이가 나게 c_n을 통해서 구간을 이렇게 줄여나갈때 식 (1)의 수열을 가지고 a_n과 b_n 수열에 속하는 점들을 어떻게 수직선상에 잡을 수 있는건인가요?
    a_0과 b_0 그리고 c_0처럼 a_1과 b_1 그리고 c_1은 수직선상에 유일하게 찍히는 점들이라는 사실이 직관적으로 보여지지 않습니다.
    유일하기는 하지만 찍힐 수 있는 위치는 n의 수에 따라서 얼마든지 조금씩 바뀔 수 있고 그래서 깊이 생각할 필요가 없을 수 있지만 식 (1)을 가지고 수직선상에 식(2)처럼 그려보려고 하니까 c_n에 속하는 점들은 when f(c_n)<0 when f(c_n)>0 일때에 따라서 (a_n,c_n)에 있을 때가 있고 (c_n,b_n)에 있을 때가 있어서 (a_n+1,b_n+1)이라는 구간이 도무지 (a_n,b_n)이라는 구간의 길이에 1/2이라는 것을 뜻한다는 것을 이해하지 못했습니다.

    나름대로 깊이 고민했지만 도저히 진전이 없어서 질문을 드리게 되었습니다. 질문이 장황하지만 최선을 다했습니다. 답변해주시면 정말 감사드리겠습니다.

    답글삭제
    답글
    1. 볼자노 정리의 증명법은 대표적인 수학적 알고리즘입니다. 컴퓨터로 근찾을 때는 이분법(bisection method)이라고 부릅니다. 연속이라면 중간값이 있다는 것은 직관적으로 알 수 있지만 어떻게 찾을 수 있는지 구체적으로 보여줘야 증명이 됩니다.

      볼자노 정리를 쉽게 생각하려면 근을 찾는다고 보세요. 예를 들면 어떤 함수 f(x)가 f(a) < 0, f(b) > 0이라면 구간 [a, b] 어딘가에 근이 있겠지요. 이걸 찾으려면 중앙값 f(c)를 보면 됩니다. f(c) > 0이면 구간 [a, c] 사이에 근이 있고 우리가 탐색해야 하는 공간은 [a, b]에서 [a, c]로 줄었으니 구간 길이는 원래의 반이 됩니다.
      그래서 이런 알고리즘의 이름도 이분법이 됩니다.

      삭제
  3. 감사합니다.
    제가 질문을 잘 할줄 몰라서 답답하고 어쩌면 중요하지도 않은 문제인지도 모르겠습니다.
    그렇지만 아직도 이해가 안되는 부분이 있어서 한번더 도와주시길 부탁드립니다.
    사실 저는 식(1)이 식(3)과 어떤 연관이 있는지 모르겠습니다.
    제가 정확히 무엇을 모르고 있는지 한번더 설명드리겠습니다.

    우선 설명해주신 부분은 제가 이해하기로는 f(c_0)이 양수이냐 음수이냐에 따라서 우리가 찾으려는 구간은 (a_0,c_0)에 있느냐 (c_0,b_0)에 있느냐로 나누어진다는 뜻인것 같습니다.
    그러나 두 경우를 함께 생각하기 위해서 식(1)에서처럼 표현한것이라고 이해합니다.
    그런데
    (a_1,b_1) = (a_0,c_0) 그리고 (c_0,b_0) 이라면 (a_1, b_1)은 식 (3)에 따라서 분명히 b_1-a_1=(b_0-a_0)/2이므로 (a_0,b_0)의 길이의 절반이 되고 이것은 f(c_0)의 부호에 따라서(a_0,c_0)이거나 (c_0,b_0) 입니다. 그러니까 실제로는 위의 두 개 중에서 하나만을 의미하는 것이라고 볼 수 있는 것이지요?
    그런데 n=2일때도 생각해보면 (a_2,b_2) = (a_1,c_1) 그리고 (c_1,b_1)입니다. 만약 f(c_0)>0이라고 했을때 a_0=a_1=a_2이고 c_0=b_1 , c_1=b_2 이런식으로 c_n=b_n+1로 그리고 a_n=a_n+1로 보게 되지 않나요?
    물론 f(c_0)<0이라고 하면 c_n=a_n+1로 b_n=b_n+1로 보게 됩니다.

    그러니까 처음 구간 (a_0,b_0)를 c_0으로 나누었을때 (a_0,c_0)과 (c_0,b_0)중에서 f(c_0)의 부호에 따라서 하나를 선택하는데 만약에 f(c_0)>0 이라서 (a_0,c_0)이 선택되었다면 직관적으로는 c_1은 (a_0+c_0)/2인데 식 (1)에서는 c_1=(a_1+b_1)/2로 정의하고 있기 때문에 맞추려고 보면 a_0=a_1이고 b_1=c_0로 간주할 수 밖에 없고 이렇게 되면 (a_n+1, b_n+1)은 구간이 아니라 단지 2^n씩 줄어드는 (a_0,c_0)와 (c_0,b_0)를 동시에 표현하는 수열일 뿐이라고 생각하게 되고
    그러나 식 (3)에서는 분명히 b_n-a_n=(b_0-a_0)/2로 표현하고 있으므로 다시금 2^n씩 줄어드는 처음 둘로 나뉘어진 두 구간 중에서 어느 한 구간을 의미하는 것이라고 생각하게 됩니다.
    즉 b_1-a_1이 (a_0, c_0)와 (c_0,b_0)를 동시에 표현하는 표현일 뿐(수열일 뿐 실제로 이것 자체로 표현될 수 있는 구간이 아니다)이라고 말입니다.

    그러나 이런 생각은 식(2)의 부등식을 보면 여기에는 c_n은 없고 a_0부터 b_0까지의 점들의 구간을 표현하는데 a_n과 b_n을 사용하고 있습니다. 그리고 식 (3)을 보면 식 (1)과는 모순(결코 아니겠지만)된 것 같아 보이기도 합니다. 이렇게 생각하는 이유는 우리는 이미 처음에 c_0을 택할때 이미 (a_1,b_1)을 양자택일의 두 구간 (a_0,c_0)와 (c_0,b_0)로 나누어서 둘 중에 하나에만 1/2씩 줄여나가도록 c_n을 잡아가도록 하는데 만약에 f(c_0)>0일 때 어째서 c_n을 잡아가는데 b_n 수열에 있는 점들을 이용해야 하는가 ( 식(1) c_n=(a_n+b_n)/2 ) 때문입니다.

    답변을 안해주셔도 좋습니다만 만약에 제 질문을 이해하신다면 도와주시길 꼭 부탁드립니다.
    쓰면서 죄송했습니다. 지우라고 하시면 지우겠습니다. 읽어주셔서 감사합니다.

    답글삭제
    답글
    1. 질문은 언제든 환영입니다. ^^

      익명님, 조금만 단순하게 생각해 보세요. 위 증명에도 있듯이 $(a_n, b_n)$은 수열처럼 생각하면 됩니다. 다만 $a_n$, $b_n$의 의미를 찾을 때 $a_n$에서 $b_n$까지의 구간이라고 생각한 것입니다.
      또한, 위 증명에서 우리가 사용하는 실제 변수는 a, b, c입니다. c는 다음번 새로운 a, b를 만들기 위한 매개변수입니다. 식 (1)이 핵심입니다. 연산을 거친 후 새로운 값은 a, b에 대입합니다. 하지만 이전(n)과 구별을 위해 새로운 a, b에 아래첨자 n+1을 붙인 것 뿐입니다.
      그러니 c에 너무 집중하실 필요가 없습니다.

      혹은 위 내용은 일종의 알고리즘이기 때문에 컴퓨터에게 일을 시킨다고 생각하면 됩니다.

      삭제
  4. 저기 [Math Processing Error] 가 엄청많은데 [Math Processing Error] 가도데체 뭐죠?

    답글삭제
    답글
    1. 가끔씩 수식 표현 부분이 오동작합니다. 이때는 그냥 F5를 눌러주시면 됩니다.

      삭제
  5. 볼자노의 정리는 f(a)<0, f(b)>0 인 증가수열에서만 성립하나요??

    (1)에서 when f(cn)>0 when f(cn)<0 왜 이렇게 나눠놨는지 이해가 안가서 수직선에서 생각해보니 f(a)<0, f(b)>0 인 증가수열이라고 가정했을 때 성립이 되더라구요.. 반대로 감소수열이거나 근이 여러개면 이런 식의 전개가 안되던데..

    제가 학부 때 미적분학을 수강하긴 했는데 너무 문제중심으로 공부한것 같아 거북이님 블로그보면서 다시 공부하고 있습니다..ㅎㅎ 왠만하면 하나하나 이해하려고 하는데 문제들이 너무 어렵네요ㅜㅜ 해석개론같은 책 보면서 하면 좀 나을까요??

    답글삭제
    답글
    1. 아 멍청한 질문이었네요 f(an)0 인 증가수열인데..

      앞으로 질문하기 전에 더 생각해보고 질문할게요.. 죄송합니다 (__)

      삭제
    2. 편하게 증명하기 위해서 $f(a) \le 0, f(b) \ge 0$을 가정했을 뿐입니다. $f(a) \ge 0, f(b) \le 0$가 되더라도 성립합니다. (식 (1)에서 $c_n$을 선택하는 부분만 반대로 하면 됩니다.)

      해석학 개론을 보는 것보다는 혼자서 고민하시는 게 더 좋을겁니다. 해석학 개론은 수학책이라 문제 의식 없이는 행간을 읽기가 매우 어렵습니다.

      삭제
    3. 익명님, 부담 없이 질문하셔도 됩니다. 여기는 그다지 진지한 공간이 아닙니다. ^^

      삭제
  6. 블로거님 포스팅 보면서 하나씩 정리해나가는 학생입니다

    같이 보고 있는 책은 미적분학이라서 증명을 생략한 경우가 많은데 이 블로그가 도움이 많이 되네요

    실례지만 몇가지 여쭤보고싶습니다

    1. 중간값 정리는 중간에 있는 값을 가지는 x값이 "반드시 하나" 존재한다. 이렇게 알고있습니다. 블로거님 포스팅을 보면 볼자노의 정리라고 해서 이분법을 이용해 f(c)=u=0인 값을 찾아낼수있다 인데, c가 여러개일 경우는 구간나누기가 쉽지않더라구요.. 증명 전체가 c가 하나임을 가정하고 전개해나가는 것 같은데, 처음에 그걸 생각하지 못해서 바로바로 이해하기가 어려웠습니다ㅜ 제가 여쭙고 싶은것은 반드시 존재한다를 넘어 하나 이상이다를 이런식으로 증명할수있는지 궁금합니다

    2. 중간값의 정리를 증명할 때 식 (3)에 의해 bn−an→0이라 가정하였으나 이 과정을 제대로 이해하려면 실수(實數, real number)의 완비성(完備性, completeness)을 생각해야 한다.
    라고 하셨는데, 그냥 우변의 분모가 한없이 커지므로 0가 되고, bn-an=0이 된다 이런식으로 이해하는것은 잘못된 전개인가요? 여기서 실수의 완비성이 왜 나오는지 모르겠어요!!

    몇년전에 쓰신 글인데도, 최근까지 답변주시는점이 정말 대단하다고 생각합니다.. 저는 1년만 지나도 세세한 부분은 다 까먹는데 말이죠ㅜㅜ

    답변주시면 감사하겠습니다

    답글삭제
    답글
    1. 보기 좋은 모습입니다, 익명님. ^^ 계속 증명 기반으로 공부하세요. 분명 좋은 성과 있을 것입니다.

      1. 중간값이 하나 이상이어도 문제가 없습니다. 함수값에 따라 식 (1)에 의해 구간이 계속 줄어갑니다. 이 과정은 중간값 개수와는 관계가 없습니다.

      2. 구간 축소가 되려면 수직선 상의 어떤 점에도 수렴해야 합니다. 이걸 거꾸로 생각하면 내가 생각하는 수체계가 수직선을 빈틈없이 완전하게 표현해야 한다는 것입니다. 이 특성을 실수의 완비성이라 부르는데요, 이게 사실은 실수의 특성입니다. 이 실수의 특성으로 인해 극한, 미분, 적분이 정확히 정의될 수 있습니다. 아래 링크 참고하세요.

      http://ghebook.blogspot.kr/2011/07/monotone-convergence-theorem.html

      삭제
  7. 감사합니다
    그 (3)에서 길이가 0으로 수렴하고 그에 따른 점 c를 가질 수 있는것이 폐구간 a b 에서 연속 이라고 가정했기 때문 인가요? 폐구간에서 수렴 하니까
    [a_n , b_n] 이 한점에 수렴 하고 c가 [a b] 원소라는것은 a<=c<=b 라는거고 실수의 완비성에 의해 c가 반드시 존재한다 라고 생각하면 되는건가요?
    글을 잘 못써서 죄송합니다...

    답글삭제
    답글
    1. 맞습니다. 실수의 완비성은 공리로 볼 수 있기 때문에, 이게 맞다고 생각하고 논지를 전개하고 있습니다.

      삭제

욕설이나 스팸글은 삭제될 수 있습니다. [전파거북이]는 선플운동의 아름다운 인터넷을 지지합니다.