문제.f가 [a,b]에서 연속일 때 A(x)=∫axf(t)dt로 둡니다.
(1) f(t)=t2, a=0일 때 A(x)를 48강의 결과로 구하고 미분하세요.
(2) 일반적인 f에서 A(x+h)−A(x)를 적분으로 나타내세요.
(3) A′(x)를 구하세요.
생각의 실마리. (1)은 구체적인 계산이며 결과에서 규칙이 보입니다. (2)에서는 48강의 구간가법성을 씁니다. 두 적분의 차이가 하나의 적분으로 합쳐집니다. (3)에서는 그 좁은 구간 위의 적분을 어떻게 어림할지가 관건인데, 48강 문제 5의 정리가 정확히 그 일을 합니다.
풀이. (1) 48강 확인 1-2의 계산을 일반화하면 ∫0xt2dt=3x3입니다. 미분하면
A′(x)=x2=f(x)
입니다. 미분한 결과가 피적분함수 그 자체입니다.
(2) 구간가법성에서 ∫ax+h=∫ax+∫xx+h이므로
A(x+h)−A(x)=∫xx+hf(t)dt
입니다.
(3) f가 연속이므로 48강의 적분의 평균값 정리를 [x,x+h]에 적용합니다. 어떤 ch가 x와 x+h 사이에 있어
∫xx+hf(t)dt=f(ch)⋅h
입니다. 따라서
hA(x+h)−A(x)=f(ch)
입니다. h→0이면 ch가 x와 x+h 사이에 갇혀 있으므로 ch→x이고, f가 연속이므로 f(ch)→f(x)입니다. 그러므로
연속이라는 가정이 마지막 단계에서 결정적으로 쓰입니다.f가 불연속이면 ch→x여도 f(ch)→f(x)가 보장되지 않고, 실제로 정리가 무너집니다. 심화 2에서 확인합니다.
기호에서도 짚을 것이 있습니다. A(x)=∫axf(t)dt에서 적분변수를 t로 쓴 이유는 위끝의 x와 구별하기 위해서입니다. ∫axf(x)dx라고 쓰면 같은 문자가 두 가지 역할을 하게 되어 혼란스럽습니다. 48강에서 적분변수가 더미라고 한 것이 여기서 실질적인 의미를 가집니다.
이 정리를 말로 읽으면 이렇습니다. 적분한 다음 미분하면 원래대로 돌아옵니다. 미분과 적분이 서로의 역이라는 주장의 절반이며, 나머지 절반인 "미분한 다음 적분하면 원래대로"가 문제 2의 주제입니다.
(1) 답이 틀렸음을 근거를 들어 지적하세요.
(2) 어느 단계가 잘못되었는지 정확히 짚으세요.
(3) 올바른 결론은 무엇입니까?
생각의 실마리. (1)은 계산하기 전에 답의 부호만 봐도 이상합니다. 피적분함수의 부호를 확인하고 48강의 단조성을 떠올립니다. (2)에서는 제2기본정리의 가정을 하나씩 점검합니다. 문제가 되는 것은 구간 안의 어떤 점입니다.
풀이. (1) x21>0이 x=0인 모든 곳에서 성립합니다. 48강의 단조성에 의해 양수함수의 적분은 음수가 될 수 없으므로 −2는 틀린 답입니다.
(2) 제2기본정리는 f가 [a,b]에서 연속일 것을 요구합니다. 그런데 x21은 x=0에서 정의되지 않고, [−1,1]은 그 점을 포함합니다. 가정이 깨졌으므로 정리를 적용할 수 없습니다. 원시함수 −x1도 x=0에서 끊겨 있어 [−1,1] 전체에서 하나의 원시함수 노릇을 하지 못합니다.
42강 문제 3에서 "F′=G′이면 F=G+C"가 하나의 구간에서만 성립한다고 못 박았던 것과 정확히 같은 함정입니다. −x1은 (−∞,0)과 (0,∞)에서 각각 원시함수이지만 두 조각을 하나로 이어 쓸 수 없습니다.
(3) x21은 0 근처에서 유계가 아니므로 48강의 뜻에서 리만 적분가능하지도 않습니다. 이 적분은 존재하지 않습니다. 굳이 의미를 주려면 53강의 이상적분으로 다뤄야 하는데, 그때도 ∫01x2dx가 발산하므로 결론은 발산입니다.
이 문제에서 배우는 것: 적용 조건의 점검.
기본정리 적용 전 점검표.
항목
확인
1
피적분함수가 [a,b]전체에서 연속입니까?
2
정의되지 않는 점이 구간 안에 있지 않습니까?
3
원시함수가 [a,b] 전체에서 하나로 이어집니까?
4
피적분함수가 유계입니까?
같은 함정이 여러 모습으로 나타납니다.
잘못된 계산
문제점
∫−11x2dx=−2
x=0에서 정의되지 않습니다
∫−11xdx=ln1−ln1=0
같은 이유입니다
∫0πsec2xdx=0
x=2π에서 정의되지 않습니다
세 계산 모두 형식적으로는 그럴듯하고 답도 나옵니다. 그럴듯한 답이 나온다는 것이 오히려 위험합니다. 계산이 막히면 이상함을 알아채겠지만, 매끄럽게 진행되면 그냥 넘어가기 쉽습니다.
방어하는 습관은 두 가지입니다. 첫째, 계산 전에 분모가 0이 되는 점을 찾습니다. 둘째, 계산 후에 부호와 크기가 상식에 맞는지 봅니다. 양수함수의 적분이 음수로 나오면 반드시 어딘가 틀린 것입니다.
바로 확인 4.
확인 4-1.∫−22xdx를 기계적으로 계산하면 무엇이 나오고 왜 틀렸습니까?
답.ln2−ln2=0이 나오지만 x=0에서 정의되지 않아 정리를 적용할 수 없습니다. 이 적분은 존재하지 않습니다.
확인 4-2.∫13x−2dx가 존재하지 않는 이유를 쓰세요.
답.x=2가 구간 안에 있고 그 점에서 정의되지 않으며 유계도 아니기 때문입니다.
확인 4-3. 계산 후 답의 타당성을 점검하는 방법을 하나 쓰세요.
답. 피적분함수가 양수인데 답이 음수로 나왔는지 확인합니다. 그런 경우 48강의 단조성에 어긋나므로 반드시 어딘가 틀린 것입니다.
문제. 다음을 미분하세요.
(1) H(x)=∫0x2sintdt
(2) K(x)=∫x5et2dt
(3) M(x)=∫xx31+t2dt
생각의 실마리. (1)은 제1기본정리를 바로 쓸 수 없습니다. 위끝이 x가 아니라 x2이기 때문입니다. A(u)=∫0usintdt로 두면 H(x)=A(x2)이므로 합성함수이고 38강의 연쇄법칙을 씁니다. (2)는 변수가 아래끝에 있으므로 48강의 방향 반전 규약을 먼저 씁니다. (3)은 위아래가 모두 변수이므로 중간에 점을 하나 끼워 넣어 나눕니다.
심화 1. 제1기본정리의 증명을 적분의 평균값 정리를 쓰지 않고 유계 성질만으로 다시 하세요.
풀이.h>0인 경우를 봅니다. [x,x+h]에서 f의 최솟값과 최댓값을 mh, Mh라 하면 48강의 유계 성질에서
mhh≤∫xx+hf(t)dt≤Mhh
입니다. h로 나누면
mh≤hA(x+h)−A(x)≤Mh
입니다.
이제 h→0+을 봅니다. f가 x에서 연속이므로, 임의의 ε>0에 대해 δ>0이 있어 ∣t−x∣<δ이면 ∣f(t)−f(x)∣<ε입니다. 0<h<δ이면 [x,x+h]의 모든 점이 그 범위에 있으므로
f(x)−ε≤mh≤Mh≤f(x)+ε
입니다. 따라서 차분몫도 그 사이에 있고, ε이 임의이므로 우극한이 f(x)입니다. h<0인 경우도 부등호 방향에 주의하며 같은 방식으로 처리하면 좌극한도 f(x)입니다.
평균값 정리를 쓰지 않아도 되는 이유는 우리가 필요한 것이 "그 값을 실제로 취하는 점의 존재"가 아니라 "값이 어떤 범위 안에 있다"는 것뿐이기 때문입니다. 유계 성질만으로 충분하고, 34강의 샌드위치 정리가 마무리합니다. 두 증명을 비교해 보면 평균값 정리 쪽이 짧고 이쪽이 가정을 덜 씁니다.
이 예가 말하는 것은 두 가지입니다. 첫째, 제1기본정리에서 연속 가정을 빼면 결론이 실제로 무너집니다.f가 불연속인 점에서 A가 미분되지 않습니다. 둘째, 그럼에도 A는 연속입니다. 사실 ∣f∣≤K이면
∣A(x)−A(y)∣=∣∣∣∣∣∫yxf∣∣∣∣∣≤K∣x−y∣
이므로 A는 립시츠 연속입니다(42강). 적분은 함수를 매끄럽게 만듭니다. 불연속함수를 적분하면 연속함수가 되고, 연속함수를 적분하면 미분가능한 함수가 됩니다. 이 매끄럽게 하는 성질이 248강 이후 합성곱에서 핵심 도구가 됩니다.
심화 3.∫0xe−t2dt처럼 원시함수를 초등함수로 적을 수 없는 적분이 있습니다. 그런 함수를 어떻게 다루는지 설명하세요.
풀이.초등함수란 다항식, 유리식, 지수, 로그, 삼각함수와 그 역함수를 유한 번의 사칙연산과 합성으로 만든 함수를 말합니다. 리우빌의 정리에 의해 다음 함수들의 원시함수는 초등함수가 아님이 증명되어 있습니다.
e−x2,xsinx,lnx1,1+x4
여기서 오해하기 쉬운 점을 분명히 해 둡니다. 원시함수가 존재하지 않는 것이 아닙니다. 피적분함수가 연속이므로 제1기본정리에 의해 A(x)=∫0xf가 버젓이 원시함수입니다. 다만 그것을 우리가 이미 가진 함수들의 조합으로 적을 수 없을 뿐입니다.
그래서 수학은 그 적분 자체에 이름을 붙입니다.
이름
정의
쓰이는 곳
오차함수 erf(x)
π2∫0xe−t2dt
129강의 정규분포
적분사인 Si(x)
∫0xtsintdt
신호처리
로그적분 li(x)
\displaystyle\int_{0}^{x}\frac{dt}
소수 분포
이름을 붙이는 것이 회피처럼 보일 수 있지만 그렇지 않습니다. sin이나 ln도 원래는 그렇게 도입되었습니다. 48강 심화 6에서 본 대로 lnx를 ∫1xtdt로 정의할 수 있고, 그 관점에서 보면 erf와 ln의 지위는 다르지 않습니다. 차이는 역사와 쓰임의 빈도뿐입니다.
그런데 둘째 항의 x2이 x→0에서 폭발합니다. xn=2nπ1을 잡으면 cos(1/xn2)=1이고 sin=0이므로
f′(xn)=−22nπ⟶−∞
입니다. f′은 [−1,1]에서 유계가 아닙니다.
48강에서 리만 적분의 정의는 유계함수에만 적용됩니다. 유계가 아니면 어떤 분할에서도 상합이 +∞가 되어 정의가 성립하지 않습니다. 따라서 f′은 리만 적분가능하지 않고
∫−11f′(x)dx
는 존재하지 않습니다.f(1)−f(−1)은 멀쩡히 계산되는데도 그렇습니다.
이것이 제2기본정리에 대해 말해 주는 바는 분명합니다. "F′=f이면 ∫abf=F(b)−F(a)"라는 명제는 f의 적분가능성이 전제되어야 합니다. 원시함수가 존재한다는 것만으로는 부족합니다. 그래서 정리의 서술에 "f가 연속"이라는 조건을 넣었고, 연속이면 48강 심화 2에 의해 적분가능성이 따라옵니다.
이 강의에서는 numpy만 씁니다. 기본정리는 코드로 확인하기에 좋습니다. 왼쪽은 수치적분으로, 오른쪽은 원시함수의 차이로 각각 구해 비교하면 정리가 주장하는 등식을 직접 검사할 수 있습니다.
import numpy as np
def mid(f, a, b, n=200000):
"""중점법칙으로 정적분을 근사합니다."""
x = np.linspace(a, b, n + 1)
return float(np.sum(f(0.5*(x[:-1] + x[1:])))*(b - a)/n)
# --- 문제 1: 넓이함수를 미분하면 원래 함수 ------------------------------
f = lambda t: t**2
A = lambda x: mid(f, 0.0, x, 20000)
h = 1e-5
for x in [0.5, 1.0, 2.0]:
print(x, round((A(x + h) - A(x - h))/(2*h), 8), round(x**2, 8))
# 0.5 0.25 0.25
# 1.0 1.0 1.0
# 2.0 4.0 4.0
# --- 문제 2: FTC2 검산 (수치적분 vs 원시함수의 차이) --------------------
F = lambda x: x**3/3
print(round(mid(f, 0.0, 1.0), 10), round(F(1) - F(0), 10)) # 0.3333333333 0.3333333333
print(round(mid(np.sin, 0.0, np.pi), 8),
round(-np.cos(np.pi) + np.cos(0.0), 8)) # 2.0 2.0
print(round(mid(np.exp, 0.0, 2.0), 8), round(np.e**2 - 1, 8)) # 6.3890561 6.3890561
# --- 문제 4: 1/x^2 을 [-1, 1] 에서 적분하려 하면 -----------------------
g = lambda t: 1/t**2
for n in [1001, 10001, 100001]:
print(n, "%.6e" % mid(g, -1.0, 1.0, n))
# 1001 6.483887e+29
# 10001 6.489722e+28
# 100001 1.622577e+27
Fw = lambda x: -1/x
print(Fw(1) - Fw(-1)) # -2.0 (원시함수를 그냥 대입한 잘못된 값)
# --- 문제 5: 위끝이 함수일 때 ------------------------------------------
G = lambda x: mid(np.sin, 0.0, x**2, 20000)
for x in [0.7, 1.3]:
print(x, round((G(x + h) - G(x - h))/(2*h), 6),
round(2*x*np.sin(x**2), 6))
# 0.7 0.658876 0.658876
# 1.3 2.581549 2.581549
# --- 심화 3: 초등 원시함수가 없는 적분 ----------------------------------
print(round(mid(lambda t: np.exp(-t**2), 0.0, 1.0), 10)) # 0.7468241328
print(round(float(np.sqrt(np.pi)/2*0.8427007929497149), 10)) # 0.7468241328
# --- 심화 5: L(x) = int_1^x dt/t 가 ln x -------------------------------
for x in [0.5, 2.0, np.e, 10.0]:
print(round(x, 6), round(mid(lambda t: 1/t, 1.0, x), 9),
round(float(np.log(x)), 9))
# 0.5 -0.693147181 -0.693147181
# 2.0 0.693147181 0.693147181
# 2.718282 1.0 1.0
# 10.0 2.302585093 2.302585093
# --- 심화 6: 도함수인데 유계가 아닌 예 ----------------------------------
x = np.array([1e-1, 1e-2, 1e-3, 1e-4])
dv = 2*x*np.sin(1/x**2) - (2/x)*np.cos(1/x**2)
print(["%.4g" % v for v in dv]) # ['-17.35', '190.4', '-1874', '7268']
print("%.4g" % float(np.max(np.abs(2/x)))) # 2e+04
실행하면 주석과 같은 값이 나옵니다. 다섯 곳을 짚어 둡니다.
첫째, 넓이함수를 수치미분한 값이 x=0.5,1,2에서 각각 0.25,1,4로 x2과 정확히 일치합니다. 제1기본정리가 주장하는 바를 그대로 본 것입니다. 적분을 한 뒤 미분했더니 원래 함수가 돌아왔습니다.
둘째, 세 개의 FTC2 검산이 모두 소수점 아래 여덟 자리까지 일치합니다. 왼쪽은 이십만 개의 직사각형을 더한 것이고 오른쪽은 두 수의 뺄셈 하나입니다. 같은 답을 얻는 데 드는 수고가 이만큼 차이 납니다. 이것이 기본정리의 실용적 가치입니다.
셋째, x21의 수치적분이 6.5×1029, 6.5×1028, 1.6×1027으로 나옵니다. 격자를 바꿀 때마다 값이 제멋대로 바뀌는데, 그 자체가 적분이 존재하지 않는다는 증거입니다. 값이 수렴해야 정적분이 정의되는데 수렴은커녕 크기가 몇 자릿수씩 오갑니다. 중점이 0에 얼마나 가까이 붙느냐가 격자에 따라 달라지기 때문입니다.
그 아래에서 원시함수를 그냥 대입하면 −2.0이라는 말끔한 값이 나옵니다. 말끔한 값이 나온다는 것이 답이 옳다는 뜻이 전혀 아니라는 점을 이 대비가 보여 줍니다.
넷째, 심화 5에서 L(x)가 네 값 모두에서 lnx와 소수점 아래 아홉 자리까지 일치합니다. x=0.5에서 음수가 나오는 것도 방향 반전 규약과 맞습니다. 적분으로 정의한 함수가 우리가 아는 로그와 같다는 것이 수치로 확인됩니다.
다섯째, 심화 6의 도함수 값이 x가 작아질수록 −17,190,−1874,7268로 부호를 바꾸며 커집니다. 상한 x2가 x=10−4에서 2×104이므로 유계가 아니라는 사실이 숫자로 드러납니다. 유계가 아니면 리만 적분의 정의 자체가 적용되지 않습니다.
코드로 할 수 없는 일도 분명히 해 둡니다. 수치적분이 어떤 값을 내놓는다고 해서 적분이 존재하는 것은 아닙니다. 셋째 항목이 정확히 그 경우입니다. 코드는 언제나 유한합을 계산하므로 무언가를 돌려주지만, 그 값이 수렴하는지는 사람이 따져야 합니다.
다음 50강부터는 원시함수를 실제로 찾는 기술을 배웁니다. 이 강의에서 계산이 쉬웠던 이유는 원시함수가 표에 있는 함수만 골랐기 때문입니다. ∫xex2dx처럼 조금만 복잡해져도 표를 뒤져서는 나오지 않습니다. 50강의 치환적분은 38강의 연쇄법칙을 거꾸로 읽는 기술이며, 미분 규칙 하나마다 대응하는 적분 기술이 있다는 것이 04단원 나머지의 구조입니다.