Wielomiany Czebyszewa, jak wspomniano w innej odpowiedzi, to wielomiany, w których największa różnica między funkcją a wielomianem jest jak najmniejsza. To doskonały początek.
W niektórych przypadkach maksymalny błąd nie jest tym, co Cię interesuje, ale maksymalny błąd względny. Na przykład dla funkcji sinus, błąd w pobliżu x = 0 powinien być znacznie mniejszy niż dla większych wartości; chcesz mały błąd względny . Obliczymy zatem wielomian Czebiszewa dla sin x / x i pomnożymy ten wielomian przez x.
Następnie musisz dowiedzieć się, jak ocenić wielomian. Chcesz to ocenić w taki sposób, że wartości pośrednie są małe, a zatem błędy zaokrąglania są małe. W przeciwnym razie błędy zaokrąglania mogą stać się znacznie większe niż błędy wielomianu. A w przypadku funkcji takich jak funkcja sinusoidalna, jeśli jesteś nieostrożny, może się zdarzyć, że wynik obliczony dla sin x będzie większy niż wynik dla sin y, nawet gdy x <y. Potrzebny jest więc ostrożny wybór kolejności obliczeń i obliczanie górnych granic błędu zaokrąglania.
Na przykład sin x = x - x ^ 3/6 + x ^ 5/120 - x ^ 7/5040 ... Jeśli naiwnie obliczysz sin x = x * (1 - x ^ 2/6 + x ^ 4 / 120 - x ^ 6/5040 ...), wówczas funkcja w nawiasach maleje i stanie się tak, że jeśli y będzie następną większą liczbą od x, to czasami sin y będzie mniejszy niż sin x. Zamiast tego obliczyć sin x = x - x ^ 3 * (1/6 - x ^ 2/120 + x ^ 4/5040 ...) tam, gdzie to nie może się zdarzyć.
Obliczając wielomiany Czebyszewa, zwykle trzeba na przykład zaokrąglić współczynniki do podwójnej precyzji. Ale chociaż wielomian Czebyszewa jest optymalny, wielomian Czebyszewa o współczynnikach zaokrąglonych do podwójnej precyzji nie jest optymalnym wielomianem o współczynnikach podwójnej precyzji!
Na przykład dla sin (x), gdzie potrzebujesz współczynników dla x, x ^ 3, x ^ 5, x ^ 7 itd., Wykonaj następujące czynności: Oblicz najlepsze przybliżenie sin x wielomianem (ax + bx ^ 3 + cx ^ 5 + dx ^ 7) z wyższą niż podwójna precyzja, a następnie zaokrąglamy a do podwójnej precyzji, dając A. Różnica między a i A byłaby dość duża. Teraz obliczyć najlepsze przybliżenie (sin x - Ax) za pomocą wielomianu (bx ^ 3 + cx ^ 5 + dx ^ 7). Otrzymujesz różne współczynniki, ponieważ dostosowują się one do różnicy między a i A. Okrąg b do podwójnej precyzji B. Następnie przybliż (sin x - Ax - Bx ^ 3) za pomocą wielomianu cx ^ 5 + dx ^ 7 i tak dalej. Otrzymasz wielomian, który jest prawie tak dobry, jak oryginalny wielomian Czebeszewa, ale znacznie lepszy niż Czebyshev zaokrąglony do podwójnej precyzji.
Następnie należy wziąć pod uwagę błędy zaokrąglania przy wyborze wielomianu. Znalazłeś wielomian z minimalnym błędem w wielomianu ignorującym błąd zaokrąglania, ale chcesz zoptymalizować wielomian plus błąd zaokrąglania. Po uzyskaniu wielomianu Czebyszewa można obliczyć granice błędu zaokrąglania. Powiedz, że f (x) to twoja funkcja, P (x) to wielomian, a E (x) to błąd zaokrąglania. Nie chcesz optymalizować | f (x) - P (x) |, chcesz zoptymalizować | f (x) - P (x) +/- E (x) | Otrzymasz nieco inny wielomian, który próbuje utrzymać błędy wielomianu na dole tam, gdzie błąd zaokrąglania jest duży, i nieco rozluźnia błędy wielomianu, gdy błąd zaokrąglania jest mały.
Wszystko to pozwoli ci łatwo zaokrąglić błędy co najwyżej 0,55 razy ostatni bit, gdzie +, -, *, / mają błędy zaokrąglenia co najwyżej 0,50 razy ostatni bit.