그리고 점 근처에서 곡선과 접선이 거의 겹치는 것을 확인했습니다. x=a+h 로 두면, 곧 a 에서 h 만큼 옮긴 자리를 보면
f(a+h)≈f(a)+f′(a)h
이것이 이미 근사입니다. 곡선의 값을 접선의 값으로 바꿔 읽는 이 어림을 1차 근사라고 합니다. 오른쪽은 h 에 대한 1차 다항식이라 더하고 곱하기만 하면 값이 나오고, 미분할 수 있는 함수라면 무엇이든 이 식으로 흉내 낼 수 있습니다.
f(x)=ex 에 a=0 을 잡아 봅니다. f(0)=1 이고, 32번 글에서 ex 은 미분해도 그대로였으므로 f′(0)=e0=1 입니다.
eh≈1+h
h=0.1 을 넣으면 1.1입니다. 참값은 1.1051709이니 소수 둘째 자리까지 맞습니다. 꽤 가깝지만 셋째 자리부터 어긋납니다.
도함수의 정의
1차 근사는 새 공식이 아닙니다. 도함수의 정의를 거꾸로 적은 것입니다. 31번 글에서 도함수는 평균변화율의 극한이었습니다.
f′(a)=limh→0hf(a+h)−f(a)
극한은 h 를 0에 한없이 가깝게 할 때 몫이 다가가는 값이었으니, h 가 작기만 하면 몫은 이미 f′(a) 와 거의 같습니다. 양변에 h 를 곱하면
f(a+h)−f(a)≈f′(a)h
말로 읽으면 "값의 변화량은 기울기 곱하기 옮긴 거리와 거의 같다"입니다. 시속 60km로 달리는 차가 1분 뒤 1km쯤 가 있을 거라고 어림하는 것과 같은 계산입니다. 속력이 그 1분 동안 조금 바뀌어도 어림은 크게 틀리지 않고, 10분이면 꽤 틀리고, 한 시간이면 쓸모가 없어집니다. 옮긴 거리가 짧을수록 좋은 어림이라는 점도 그대로 닮았습니다.
오차의 크기
그러면 얼마나 짧아야 얼마나 좋아질까요. h 를 반으로 줄여 직접 잽니다.
h
참값 eh
1차 근사 1+h
차이
0.1
1.1051709
1.1
0.0051709
0.05
1.0512711
1.05
0.0012711
h 는 절반이 되었는데 차이는 0.0051709에서 0.0012711로, 약 4.07분의 1이 되었습니다. 반이 아니라 넷으로 준 것입니다.
그림은 곡선과 접선 사이의 간격만 따로 세로로 잰 것입니다. 간격이 직선이 아니라 포물선처럼 바닥에서 휘어 올라갑니다. 간격이 h 가 아니라 h2 을 따라 움직인다는 뜻이고, h2 은 h 가 절반이 되면 41 이 됩니다. 이 넷이라는 수가 어디서 오는지는 다음 절에서 2차 항을 붙이면 바로 보입니다.
2차 항과 일반 항
계수 맞추기
1차식은 직선이라 휘지 못합니다. ex 은 휘어 있으니 그만큼 어긋나는 것입니다. 2차 항을 붙여 봅니다.
P(x)=c0+c1(x−a)+c2(x−a)2
여기서 c0,c1,c2 는 아직 모르는 수, 곧 계수입니다. 계수를 정하는 방법은 하나입니다. x=a 에서 P 와 f 의 값을 맞추고, 미분한 것끼리 맞추고, 두 번 미분한 것끼리 맞춥니다.
첫째로 값을 맞춥니다. x=a 를 넣으면 (x−a) 가 든 항이 전부 0이 되어 P(a)=c0 입니다. 이것이 f(a) 와 같아야 하므로
c0=f(a)
둘째로 기울기를 맞춥니다. P 를 미분하면 P′(x)=c1+2c2(x−a) 이고, x=a 를 넣으면 P′(a)=c1 입니다.
c1=f′(a)
셋째로 휘는 정도를 맞춥니다. 한 번 더 미분하면 P′′(x)=2c2 로 상수만 남습니다.
2c2=f′′(a)⟹c2=2f′′(a)
2로 나뉜 자리가 눈에 띕니다. (x−a)2 을 두 번 미분하면서 지수 2가 앞으로 딸려 나왔기 때문에, 그것을 되돌리려고 나눈 것입니다.
ex 에 a=0 으로 써 봅니다. 몇 번 미분해도 그대로이므로 f(0)=f′(0)=f′′(0)=1 입니다.
eh≈1+h+2h2
h=0.1 을 넣으면 1+0.1+0.005=1.105 입니다. 셋째 자리까지 맞습니다. 앞 절의 넷도 여기서 풀립니다. 1차 근사가 버린 것의 대부분이 바로 이 2h2 이라서, h=0.1 이면 0.005, h=0.05 이면 0.00125로 정확히 넷으로 줍니다. 실제 차이 0.0051709와 0.0012711이 이 두 수와 거의 같은 것이 그래서입니다.
계승
같은 방법을 계속 밀면 어떻게 될까요. c3(x−a)3 을 세 번 미분하면 앞에 3×2×1=6 이 딸려 나옵니다. 지수가 한 번 내려올 때마다 그 수가 곱해지기 때문입니다. 네 번 미분하는 항이면 4×3×2×1=24 입니다.
1부터 n 까지를 모두 곱한 것을 n 의 계승이라고 하고 n! 으로 적습니다. "엔 팩토리얼"이라고 읽습니다.
n!=1×2×3×⋯×n
n
1
2
3
4
5
6
n!
1
2
6
24
120
720
표를 옆으로 읽으면 한 칸 갈 때마다 다음 수를 곱합니다. 5!=5×4! 이고 6!=6×5! 입니다. 곧 n!=n×(n−1)! 입니다. 금방 커져서 10! 이면 벌써 362만 8,800입니다. 계승이 분모에 앉으면 뒤쪽 항들이 빠르게 작아지는 것이 이 때문입니다.
테일러 전개
이제 일반 항이 나옵니다. n 차 항 cn(x−a)n 을 n 번 미분하면 앞에 n! 이 딸려 나오고 (x−a) 는 사라집니다. 그보다 낮은 차수의 항은 n 번 미분하는 사이 0이 되고, 높은 차수의 항은 (x−a) 가 남아 있어 x=a 에서 0이 됩니다. 그래서 n 번 미분해 a 를 넣으면 n!cn 하나만 남고, 그것이 f(n)(a) 와 같아야 합니다. 여기서 f(n) 은 f 를 n 번 미분한 함수입니다.
cn=n!f(n)(a)
계수를 정하는 절차가 결국 이 한 줄입니다. 이렇게 정한 항을 다 이어 붙인 식을 x=a 에서의 테일러 전개라고 하고, 그 가운데 n 차까지만 자른 다항식을 n 차 테일러 다항식이라고 합니다. 전개는 끝없이 이어지는 식이고 다항식은 그중 앞부분을 떼어 쓰는 근사입니다.
f(a+h)≈f(a)+f′(a)h+2!f′′(a)h2+3!f′′′(a)h3+⋯
0!=1 로 두는 것도 여기서 자리가 잡힙니다. 한 줄 공식에 n=0 을 넣으면 c0=0!f(a) 인데, 첫 단계에서 c0=f(a) 였으므로 0! 은 1이어야 합니다. n!=n×(n−1)! 에 n=1 을 넣어도 1=1×0! 이 되어 같은 답입니다. 편해서 고른 값이 아니라, 공식이 첫 항에서도 그대로 성립하게 하는 유일한 값입니다.
특히 a=0 에서의 전개를 매클로린 전개라고 따로 부릅니다. 다음 절에서 모으는 것은 전부 이쪽입니다.
다항식의 전개
다항식에 이 절차를 쓰면 어떻게 될까요. f(x)=x3 을 a=0 에서 펴면 f(0)=f′(0)=f′′(0)=0 이고 f′′′(0)=6 이라, 전개는 3!6x3=x3 한 항으로 끝납니다. 네 번째 도함수부터는 0이라 뒤는 없습니다. 다항식은 자기 자신이 유한 항의 테일러 전개입니다.
중심을 a=1 로 옮기면 모양이 달라집니다. f(1)=1, f′(1)=3, f′′(1)=6, f′′′(1)=6 이므로
x3=1+3(x−1)+3(x−1)2+(x−1)3
같은 함수인데 계수가 0,0,0,1 에서 1,3,3,1 로 바뀌었습니다. 오른쪽을 전개해 정리하면 x3 으로 돌아오니 검산도 됩니다. 계수는 함수만의 것이 아니라 함수와 중심의 짝이 정한다는 것, 이것이 뒤에서 중심을 고르는 이유가 됩니다.
자주 쓰는 전개
전개 여섯
a=0 에서 세운 것들입니다. 유도는 위와 같은 절차의 되풀이라 결과만 모읍니다.
함수
전개
통하는 범위
ex
1+x+2!x2+3!x3+⋯
모든 x
sinx
x−3!x3+5!x5−⋯
모든 x
cosx
1−2!x2+4!x4−⋯
모든 x
ln(1+x)
x−2x2+3x3−⋯
∣x∣<1
1−x1
1+x+x2+x3+⋯
∣x∣<1
(1+x)α
1+αx+2!α(α−1)x2+⋯
∣x∣<1
sin 하나만 확인해 봅니다. 미분하면 sin→cos→−sin→−cos→sin 으로 네 번에 한 바퀴 돕니다. x=0 을 넣으면 0,1,0,−1 이 되풀이되므로 계수는 0,1!1,0,−3!1,0,5!1,… 입니다. 표의 둘째 줄 그대로입니다.
그림은 ex 에 1·2·3차 테일러 다항식을 겹친 것입니다. 차수를 올릴수록 원래 곡선을 더 오래 따라가고, 어느 차수든 x=0 근처에서는 다 겹칩니다.
홀수 차수와 짝수 차수
sin 에는 홀수 차수만, cos 에는 짝수 차수만 있습니다. 우연이 아닙니다. 25번 글에서 사인은 기함수, 코사인은 우함수였습니다. x 를 −x 로 바꾸면 사인은 부호만 뒤집히고 코사인은 그대로라는 뜻이었습니다.
거듭제곱도 같은 성질로 갈립니다. (−x)3=−x3 처럼 홀수 차수는 부호가 뒤집히고, (−x)4=x4 처럼 짝수 차수는 그대로입니다. 부호가 뒤집히는 함수를 흉내 내려면 부호가 뒤집히는 항만 써야 하므로 사인에는 홀수 차수만 남고, 코사인에는 짝수 차수만 남습니다. 그래서 사인의 전개는 x=0 에서 0으로 시작하고 코사인의 전개는 1로 시작합니다.
차수를 1·3·5·7로 올리면 다항식이 사인에 붙어 있는 구간이 양쪽으로 함께 넓어집니다. 좌우가 대칭으로 넓어지는 것도 기함수이기 때문입니다. 다항식은 결국 양 끝에서 위나 아래로 달아나지만, 사인은 −1과 1 사이를 끝없이 오르내리므로 어느 차수든 언젠가는 떨어져 나갑니다. 차수를 올리면 떨어지는 자리가 멀어질 뿐입니다.
전개에서 전개 만들기
새 함수를 만날 때마다 미분을 거듭할 필요는 없습니다. 이미 아는 전개의 x 자리에 다른 식을 넣으면 됩니다. ex2 은 ex 의 전개에서 x 를 x2 으로 바꿉니다.
ex2=1+x2+2!x4+3!x6+⋯
x=0.3 이면 1+0.09+0.00405=1.09405 이고 참값 1.0941743과 넷째 자리까지 맞습니다. ex2 을 직접 네 번 미분했다면 연쇄법칙과 곱의 법칙이 겹겹이 나왔을 것입니다.
항마다 적분하는 요령도 있습니다. 1−x1 의 전개에서 x 를 −x 로 바꾸면
1+x1=1−x+x2−x3+⋯
34번 글의 기본정리로 양변을 0부터 x 까지 적분합니다. 왼쪽은 ln(1+x) 이고, 오른쪽은 항마다 n+1xn+1 이 됩니다.
ln(1+x)=x−2x2+3x3−⋯
표의 넷째 줄이 미분 없이 나왔습니다. 로그의 분모가 계승이 아니라 1·2·3인 까닭도 여기서 보입니다. 적분이 n+1 로 한 번만 나누기 때문입니다.
이항 전개
표의 마지막 줄 (1+x)α 의 전개를 이항 전개라고 합니다. α 는 어떤 실수여도 됩니다. n 번째 계수는 n!α(α−1)⋯(α−n+1) 인데, (1+x)α 를 미분할 때마다 지수가 앞으로 나오면서 하나씩 줄어들기 때문입니다.
α 가 자연수이면 일이 달라집니다. α=3 이면 계수가 차례로
1,3,2!3×2=3,3!3×2×1=1,4!3×2×1×0=0
이고, 네 번째부터는 분자에 0이 끼어 전부 0입니다. 전개가 1+3x+3x2+x3 에서 끊깁니다. 앞에서 x3 을 a=1 에서 펼 때 나온 1,3,3,1 과 같은 수이고, 39번 · 세는 법에서 다루는 이항정리 그대로입니다. 자연수 지수일 때는 유한한 식이고, 21 이나 −1 같은 지수로 넓히면 끝없는 급수가 되는 것입니다.
오차와 범위
버린 첫 항
테일러 다항식을 쓰면 늘 뒤쪽 항을 버립니다. 버린 것이 얼마인지부터 봅니다. e0.1 을 세 번 근사합니다.
차수
식
값
참값과의 차이
1차
1+0.1
1.1
0.0051709
2차
+20.12
1.105
0.0001709
3차
+60.13
1.1051667
0.0000043
참값은 1.1051709입니다. 차이가 한 항마다 30~40배씩 줄어듭니다. 맞는 자릿수로 세면 소수 둘째 → 셋째 → 넷째 자리입니다. 그리고 각 줄의 차이는 그 다음 줄에서 새로 더한 항과 거의 같습니다. 1차의 차이 0.0051709는 2차 항 0.005와, 2차의 차이 0.0001709는 3차 항 0.0001667과 가깝습니다.
sin 에서도 봅니다. 첫 항만 쓰면 sinx≈x 이고 sin(0.1)≈0.1 입니다. 참값은 0.0998334이므로 차이가 0.0001666입니다. 다음 항이 −6x3=−60.001=−0.0001667 이니 차이가 바로 그 항입니다.
1.02=(1+0.02)1/2 에는 이항 전개에 α=21, x=0.02 를 넣습니다. 1차까지만 쓰면 1+20.02=1.01 이고, 참값 1.0099505와 0.0000495 차이입니다. 2차 계수가 221×(−21)=−81 이므로 버린 첫 항은 −80.022=−0.00005 이고, 역시 차이와 거의 같습니다. 그 항까지 넣은 1.00995는 참값과 0.0000005 차이입니다.
네 예가 한 규칙을 말합니다. n 차에서 자르면 오차는 대략 버린 첫 항과 같고, 그 크기는 hn+1 을 따라갑니다. 1차 근사의 오차가 h2 을 따라 넷으로 줄던 것이 이 규칙의 n=1 인 경우입니다. 이 크기를 기호로 적는 약속은 47번 · 자릿수와 오차에서 다룹니다.
교대급수의 상한
"대략"을 "넘지 않는다"로 바꿀 수 있는 경우가 있습니다. 부호가 +,−,+,− 로 번갈아 바뀌고 항의 크기가 점점 작아지는 급수를 교대급수라고 합니다. sin, cos, 그리고 0<x<1 에서의 ln(1+x) 가 그렇습니다. 교대급수에서는 앞 몇 항에서 자른 값과 참값의 차이가 버린 첫 항의 크기를 넘지 않습니다. 더할 때마다 참값을 넘었다가 못 미쳤다가 하면서 그 폭이 계속 좁아지기 때문입니다.
sin0.5 를 두 항으로 구하면 0.5−60.125=0.4791667 입니다. 버린 첫 항은 1200.55=0.0002604 이고, 참값 0.4794255와의 실제 차이는 0.0002589로 그보다 작습니다.
ln1.2 를 보면 넘나듦이 더 잘 보입니다. 두 항까지 더하면 0.2−0.02=0.18 로 참값 0.1823216보다 작고, 세 항까지 더하면 0.18+30.008=0.1826667 로 참값보다 큽니다. 참값은 늘 연속한 두 부분합 사이에 끼어 있습니다. 세 항에서 자를 때 버린 첫 항은 40.24=0.0004 이고 실제 차이 0.0003451은 그 안에 있습니다.
e0.1 은 사정이 다릅니다. 항이 전부 양수라 넘나들지 않고, 1차에서 자를 때 버린 첫 항 0.005보다 실제 차이 0.0051709가 조금 큽니다. 버린 항 뒤로도 양수가 계속 더해지기 때문입니다. 부호가 번갈아 바뀌지 않으면 버린 첫 항은 크기를 가늠하는 어림일 뿐 울타리가 아닙니다.
중심의 선택
같은 수를 구해도 어디에 중심을 잡느냐에 따라 결과가 크게 갈립니다. 4.1 로 봅니다.
a=0 쪽에서 펴 봅니다. x 자체는 x=0 에서 기울기가 한없이 커져 거기서 펼 수가 없으므로, 4.1=1+3.1 로 적고 이항 전개에 x=3.1 을 넣습니다. 3차 계수는 3!21×(−21)×(−23)=161 입니다.
차수
값
1차 1+23.1
2.55
2차 −83.12
1.34875
3차 +163.13
3.2106875
항을 붙일수록 2.55, 1.35, 3.21로 오히려 크게 흔들립니다. x=3.1 은 통하는 범위 ∣x∣<1 밖이라 항이 작아지기는커녕 커지기 때문입니다.
이번에는 중심을 4에 둡니다. 4는 제곱근을 아는 수이고 4.1과 가깝습니다. f(x)=x 이면 f(4)=2, f′(x)=2x1 에서 f′(4)=41, f′′(x)=−4xx1 에서 f′′(4)=−321 입니다. h=0.1 로 놓으면
참값 2.0248457과 0.0000019 차이입니다. 두 항만 더했는데 소수 다섯째 자리까지 맞았습니다. 가까운 곳에 값을 아는 점을 잡아 h 를 작게 만드는 것, 이것이 중심을 고르는 요령의 전부입니다.
수렴 범위
ln(1+x)≈x 가 x 를 키울수록 어떻게 무너지는지 표로 봅니다.
x
ln(1+x)
근사값 x
차이
참값 대비
0.01
0.00995
0.01
0.00005
0.5%
0.1
0.09531
0.1
0.00469
4.9%
0.5
0.40547
0.5
0.09453
23.3%
1
0.69315
1
0.30685
44.3%
2
1.09861
2
0.90139
82.0%
0에서 멀어질수록 급격히 무너집니다. 항을 더 붙이면 나아지기는 하지만 거기에도 끝이 있습니다. 1−x1 의 전개를 봅니다.
1−x1=1+x+x2+x3+⋯
29번 글에서 유도한 등비급수의 합 공식과 글자 하나까지 같습니다. 그리고 거기서 이 급수는 공비의 절댓값이 1보다 작을 때만 값이 있었습니다. 이렇게 전개가 참값으로 모이는 x 의 구간을 그 전개의 수렴 범위라고 합니다. 표의 셋째 칸이 적어 둔 것이 이것입니다.
x=2 를 넣어 보면 왼쪽은 1−21=−1 인데 오른쪽은 1+2+4+8+⋯ 로 한없이 커집니다. 근사가 나쁜 정도가 아니라 아예 다른 값입니다. 경계에 선 x=−1 에서는 오른쪽이 1−1+1−1+⋯ 로 0과 1 사이를 오가기만 하고 어디로도 모이지 않습니다.
테일러 전개는 한 점 둘레에서만 통하는 근사입니다. ex·sin·cos 처럼 모든 x 에서 통하는 것도 있지만 그쪽이 오히려 드뭅니다. 그리고 통하는 범위 안에서도 중심에서 멀어질수록 같은 차수의 근사가 나빠집니다.
오일러 공식
세 급수
표의 위 세 줄을 나란히 적습니다.
ex=1+x+2!x2+3!x3+4!x4+⋯
cosx=1−2!x2+4!x4−⋯
sinx=x−3!x3+⋯
아래 둘을 합치면 위와 항이 정확히 같습니다. 부호만 다릅니다. ex 의 짝수 차수 항은 cos 이 가져가고 홀수 차수 항은 sin 이 가져가는데, 둘 다 두 항마다 부호가 뒤집힙니다.
26번 글에서 오일러 공식 eix=cosx+isinx 를 결과로만 받아들이고 넘어갔습니다. 여기서 확인할 수 있습니다. 부호를 두 항마다 뒤집는 것이 바로 i 가 하는 일이기 때문입니다. ex 의 전개에 x 대신 ix 를 넣습니다.
eix=1+ix+2!(ix)2+3!(ix)3+4!(ix)4+⋯
i2=−1 이므로 (ix)2=−x2, (ix)3=−ix3, (ix)4=x4 입니다. 거듭제곱이 1,i,−1,−i 로 네 번에 한 바퀴 돕니다.
=1+ix−2!x2−i3!x3+4!x4+⋯
i 가 없는 항과 있는 항으로 갈라 모읍니다.
=(1−2!x2+4!x4−⋯)+i(x−3!x3+⋯)
앞은 cosx, 뒤는 sinx 입니다. 오일러 공식이 나왔습니다.
허수를 넣는 조건
방금 두 가지를 슬쩍 했습니다. 실수에서 만든 전개에 허수를 넣었고, 끝없는 합을 두 무더기로 갈라 모았습니다. 유한한 합이면 순서를 바꿔도 합이 같지만 끝없는 합에서는 순서를 바꾸면 합이 달라지는 급수도 있습니다.
둘 다 허락해 주는 조건이 한 줄입니다. 각 항에 절댓값을 씌워 더해도 유한한 값으로 모이면 그 급수가 절대수렴한다고 하고, 절대수렴하는 급수는 항을 어떻게 갈라 모아도 합이 그대로입니다. eix 의 전개에서 항의 절댓값은 n!∣x∣n 이고, 이것을 다 더하면 e∣x∣ 라는 유한한 수입니다. 분모의 계승이 분자의 거듭제곱보다 결국 훨씬 빨리 커지기 때문입니다. 그래서 위의 갈라 모으기는 모든 x 에서 정당합니다.
쌍곡선 함수
i 없이 같은 갈라 모으기를 하면 다른 짝이 나옵니다. e−x 는 전개에서 홀수 차수 항의 부호만 뒤집힌 것이므로, ex 와 더해 2로 나누면 홀수 차수가 지워집니다.
2ex+e−x=1+2!x2+4!x4+⋯
코사인의 전개에서 부호만 모두 + 로 바꾼 모양입니다. 이 함수를 coshx 라 적고 하이퍼볼릭 코사인이라 읽습니다. 더하는 대신 빼서 2로 나눈 2ex−e−x 는 sinhx 라 적고 하이퍼볼릭 사인이라 읽으며, 이 둘을 묶어 쌍곡선 함수라고 부릅니다. cosh0.2 는 1+0.02+240.0016=1.0200667 로, 참값 1.0200668과 거의 같습니다.
두 정의를 더하면 e−x 가 지워져 ex=coshx+sinhx 입니다. 오일러 공식 eix=cosx+isinx 와 나란히 놓으면 같은 갈라 모으기에 i 가 있느냐 없느냐의 차이만 남습니다.
덧셈정리
오일러 공식을 얻고 나면 덧셈정리가 지수법칙 한 줄로 줄어듭니다. 지수법칙 ei(a+b)=eiaeib 의 양쪽을 오일러 공식으로 바꿉니다.
cos(a+b)+isin(a+b)=(cosa+isina)(cosb+isinb)
오른쪽을 곱해 i2=−1 을 쓰면
=(cosacosb−sinasinb)+i(sinacosb+cosasinb)
양쪽의 i 가 없는 부분끼리, 있는 부분끼리 맞추면 25번 글에서 결과로 받아 두었던 두 식이 그대로 나옵니다.
cos(a+b)=cosacosb−sinasinb
sin(a+b)=sinacosb+cosasinb
26번 글은 이것을 회전을 두 번 하는 그림으로 보였습니다. 여기서는 급수에서 출발해 같은 곳에 닿았습니다. 곱셈이 회전이라는 사실과 급수의 부호가 두 항마다 뒤집힌다는 사실이 같은 이야기의 두 얼굴입니다.
연습 문제
연습 1 — 전개식 세우기
계승 표와 위의 전개 표를 씁니다.
ex 의 3차까지의 전개에 x=0.2 를 넣은 값. 참값은 1.2214028입니다
1+0.2+20.04+60.008=1+0.2+0.02+0.0013333=1.2213333 입니다. 차이는 0.0000695로 소수 넷째 자리까지 맞습니다.
cosx 의 2차까지의 전개에 x=0.2 를 넣은 값과, 참값 0.9800666과의 차이를 버린 첫 항과 맞대 보기
1−20.04=0.98 입니다. 차이가 0.0000666입니다. 다음 항이 24x4=240.0016=0.0000667 이라 버린 항이 곧 차이입니다.
4! 과 6! 의 값, 그리고 4!6!
4!=24, 6!=720 입니다. 24720=30 이고, 이것은 5×6 과 같습니다 — 앞의 네 곱셈이 그대로 지워지기 때문입니다.
연습 2 — 1차 근사로 암산하기
1.04 의 1차 근사. 참값은 1.0198039입니다
(1+x)α≈1+αx 에 α=21, x=0.04 를 넣어 1+0.02=1.02 입니다. 차이가 0.0001961입니다.
1.031 의 1차 근사. 참값은 0.9708738입니다
(1+0.03)−1 이므로 α=−1 이고 1−0.03=0.97 입니다. 차이가 0.0008738입니다.
1.0510 의 1차 근사. 참값은 1.6288946입니다
α=10, x=0.05 이므로 1+0.5=1.5 입니다. 차이가 0.13으로 큽니다 — αx 가 0.5나 되어 "작은 값"이라고 하기 어렵기 때문입니다.
9.1 을 2차까지. 참값은 3.0166206입니다
제곱근을 아는 9에 중심을 둡니다. f(9)=3, f′(9)=2×31=61, f′′(9)=−4×271=−1081 이므로 3+60.1−1081⋅20.01=3+0.0166667−0.0000463=3.0166204 입니다. 차이는 0.0000002입니다.
ln0.9 를 3차까지. 참값은 −0.1053605입니다
lnx 를 ln1=0 인 1에서 폅니다. f′(x)=x1, f′′(x)=−x21, f′′′(x)=x32 이라 x=1 에서 1,−1,2 이고 계수는 1,−21,3!2=31 입니다. h=−0.1 을 넣으면 −0.1−20.01+3−0.001=−0.1−0.005−0.0003333=−0.1053333 입니다. 차이는 0.0000272입니다.
연습 3 — 범위와 오차
1−x1 의 전개에 x=0.5 를 넣어 네 항까지 더한 값과 참값
1+0.5+0.25+0.125=1.875 이고 참값은 0.51=2 입니다. 아직 0.125 모자라지만 항을 더할수록 2로 갑니다.
ln(1+x) 의 전개에 x=−2 를 넣으면 안 되는 까닭
통하는 범위가 ∣x∣<1 인데 벗어납니다. 애초에 ln(−1) 은 정의되지 않으므로 왼쪽부터 값이 없습니다.
sinx≈x 를 x=0.05 에서 썼을 때 오차의 대략적인 크기
버리는 첫 항이 6x3 이므로 60.000125≈0.0000208 입니다. x=0.1 일 때의 0.0001666보다 여덟 배쯤 작습니다 — x 가 절반이 되면 세제곱은 여덟분의 일이 되기 때문입니다.
e0.3≈1.3 의 오차를 계산기 없이 어림하고, 참값 1.3498588과 맞대 보기
버린 첫 항은 20.32=0.045 입니다. 실제 차이는 0.0498588로 어림보다 조금 큽니다. 항이 모두 양수라 버린 항 뒤로도 더해지는 것이 있기 때문입니다.
1.06≈1.03 의 오차를 어림하고, 참값 1.0295630과 맞대 보기
이항 전개의 2차 항 −8x2 에 x=0.06 을 넣으면 −80.0036=−0.00045 입니다. 근사값이 그만큼 크다는 뜻이고, 실제로 1.03 이 참값보다 0.0004370 큽니다.
연습 4 — 전개에서 전개 만들기
미분을 거듭하지 말고 위의 전개 표에서 만듭니다.
e−x2 의 전개를 4차까지, 그리고 x=0.2 에서의 값. 참값은 0.9607894입니다
ex 의 x 자리에 −x2 을 넣어 1−x2+2x4−⋯ 입니다. x=0.2 이면 1−0.04+0.0008=0.9608 이고 차이는 0.0000106입니다.
1+x21 의 전개를 4차까지, 그리고 통하는 범위
1−x1 의 x 자리에 −x2 을 넣어 1−x2+x4−⋯ 입니다. 넣은 것 −x2 의 절댓값이 1보다 작아야 하므로 ∣x∣<1 입니다. 왼쪽 함수는 모든 x 에서 값이 있는데도 전개는 그 범위에서만 통합니다.
ln(1−x) 의 전개를 3차까지, 그리고 x=0.2 에서의 값. 참값은 −0.2231436입니다
ln(1+x) 의 x 자리에 −x 를 넣으면 −x−2x2−3x3−⋯ 로 부호가 모두 − 가 됩니다. x=0.2 이면 −0.2−0.02−0.0026667=−0.2226667 이고 차이는 0.0004769입니다.
sinhx=2ex−e−x 의 전개를 5차까지, 그리고 sinh0.1 의 값. 참값은 0.1001668입니다
e−x 는 홀수 차수 항의 부호만 뒤집힌 것이라, 빼면 짝수 차수가 지워지고 홀수 차수가 두 배가 됩니다. 2로 나누면 x+3!x3+5!x5+⋯ 입니다. x=0.1 이면 0.1+60.001=0.1001667 입니다.
여기까지가 한 함수를 다루는 도구였습니다. 다음 글은 물음을 뒤집습니다 — 함수 자체는 모르고 그 변화율만 알 때, 함수를 되찾을 수 있을까요.
실수를 2^b개 격자에 사상할 때 오차의 분산이 왜 Δ²/12인지 유도하고, 그것이 비트당 6.02dB라는 SNR로 번역되는 과정을 실측과 대조했습니다. 이상치 하나가 나머지 값의 유효 비트를 어떻게 먹는지, 그리고 int4에서 성능이 무너지는 지점을 오차 예산으로 미리 계산하는 법까지.
최댓값 빼기, 로그 공간, log1p·expm1, 분산의 두 공식, 정규화의 ε, fp32 누산, 역행렬 대신 solve — 프레임워크가 몰래 해 주는 일곱 가지를 하나씩 꺼내 각각 어떤 고장을 막는지 직접 재 봤습니다. 수식을 그대로 옮긴 코드가 왜 라이브러리보다 나쁜지에 대한 목록입니다.
0.1 + 0.2가 0.3이 아닌 이유부터 시작해 머신 엡실론을 유도하고, 같은 16비트인데 fp16과 bf16이 서로 다른 지점에서 터지는 이유, 비슷한 수를 뺄 때 유효자리가 사라지는 파괴적 상쇄, 그리고 1,000만 개를 순서만 바꿔 더했을 때 오차가 백만 배 갈리는 실험까지 직접 재 봤습니다.