56강에서 두 가지를 얻었습니다. 함수의 테일러 급수를 쓰는 방법과, 그 급수가 원래 함수와 같다는 보장이 없다는 경고입니다. 이 그 반례였습니다.
그러면 언제 같은지 어떻게 확인합니까. 그리고 실제 계산에서는 무한히 더할 수 없으니 유한한 항까지만 쓸 텐데 그때 오차가 얼마입니까.
두 질문의 답이 하나입니다. 유한한 항까지 더하고 남은 부분을 나머지항이라 하고, 그것을 평가합니다. 나머지가 으로 가면 급수가 원함수와 같고, 나머지의 크기가 곧 근사의 오차입니다.
51강 심화 3에서 부분적분으로 나머지의 적분 표현을 이미 얻었습니다. 이 강의에서는 평균값 정리로 훨씬 쓰기 쉬운 형태를 만듭니다. 그러고 나면 미뤄 둔 빚 하나가 마저 갚아집니다. 47강 심화 1에서 뉴턴법의 이차 수렴을 "57강의 테일러 정리가 필요하다"며 남겨 두었는데, 여기서 완성됩니다.
이 강의의 사고방식은 수치 계산 전반의 기초입니다. 답을 모르는 채로 답의 오차를 평가하는 것이 그 분야의 핵심 기술이며, 96강 이후의 알고리즘 분석과 219강 이후의 학습률 설정에서 같은 논리가 반복됩니다.
문제. 가 번 미분가능할 때 다음을 봅니다.
(1) 차 테일러 다항식 을 정의하고 과 가 에서 무엇을 공유하는지 쓰세요.
(2) 일 때 를 42강의 정리로 나타내세요.
(3) 일반 에서 나머지가 어떤 꼴일지 추측하세요.
생각의 실마리. (2)가 열쇠입니다. 이므로 인데, 이것은 42강의 평균값 정리가 정확히 다루는 양입니다. (3)에서는 그 결과의 모양을 보고 차로 확장해 봅니다.
풀이. (1) 56강의 계수를 차까지만 쓴 것입니다.
을 번 미분하고 를 넣으면 가 나옵니다(). 따라서 과 는 에서 계 도함수까지 모두 같습니다. 그것이 이 다항식을 고른 이유입니다.
(2) 이므로
인 가 와 사이에 존재합니다. 42강의 평균값 정리입니다.
(3) 의 결과를 보면 계 도함수를 어떤 중간점에서 평가하고 을 곱한 꼴입니다. 계수에 이 붙을 것도 짐작됩니다. 테일러 계수에 계승이 들어가기 때문입니다.
이 문제에서 배우는 것: 테일러 정리.
테일러 정리(라그랑주 나머지). 가 와 를 포함하는 구간에서 번 미분가능하면, 와 사이의 어떤 가 있어
입니다. 을 나머지항이라 합니다.
증명은 심화 1에서 하고, 여기서는 이 식을 읽는 법에 집중합니다.
| 요소 | 뜻 |
|---|---|
| P_ | 계산할 수 있는 다항식입니다 |
| R_ | 버린 부분이며 오차입니다 |
| 어디인지 모릅니다. 존재만 압니다 | |
| (x-c)^ | 가 에 가까울수록 작아집니다 |
| 차수가 오를수록 작아집니다 |
의 위치를 모른다는 점이 결정적입니다. 알면 오차를 정확히 계산할 수 있겠지만 그러면 를 이미 아는 셈입니다. 대신 우리가 하는 일은 의 최댓값으로 덮는 것입니다.
이 부등식이 이 강의의 주력 도구입니다.
이 평균값 정리라는 점도 기억해 둘 값이 있습니다. 테일러 정리는 평균값 정리를 고차로 확장한 것이며, 03단원의 42강이 여기까지 뻗어 있습니다. 44강의 접선 부등식도 의 특수한 경우입니다.
바로 확인 1.
확인 1-1. 의 차 매클로린 다항식을 쓰세요.
답. 입니다.
확인 1-2. 과 가 에서 공유하는 것을 쓰세요.
답. 계 도함수까지의 값이 모두 같습니다.
확인 1-3. 나머지항의 에 대해 우리가 아는 것과 모르는 것을 쓰세요.
답. 와 사이에 존재한다는 것은 알지만 정확한 위치는 모릅니다. 그래서 최댓값으로 덮어 상한만 얻습니다.
문제. 를 으로 근사합니다.
(1) 오차의 상한을 구하세요.
(2) 에서 상한을 계산하고 실제 오차와 비교하세요.
(3) 왜 이 아니라 이 상한에 나옵니까?
생각의 실마리. 의 고계도함수는 과 이 반복되므로 크기가 언제나 이하입니다. 그러니 로 잡을 수 있습니다. (3)에서는 과 가 같다는 사실을 이용합니다.
풀이. (1) 의 모든 고계도함수가 또는 이므로 입니다. 로 두면
입니다.
(2) 계산합니다.
| 실제 오차 | 상한 \dfrac{x^{5}} | |
|---|---|---|
| 8.331\times 10^ | 8.333\times 10^ | |
| 2.589\times 10^ | 2.604\times 10^ | |
| 8.138\times 10^ | 8.333\times 10^ |
세 경우 모두 실제 오차가 상한보다 작으면서 매우 가깝습니다. 상한이 헐겁지 않다는 뜻입니다.
(3) 의 매클로린 급수에 짝수 차수 항이 없으므로 의 계수가 입니다. 따라서
입니다. 같은 다항식을 차 근사로 보면 의 상한을 쓸 수 있고, 그쪽이 보다 훨씬 작습니다. 공짜로 한 차수를 벌었습니다.
이 문제에서 배우는 것: 오차 상한을 쓰는 법.
절차를 정리합니다.
| 단계 | 할 일 |
|---|---|
| 1 | 쓰려는 다항식의 최고 차수를 확인합니다 |
| 2 | 계수가 인 다음 항이 있으면 을 그만큼 올립니다 |
| 3 | 에서 의 최댓값 을 잡습니다 |
| 4 | 을 계산합니다 |
3단계가 실전에서 가장 까다롭습니다. 최댓값을 정확히 구할 필요는 없고 넉넉한 상한이면 충분합니다. 과 은 이고, 는 구간의 오른쪽 끝값이며, 다항식은 유한 차수 뒤로 입니다.
(2)의 표에서 값이 어떻게 변하는지 보십시오. 가 배 커질 때 오차는 약 배 커집니다. 오차가 에 비례하기 때문이며, 이것이 근사의 유효 범위를 결정합니다. 가 작은 곳에서는 놀랄 만큼 정확하고 가 커지면 급격히 나빠집니다.
라는 근사도 같은 방식으로 평가됩니다. 이므로 오차가 이하이며, 에서 입니다. 물리학에서 작은 각도에 이 근사를 쓰는 근거가 이 부등식입니다.
바로 확인 2.
확인 2-1. 의 오차 상한을 구하세요.
답. 이므로 을 쓰면 입니다.
확인 2-2. 를 에서 쓸 때 오차 상한을 구하세요.
답. 이므로 이며 에서 입니다.
확인 2-3. 의 근사에서 한 차수를 공짜로 버는 이유를 쓰세요.
답. 짝수 차수 계수가 이라 과 가 같으므로 더 높은 의 상한을 쓸 수 있기 때문입니다.
문제. 다음을 정하세요.
(1) 을 오차 이하로 계산하려면 차수가 얼마여야 합니까?
(2) 을 같은 정밀도로 계산하려면 얼마입니까?
(3) 차수를 하나 올릴 때 오차가 얼마나 줄어드는지 (1)의 경우로 확인하세요.
생각의 실마리. 문제 2와 반대 방향입니다. 오차를 먼저 정하고 그것을 만족하는 을 찾습니다. 부등식 을 에 대해 푸는데, 계승이 있어 대수적으로는 안 풀리므로 표를 만들거나 시행착오로 찾습니다.
풀이. (1) 이고 이므로 조건은
입니다. 계승을 계산합니다.
| 4.79\times 10^ | |
| 6.23\times 10^ | |
| 8.72\times 10^ |
에서 처음으로 을 넘으므로 , 즉 ****입니다. 실제로는 의 짝수 항이 이라 홀수 항 일곱 개만 계산하면 됩니다.
(2) 이므로 조건은
입니다. 이므로 역시 입니다. 이 에서 로 커졌지만 계승의 증가가 압도해 차수가 같습니다.
(3) 차수를 에서 로 올리면 상한이 배가 됩니다. 이면 배입니다. 실제 값으로 확인합니다.
| 실제 오차 | 상한 | |
|---|---|---|
| 8.138\times 10^ | 8.333\times 10^ | |
| 1.957\times 10^ | 1.984\times 10^ | |
| 2.731\times 10^ | 2.756\times 10^ | |
| 2.489\times 10^ | 2.505\times 10^ |
두 차수마다 오차가 대략 배씩 줄어듭니다. 계승이 빠르게 커지기 때문입니다.
이 문제에서 배우는 것: 차수 결정과 수렴 속도.
필요 차수 결정. 을 만족하는 가장 작은 을 찾습니다.
이 계산이 실무에서 중요한 이유는 미리 비용을 알 수 있기 때문입니다. 계산을 시작하기 전에 항이 몇 개 필요한지 알면 자원을 배분할 수 있습니다. 47강에서 이분법의 반복 횟수를 미리 계산한 것과 같은 사고방식입니다.
수렴 속도를 정리합니다.
| 요인 | 오차에 미치는 영향 |
|---|---|
| 를 절반으로 | 오차가 배 |
| 을 하나 올림 | 오차가 약 배 |
| 이 커짐 | 오차가 비례해 커짐 |
두 방법 중 어느 쪽이 효율적인지는 상황에 따라 다릅니다. 55강 문제 5에서 본 대로 중심을 계산할 점 가까이 옮기면 가 작아져 매우 빨라지므로, 가능하면 그쪽을 먼저 고려합니다.
을 올릴 때의 이득이 배씩 커진다는 점도 눈여겨보십시오. 차수가 높아질수록 항 하나를 더 넣는 효과가 커집니다. 처음에는 천천히 좋아지다가 나중에 급격히 좋아지는 것이 계승 때문에 생기는 특징입니다.
바로 확인 3.
확인 3-1. 를 오차 이하로 계산할 차수를 구하세요.
답. 입니다. 에서 이고 에서 , 에서 이므로 입니다.
확인 3-2. 를 절반으로 줄이면 차 근사의 오차가 몇 배가 됩니까?
답. 배가 됩니다.
확인 3-3. 차수를 미리 계산해 두는 것이 왜 유용합니까?
답. 계산을 시작하기 전에 필요한 항의 수, 즉 비용을 알 수 있어 자원을 배분할 수 있기 때문입니다.
문제. 다음을 증명하세요.
(1) 모든 실수 에서 입니다.
(2) 모든 실수 에서 입니다.
(3) 이 논법이 에는 왜 통하지 않습니까?
생각의 실마리. 56강에서 이 급수들을 썼지만 원함수와 같다는 것은 증명하지 않았습니다. 에서 일 때 이면 이고, 의 극한이 곧 테일러 급수입니다. 그러니 나머지가 으로 감을 보이면 됩니다.
풀이. (1) 를 고정합니다. 이고 가 과 사이에 있으므로 입니다. 따라서
입니다. 는 과 무관한 상수이고, 45강의 성장 위계에 의해 계승이 어떤 거듭제곱보다 빠르므로 입니다. 그러므로 이고 급수가 로 수렴합니다.
(2) 의 고계도함수는 크기가 이하이므로
입니다. 같은 결론입니다.
(3) 통하지 않습니다. 에서는 이므로
입니다. 나머지가 함수 자체이므로 을 아무리 키워도 줄어들지 않습니다. 상한 부등식을 세워 봐도 의 최댓값이 에 따라 폭발적으로 커져 아무 정보도 주지 못합니다.
이 문제에서 배우는 것: 나머지가 수렴의 열쇠입니다.
테일러 급수의 수렴 판정. 어떤 구간의 모든 에서 이면, 그 구간에서 테일러 급수가 로 수렴합니다.
56강에서 미뤄 둔 문제가 여기서 해결됩니다.
| 56강에서 | 57강에서 |
|---|---|
| 급수를 썼습니다 | 그 급수가 원함수와 같음을 증명합니다 |
| 계수가 유일함을 보였습니다 | 수렴을 나머지로 보장합니다 |
| 반례가 있다고 경고했습니다 | 반례에서 왜 실패하는지 밝힙니다 |
수렴을 보이는 실용적인 방법은 고계도함수가 균등하게 유계인지 보는 것입니다.
| 함수 | 의 크기 | 결과 |
|---|---|---|
| , | 이하로 균등 유계 | 모든 에서 수렴 |
| e^ | 구간에서 이하 | 모든 에서 수렴 |
| \dfrac{1} | 로 커짐 | 에서만 |
| 통제되지 않음 | 수렴하지만 다른 함수로 |
계승이 분모에 있으므로 도함수가 계승보다 느리게 커지면 이깁니다. 세 번째 줄에서 도함수가 정확히 규모로 커지는데, 인수가 에서는 등비적으로 통제되어 수렴하고 밖에서는 아닙니다. 55강에서 얻은 과 정확히 맞습니다.
바로 확인 4.
확인 4-1. 의 테일러 급수가 모든 에서 수렴함을 보이세요.
답. 고계도함수의 크기가 이하이므로 입니다.
확인 4-2. 을 보이는 데 45강의 어떤 결과가 쓰입니까?
답. 성장 위계입니다. 계승이 어떤 거듭제곱보다 빠르게 커지므로 입니다.
확인 4-3. 에서 나머지항이 어떻게 됩니까?
답. 이므로 이고, 을 키워도 전혀 줄어들지 않습니다.
문제. 근사에는 두 가지 극한이 있습니다.
(1) 를 고정하고 로 보내는 것은 무엇을 뜻합니까?
(2) 을 고정하고 로 보내는 것은 무엇을 뜻합니까?
(3) 첫째 극한이 실패해도 둘째가 유용한 경우가 있습니까?
생각의 실마리. 두 극한은 성격이 다릅니다. (1)은 급수의 수렴이고 (2)는 근사의 정확도 차수입니다. (3)에서는 발산하는데도 쓸모 있는 전개가 있는지 생각해 봅니다.
풀이. (1) 문제 4의 상황입니다. 이면 테일러 급수가 함수로 수렴하고, 항을 충분히 더하면 원하는 정밀도에 도달합니다. 급수의 관점입니다.
(2) 을 고정하면 의 크기가 에 비례합니다. 즉
입니다. 근처에서 얼마나 잘 맞는지를 재는 관점이며, 급수가 수렴하지 않아도 이 진술은 유효합니다.
(3) 있습니다. 급수가 발산하는데도 처음 몇 항이 훌륭한 근사를 주는 경우가 실제로 흔합니다. 그런 전개를 점근 전개라 하며, 스털링 근사가 대표적입니다. 심화 5에서 다룹니다.
이 문제에서 배우는 것: 두 극한의 구별.
| 수렴급수 | 점근 전개 | |
|---|---|---|
| 극한 | , 고정 | , 고정 |
| 항을 늘리면 | 좋아집니다 | 어느 시점부터 나빠집니다 |
| 최적 차수 | 없습니다(많을수록 좋음) | 있습니다 |
| 예 | 의 급수 | 스털링 근사 |
"항을 더 더하면 항상 좋아진다"는 것이 당연하지 않습니다. 점근 전개에서는 최적의 차수가 있고 그것을 넘으면 오히려 나빠집니다.
이 구별이 실무에서 중요한 이유가 하나 더 있습니다. 수렴급수라도 유한한 정밀도의 계산에서는 항을 무한히 더할 수 없고, 어느 시점부터 반올림 오차가 절단 오차를 압도합니다. 그 지점이 실질적인 최적 차수가 되며, 심화 6에서 극적인 예를 봅니다.
정리하면 오차에 두 종류가 있습니다.
| 오차 | 원인 | 줄이는 법 |
|---|---|---|
| 절단 오차 | 급수를 잘라 버린 부분 | 항을 더 더합니다 |
| 반올림 오차 | 유한한 자릿수 | 계산 방식을 바꿉니다 |
두 오차가 반대 방향으로 움직입니다. 항을 더할수록 절단 오차는 줄지만 연산 횟수가 늘어 반올림 오차가 쌓입니다. 최적점은 둘이 균형을 이루는 곳입니다.
바로 확인 5.
확인 5-1. 이 뜻하는 바를 쓰세요.
답. 가 에 가까워질 때 오차가 에 비례하는 속도로 줄어든다는 뜻입니다.
확인 5-2. 점근 전개가 수렴급수와 다른 점을 쓰세요.
답. 항을 늘리면 어느 시점부터 오히려 나빠지므로 최적 차수가 존재합니다.
확인 5-3. 절단 오차와 반올림 오차가 반대 방향으로 움직인다는 말의 뜻을 쓰세요.
답. 항을 더할수록 절단 오차는 줄지만 연산이 늘어 반올림 오차가 쌓인다는 뜻입니다.
| 개념 | 식 |
|---|---|
| 테일러 다항식 | P_{N}(x)=\displaystyle\sum_{n=0}^{N}\frac{f^{(n)}(c)}{n!}(x-c)^ |
| 라그랑주 나머지 | R_{N}(x)=\dfrac{f^{(N+1)}(\xi)}{(N+1)!}(x-c)^ |
| 오차 상한 | \lvert R_{N}\rvert\le\dfrac{M}{(N+1)!}\lvert x-c\rvert^ |
| 적분형 나머지 |
| 함수 | 으로 쓸 값 |
|---|---|
| , | |
| e^ | 구간의 오른쪽 끝값 |
| 다항식 | 차수를 넘으면 |
| \dfrac{1} |
| 자주 쓰는 근사 | 오차 상한 |
|---|---|
| \dfrac{\lvert x\rvert^{3}} | |
| \sin x\approx x-\dfrac{x^{3}} | \dfrac{\lvert x\rvert^{5}} |
| \cos x\approx 1-\dfrac{x^{2}} | \dfrac{\lvert x\rvert^{4}} |
| \dfrac{e^{\lvert x\rvert}x^{2}} | |
| 자주 하는 실수 | 바로잡기 |
|---|---|
| 의 값을 안다고 여깁니다 | 존재만 알고 최댓값으로 덮습니다 |
| 계수가 인 항을 안 활용합니다 | 을 올려 더 좋은 상한을 씁니다 |
| 수렴만 확인하고 오차를 안 봅니다 | 필요 차수를 미리 계산합니다 |
| 항을 늘리면 항상 좋아진다고 여깁니다 | 반올림 오차가 쌓입니다 |
문제 6. 의 차 매클로린 다항식을 쓰세요.
답. 입니다.
문제 7. 의 차 매클로린 다항식을 쓰세요.
답. 입니다.
문제 8. 를 로 근사할 때 오차 상한을 구하세요.
답. 입니다.
문제 9. 의 오차 상한을 구하세요.
답. 입니다.
문제 10. 를 차 다항식으로 근사할 때 오차 상한을 구하세요.
답. 입니다.
문제 11. 테일러 정리에서 인 경우가 어떤 정리입니까?
답. 42강의 평균값 정리입니다.
문제 12. 을 오차 이하로 계산할 차수를 구하세요.
답. 에서 이므로 , 즉 입니다.
문제 13. 을 로 근사할 때 오차 상한을 구하세요. 단 입니다.
답. 이고 에서 최댓값이 이므로 입니다.
문제 14. 테일러 급수가 원함수로 수렴함을 보이는 방법을 쓰세요.
답. 나머지항 이 에서 으로 감을 보입니다.
문제 15. 의 급수가 모든 실수에서 수렴하는 근거를 쓰세요.
답. 고계도함수가 이하로 유계이고 계승이 거듭제곱보다 빠르기 때문입니다.
문제 16. 절단 오차와 반올림 오차를 구별하세요.
답. 절단 오차는 급수를 잘라 버린 부분이고 반올림 오차는 유한한 자릿수 때문에 생깁니다.
문제 17. 를 절반으로 줄이면 차 근사의 오차가 몇 배가 됩니까?
답. 배입니다.
문제 18. 근사에서 중심을 계산할 점 가까이 잡는 것이 유리한 이유를 쓰세요.
답. 오차가 에 비례하므로 거리를 줄이면 오차가 거듭제곱으로 작아지기 때문입니다.
심화 1. 테일러 정리의 라그랑주 나머지를 롤의 정리로 증명하세요.
풀이. 인 경우를 봅니다. 나머지를 미지수로 두고 그 값이 위의 꼴임을 보이는 방식입니다.
를 고정하고 상수 를
이 성립하도록 정합니다. 이므로 가 유일하게 결정됩니다. 목표는 인 를 찾는 것입니다.
보조함수를 만듭니다. 를 변수로 하여
로 둡니다. 를 그렇게 골랐으므로 입니다. 또 를 넣으면 각 항이 상쇄되어 입니다.
더 나아가 를 번 미분하고 를 넣으면, 과 가 에서 계까지 도함수를 공유하므로
입니다.
이제 롤의 정리(42강)를 반복 적용합니다.
| 단계 | 근거 | 결론 |
|---|---|---|
| 롤 | 인 | |
| 롤 | 인 | |
| 롤 | 인 |
번 적용했습니다. 한편 를 번 미분하면 은 차라 사라지고
입니다. 에서
이고 증명이 끝납니다.
롤의 정리를 번 반복하는 것이 이 증명의 전부입니다. 42강이 03단원을 떠받쳤는데 05단원의 마지막 정리까지 뻗어 있습니다. 이면 롤을 한 번 쓰는 것이고 그것이 평균값 정리의 증명 그 자체입니다.
심화 2. 51강 심화 3에서 얻은 적분형 나머지와 라그랑주 형태의 관계를 밝히세요.
풀이. 51강 심화 3에서 부분적분을 반복해 다음을 얻었습니다.
이것을 라그랑주 형태로 바꿉니다. 이 연속이라 가정하면 48강의 적분의 평균값 정리를 확장한 형태를 쓸 수 있습니다. 이 에서 부호를 바꾸지 않으므로, 어떤 가 있어
입니다. 오른쪽 적분은 직접 계산됩니다.
따라서
으로 라그랑주 형태가 나옵니다.
두 형태를 비교합니다.
| 적분형 | 라그랑주형 | |
|---|---|---|
| 정보량 | 나머지의 정확한 값 | 존재하는 로 표현 |
| 가정 | 이 적분가능 | 이 존재 |
| 쓰기 | 적분을 계산해야 합니다 | 최댓값으로 덮으면 됩니다 |
| 오차 부호 | 알 수 있습니다 | 알기 어렵습니다 |
적분형이 정보가 더 많고 라그랑주형이 쓰기 쉽습니다. 실무에서는 상한만 필요할 때가 대부분이라 라그랑주형을 쓰고, 오차의 부호까지 알아야 하면 적분형으로 돌아갑니다.
44강 심화 1의 접선 부등식을 다시 떠올려 보십시오. 의 적분형에서 이면 적분이 양수라 가 나왔습니다. 라그랑주형으로도 같은 결론이 나오지만 적분형 쪽이 더 직접적입니다.
심화 3. 에서 라그랑주 나머지가 왜 으로 가지 않는지 부등식으로 설명하세요.
풀이. 상한 부등식은
입니다. 문제 4의 함수들에서는 이 에 무관하거나 천천히 커져 계승이 이겼습니다.
에서는 사정이 다릅니다. 56강 심화 2에서 본 대로
이고 의 차수가 에 따라 빠르게 올라갑니다. 실제로 의 차수는 대략 이며 계수도 커집니다. 에서 이 무한대까지 가므로 이 에 대해 폭발적으로 커집니다.
정확히 말하면 이렇습니다. 라는 사실을 이미 알고 있으므로
이어야 합니다. 즉
이고, 오른쪽이 계승 속도로 커지므로 도 그만큼 커질 수밖에 없습니다. 상한 부등식이 성립하기는 하지만 아무 정보도 주지 못합니다.
여기서 교훈을 얻습니다. 상한 부등식은 언제나 참이지만 유용한지는 별개입니다. 이 통제되지 않으면 부등식이 자명하게 성립하며 수렴에 대해 아무 말도 하지 않습니다. 문제 4에서 "고계도함수가 균등하게 유계인가"를 먼저 확인한 이유가 여기 있습니다.
심화 4. 47강 심화 1에서 미룬 뉴턴법의 이차 수렴을 테일러 정리로 완성하세요.
풀이. 47강에서 뉴턴 사상 를 정의하고 , 을 보였습니다. 그때 일차 수렴까지만 증명하고 이차 수렴은 "테일러 정리가 필요하다"며 남겨 두었습니다.
이제 에 의 테일러 정리를 적용합니다. 중심을 로 잡으면 과 사이의 어떤 가 있어
입니다. 이고 이며 이므로 일차항이 사라집니다.
오차가 정확히 제곱으로 줄어듭니다. 이것이 이차 수렴의 증명입니다.
상수도 구합니다. 을 한 번 더 미분하면
이고 에서 이므로 가 든 항이 모두 사라져
입니다. 이면 이므로
입니다. 47강 문제 5에서 예고한 상수가 정확히 이것입니다.
로 확인합니다. , , 이므로
입니다. 검산에서 이 로 이 값에 다가갑니다. 47강에 남긴 빚이 소수 여섯 자리까지 확인되며 갚아집니다.
이 분모에 있다는 점도 47강 심화 2와 이어집니다. 중근에서는 이라 이 상수가 정의되지 않고, 그것이 이차 수렴이 무너지는 이유입니다.
심화 5. 점근 전개의 예로 스털링 근사 을 소개하고, 수렴급수와 무엇이 다른지 설명하세요.
풀이. 51강 심화 1에서 월리스 공식을 유도했고 그것이 스털링 근사의 상수에 쓰인다고 예고했습니다. 여기서 그 근사를 봅니다.
스털링 근사. 에서
입니다.
검산에서 에 비가 , 에 , 에 으로 에 다가갑니다. 이 작아도 오차가 몇 퍼센트뿐이라 실용적입니다.
더 정밀한 전개도 있습니다.
그런데 이 급수는 발산합니다. 어떤 을 고정하고 항을 계속 더하면 어느 시점부터 항이 커지기 시작해 결국 무한대로 갑니다.
그런데도 쓸모가 있습니다. 처음 몇 항이 훌륭한 근사를 주기 때문입니다. 에서 두 항까지 쓰면 오차가 수준으로 떨어집니다. 최적 차수는 대략 에 비례하며 그 지점의 오차가 규모입니다.
수렴급수와의 차이를 정리합니다.
| 수렴급수 | 점근 전개 | |
|---|---|---|
| 기호 | ||
| 보장하는 것 | 에서 수렴 | 에서 상대오차 |
| 항을 늘리면 | 계속 좋아집니다 | 최적점 뒤로 나빠집니다 |
| 실용성 | 항이 많이 필요할 수 있습니다 | 몇 항으로 충분할 때가 많습니다 |
두 개념이 서로를 포함하지 않습니다. 수렴하는데 실용적이지 않은 급수도 있고(51강의 월리스 곱), 발산하는데 실용적인 전개도 있습니다.
스털링 근사는 이 커리커럼에서 여러 번 쓰입니다. 143강의 중심극한정리, 178강의 엔트로피와 조합 계산, 96강 이후 알고리즘의 복잡도 분석에서 계승을 다룰 때마다 필요합니다.
심화 6. 급수로 를 계산할 때 가 큰 음수이면 왜 무너지는지 보이고, 해결책을 제시하세요.
풀이. 의 급수는 모든 에서 수렴합니다. 그러니 이론적으로는 문제가 없습니다. 그런데 실제로 계산해 보면 참담합니다.
검산에서 항 이백 개를 더한 결과입니다.
| 급수 계산 | 참값 | |
|---|---|---|
| 6.737947\times 10^ | 6.737947\times 10^ | |
| 7.450581\times 10^ | 2.061154\times 10^ | |
| 4.882861\times 10^ | 9.357623\times 10^ |
에서 열 자릿수가 틀렸습니다. 답이 규모인데 이 나왔습니다.
원인은 자릿수 소실입니다. 45강 검산에서 본 것과 같은 현상이 훨씬 극단적으로 나타납니다. 일 때 항의 크기를 봅니다.
이 가장 큰 항이며, 부호가 번갈아 나타나는 항들이 서로 상쇄되어 이라는 답이 나와야 합니다. 규모의 수들이 상쇄되어 을 만들려면 유효숫자가 자리 필요한데 배정밀도는 자리뿐입니다.
해결책은 상쇄를 피하는 것입니다.
로 계산하면 의 급수는 모든 항이 양수라 상쇄가 없습니다. 검산에서 이 방법이 세 경우 모두 참값과 정확히 일치합니다.
일반 원리를 정리합니다.
부호가 번갈아 나타나는 급수에서 큰 항들이 상쇄되어 작은 답을 만들면, 유효숫자를 잃습니다. 상쇄가 없는 등가 계산으로 바꾸십시오.
이 문제는 수치 계산 전반에서 나타납니다.
| 위험한 계산 | 안전한 대안 |
|---|---|
| 의 급수 ( 큼) | 1/e^ |
| ( 작음) | |
| 이차방정식의 근 공식 | 상쇄되는 쪽을 곱셈 관계로 |
수학적으로 같은 식이 수치적으로는 전혀 다릅니다. 이 구별이 수치해석의 출발점이며, 219강 이후 신경망 학습에서 로그합지수 트릭을 쓰는 이유도 같습니다.
이 강의에서는 numpy만 씁니다. 오차 평가는 검산이 특히 명확합니다. 이론이 주는 상한과 실제 오차를 나란히 놓고 부등식이 성립하는지 보면 됩니다.
import numpy as np
import math
def invfact(N):
"""1/n! 을 곱셈만으로 만듭니다."""
c = np.ones(N)
for k in range(1, N):
c[k] = c[k-1]/k
return c
IF = invfact(200)
# --- 문제 2: sin x 의 3차 근사, 실제 오차와 이론 상한 -------------------
print("x 실제 오차 상한 |x|^5/120")
for x in [0.1, 0.5, 1.0]:
approx = x - x**3/6
print(x, "%.6e %.6e" % (abs(np.sin(x) - approx), x**5/120))
# 0.1 8.331349e-08 8.333333e-08
# 0.5 2.588719e-04 2.604167e-04
# 1.0 8.137651e-03 8.333333e-03
# --- 문제 3: 차수를 올리면 오차가 얼마나 줄어드는가 ---------------------
x = 1.0
print("N sin 근사 오차 상한")
for N in [3, 5, 7, 9]:
k = np.arange((N + 1)//2)
approx = float(np.sum((-1.0)**k*x**(2*k + 1)*IF[2*k + 1]))
print(N, "%.6e %.6e" % (abs(np.sin(x) - approx), x**(N + 2)*IF[N + 2]))
# 3 8.137651e-03 8.333333e-03
# 5 1.956819e-04 1.984127e-04
# 7 2.730840e-06 2.755732e-06
# 9 2.489228e-08 2.505211e-08
# --- 문제 4: e^x 의 나머지는 0 으로 갑니다 -------------------------------
for x in [1.0, 5.0]:
print(x, ["%.3e" % abs(np.exp(x) - float(np.sum(IF[:N]*x**np.arange(N))))
for N in [5, 10, 20]])
# 1.0 ['9.948e-03', '3.029e-07', '4.441e-16']
# 5.0 ['8.304e+01', '4.724e+00', '5.123e-05']
# --- 심화 4: 뉴턴법의 이차 수렴 상수 (47강에서 미룬 것) ------------------
xs = [1.0]
for _ in range(5):
v = xs[-1]; xs.append(v - (v**2 - 2)/(2*v))
e = [abs(v - np.sqrt(2)) for v in xs]
for i in range(1, 4):
print(i, "%.4e %.4e" % (e[i], e[i+1]), "%.6f" % (e[i+1]/e[i]**2))
print("이론값 f''/(2f') = %.6f" % (2/(2*2*np.sqrt(2))))
# 1 8.5786e-02 2.4531e-03 0.333333
# 2 2.4531e-03 2.1239e-06 0.352941
# 3 2.1239e-06 1.5947e-12 0.353522
# 이론값 f''/(2f') = 0.353553
# --- 심화 5: 스털링 근사 -------------------------------------------------
for n in [5, 10, 50]:
st = np.sqrt(2*np.pi*n)*(n/np.e)**n
print(n, "%.6e %.6e" % (float(st), float(math.factorial(n))),
"%.6f" % (st/math.factorial(n)))
# 5 1.180192e+02 1.200000e+02 0.983493
# 10 3.598696e+06 3.628800e+06 0.991704
# 50 3.036345e+64 3.041409e+64 0.998335
# --- 심화 6: 상쇄가 계산을 무너뜨립니다 ---------------------------------
n = np.arange(200)
print("x 급수 직접 참값 1/e^{-x} 로 계산")
for x in [-5.0, -20.0, -30.0]:
naive = float(np.sum(IF*x**n))
recip = 1.0/float(np.sum(IF*(-x)**n))
print(x, "%.6e %.6e %.6e" % (naive, np.exp(x), recip))
# -5.0 6.737947e-03 6.737947e-03 6.737947e-03
# -20.0 7.450581e-09 2.061154e-09 2.061154e-09
# -30.0 4.882861e-04 9.357623e-14 9.357623e-14
실행하면 주석과 같은 값이 나옵니다. 다섯 곳을 짚어 둡니다.
첫째, 문제 2의 세 경우 모두 실제 오차가 상한보다 작으면서 매우 가깝습니다. 에서 과 은 세 자리까지 같습니다. 상한이 헐겁지 않다는 뜻이며, 라그랑주 나머지가 실용적인 이유입니다.
둘째, 차수를 올릴 때 오차가 로 두 차수마다 배씩 줄어듭니다. 계승의 위력이 숫자로 드러납니다. 상한도 같은 비율로 줄어들어 이론과 실제가 나란히 갑니다.
셋째, 의 나머지가 에서는 스무 항 만에 까지 떨어져 배정밀도의 한계에 도달합니다. 에서는 다섯 항에서 아직 오차가 으로 참값보다 크지만 스무 항에서 로 줄어듭니다. 가 클수록 더 많은 항이 필요하지만 결국 수렴합니다.
넷째, 심화 4의 결과가 이 강의에서 가장 값진 확인입니다. 이 로 이론값 에 다가갑니다. 47강에서 "테일러 정리가 필요하다"며 미룬 이차 수렴 상수가 소수 다섯 자리까지 맞습니다. 05단원의 도구로 03단원의 빚을 갚은 셈입니다.
다섯째, 심화 6의 상쇄가 극적입니다. 에서 급수를 곧이곧대로 더하면 이 나오는데 참값은 입니다. 열 자릿수가 틀렸습니다. 반면 으로 계산하면 정확히 맞습니다. 수학적으로 같은 식이 수치적으로 전혀 다르다는 사실이 이보다 선명한 예는 드뭅니다.
코드로 할 수 없는 일도 분명히 해 둡니다. 오차 상한은 정리에서 나오는 것이지 계산에서 나오지 않습니다. 코드는 실제 오차를 보여 줄 뿐이고, 그것이 언제나 상한보다 작다는 보장은 테일러 정리가 줍니다. 그리고 참값을 모르는 실제 상황에서는 실제 오차를 잴 수조차 없으므로 상한이 유일한 근거입니다.
정답.
| 기호 | 읽는 법 | 뜻 |
|---|---|---|
| P_ | 테일러 다항식 | 차까지 자른 급수입니다 |
| R_ | 나머지항 | 버린 부분이며 오차입니다 |
| 크사이 | 존재만 아는 중간점입니다 | |
| 라그랑주 나머지 | Lagrange remainder | 도함수 하나로 적은 형태입니다 |
| 적분형 나머지 | integral remainder | 적분으로 적은 정확한 형태입니다 |
| 절단 오차 | truncation error | 급수를 잘라 생기는 오차입니다 |
| 반올림 오차 | round-off error | 유한한 자릿수 때문에 생깁니다 |
| 자릿수 소실 | catastrophic cancellation | 가까운 두 수를 빼며 유효숫자를 잃습니다 |
| 점근 전개 | asymptotic expansion | 발산해도 처음 몇 항이 유용합니다 |
| 점근적으로 같음 | 비가 로 수렴합니다 |
이 강의로 05단원 급수와 근사가 끝납니다. 54강에서 무한합에 의미를 주고, 55강에서 변수를 넣어 함수로 만들고, 56강에서 어떤 함수든 급수로 적는 법을 얻었으며, 이 강의에서 그 급수가 정말 그 함수인지 확인하는 도구를 갖췄습니다. 함수를 계수의 수열로 바꾸는 관점이 완성되었습니다.
다음 06단원에서는 그 관점을 복소수로 확장합니다. 56강 심화 3에서 형식적으로 계산해 본 가 58강에서 정식 정리가 되고, 그 위에서 59강의 푸리에 급수가 세워집니다. 테일러가 함수를 거듭제곱으로 분해했다면 푸리에는 진동으로 분해하며, 그 도구가 143강의 중심극한정리부터 410강의 스펙트로그램까지 쓰입니다.