다른 답변에서 언급했듯이 체비 쇼프 다항식은 함수와 다항식의 가장 큰 차이가 가능한 작은 다항식입니다. 그것은 훌륭한 시작입니다.
경우에 따라 최대 오류는 관심있는 것이 아니라 최대 상대 오류입니다. 예를 들어 사인 함수의 경우 x = 0 근처의 오차는 큰 값보다 훨씬 작아야합니다. 작은 상대 오류가 필요합니다. 따라서 sin x / x에 대한 Chebyshev 다항식을 계산하고 그 다항식에 x를 곱합니다.
다음으로 다항식을 평가하는 방법을 알아 내야합니다. 중간 값이 작고 반올림 오류가 작도록 평가하려고합니다. 그렇지 않으면 반올림 오류가 다항식의 오류보다 훨씬 커질 수 있습니다. 그리고 사인 함수와 같은 함수를 사용하면 부주의하면 sin x에 대해 계산 한 결과가 x <y 일 때도 sin y에 대한 결과보다 클 수 있습니다. 따라서 반올림 오차에 대한 계산 순서 및 상한 계산을 신중하게 선택해야합니다.
예를 들어, sin x = x-x ^ 3 / 6 + x ^ 5 / 120-x ^ 7 / 5040 ... 순진하게 계산하면 sin x = x * (1-x ^ 2 / 6 + x ^ 4 / 120 - X ^ / 5040 ... 6) 다음 괄호 기능이 저하되어, 그것이 것이다 y는 x에 다음으로 큰 번호 인 경우, 가끔 Y가 죄 X보다 작은 것 죄 것이 일어난다. 대신 이것이 발생할 수없는 sin x = x-x ^ 3 * (1/6-x ^ 2 / 120 + x ^ 4 / 5040 ...)를 계산하십시오.
Chebyshev 다항식을 계산할 때는 일반적으로 계수를 배정 밀도로 반올림해야합니다. 그러나 체비 쇼프 다항식은 최적이지만, 배정 밀도로 반올림 된 계수를 갖는 체비 쇼프 다항식은 배정 밀도 계수를 갖는 최적의 다항식이 아닙니다!
예를 들어 x, x ^ 3, x ^ 5, x ^ 7 등에 대한 계수가 필요한 sin (x)의 경우 다음을 수행합니다. 다항식 (ax + bx ^ 3 +으로 sin x의 최적 근사값을 계산합니다. cx ^ 5 + dx ^ 7)를 배정 밀도보다 높으면 a에서 배정 밀도로 반올림하여 A를 제공합니다. 이제 다항식 (bx ^ 3 + cx ^ 5 + dx ^ 7)을 사용하여 (sin x-Ax)의 최적 근사값을 계산하십시오. a와 A의 차이에 적응하기 때문에 다른 계수를 얻게됩니다. b를 배정 밀도 B로 반올림 한 다음 다항식 cx ^ 5 + dx ^ 7 등으로 근사값 (sin x-Ax-Bx ^ 3)을 구합니다. 원래 Chebyshev 다항식과 거의 같은 다항식을 얻을 수 있지만 Chebyshev가 배정 밀도로 반올림 한 것보다 훨씬 낫습니다.
다음으로 다항식을 선택할 때 반올림 오류를 고려해야합니다. 다항식 무시 반올림 오류에서 최소 오차가있는 다항식을 찾았지만 다항식 + 반올림 오차를 최적화하려고합니다. 체비 쇼프 다항식이 있으면 반올림 오차의 범위를 계산할 수 있습니다. f (x)는 함수이고 P (x)는 다항식이며 E (x)는 반올림 오차입니다. 최적화하고 싶지 않습니다 | f (x)-P (x) |, 최적화하려고합니다 | f (x)-P (x) +/- E (x) |. 반올림 오차가 큰 곳에서 다항식 오차를 유지하려고 시도하고 반올림 오차가 작은 곳에서 다항식 오차를 약간 완화하는 약간 다른 다항식을 얻게됩니다.
이 모든 것을 통해 마지막 비트의 최대 0.55 배의 반올림 오류를 쉽게 얻을 수 있습니다. +,-, *, /는 마지막 비트의 최대 0.50 배의 반올림 오류가 있습니다.