Chebyshev polinomları, başka bir cevapta belirtildiği gibi, fonksiyon ve polinom arasındaki en büyük farkın olabildiğince küçük olduğu polinomlardır. Bu mükemmel bir başlangıç.
Bazı durumlarda, maksimum hata ilgilendiğiniz şey değil, maksimum göreceli hatadır. Örneğin sinüs işlevi için, x = 0 yakınındaki hata daha büyük değerlerden çok daha küçük olmalıdır; küçük bir göreceli hata istiyorsunuz . Yani günah x / x için Chebyshev polinomunu hesaplar ve bu polinomu x ile çarparsınız.
Sonra polinomun nasıl değerlendirileceğini bulmalısınız. Bunu, ara değerler küçük ve dolayısıyla yuvarlama hataları küçük olacak şekilde değerlendirmek istersiniz. Aksi takdirde, yuvarlama hataları polinomdaki hatalardan çok daha büyük olabilir. Sinüs işlevi gibi işlevlerle, dikkatsizseniz, x günahı için hesapladığınız sonucun, x <y olsa bile günah y sonucundan daha büyük olması mümkündür. Hesaplama sırasının ve yuvarlama hatası için üst sınırların hesaplanmasının dikkatli bir şekilde seçilmesi gerekir.
Örneğin, sin x = x - x ^ 3/6 + x ^ 5/120 - x ^ 7/5040 ... Saf bir şekilde günah hesaplarsanız x = x * (1 - x ^ 2/6 + x ^ 4 / 120 - x ^ / 5040 6 ...), daha sonra parantez içinde işlev azalması olduğunu ve bu olacak x, y için bir sonraki daha büyük bir sayı ise, o zaman, bazen y sin x daha küçük olacaktır sin gerçekleşmesi. Bunun yerine, bunun gerçekleşemeyeceği günah x = x - x ^ 3 * (1/6 - x ^ 2/120 + x ^ 4/5040 ...) değerini hesaplayın.
Chebyshev polinomlarını hesaplarken, örneğin katsayıları genellikle iki kat hassasiyetle yuvarlamanız gerekir. Ancak bir Chebyshev polinomu optimal olmakla birlikte, çift hassasiyete yuvarlanmış katsayılara sahip Chebyshev polinomu, çift hassasiyet katsayılarına sahip optimal polinom değildir!
Örneğin, x, x ^ 3, x ^ 5, x ^ 7 vb. İçin katsayılara ihtiyaç duyduğunuz sin (x) için aşağıdakileri yaparsınız: sin x'in bir polinom (ax + bx ^ 3 + cx ^ 5 + dx ^ 7) ile çift kesinlikten daha yüksek, daha sonra a ile çift kesinlik arasında yuvarlayın. A ile A arasındaki fark oldukça büyük olacaktır. Şimdi bir polinom (bx ^ 3 + cx ^ 5 + dx ^ 7) ile (sin x - Ax) en iyi yaklaşımını hesaplayın. Farklı katsayılar elde edersiniz, çünkü a ve A arasındaki farka uyum sağlarlar. B'yi çift kesinlikli B'ye çevirin. Sonra polinom cx ^ 5 + dx ^ 7 vb. İle yaklaşık (sin x - Ax - Bx ^ 3). Neredeyse orijinal Chebyshev polinomu kadar iyi olan bir polinom alacaksınız, ancak Chebyshev'den çifte hassasiyete yuvarlanandan çok daha iyi olacaksınız.
Ardından, polinom seçimindeki yuvarlama hatalarını dikkate almalısınız. Polinomda yuvarlama hatasını göz ardı eden minimum hataya sahip bir polinom buldunuz, ancak polinom artı yuvarlama hatasını optimize etmek istiyorsunuz. Chebyshev polinomuna sahip olduğunuzda, yuvarlama hatası için sınırları hesaplayabilirsiniz. Diyelim ki f (x) fonksiyonunuz, P (x) polinom ve E (x) yuvarlama hatası. Optimize etmek istemiyorsunuz | f (x) - P (x) |, optimize etmek istiyorsunuz | f (x) - P (x) +/- E (x) |. Yuvarlama hatasının büyük olduğu yerde polinom hatalarını tutmaya çalışan biraz farklı bir polinom alırsınız ve yuvarlama hatasının küçük olduğu yerlerde polinom hatalarını biraz gevşetirsiniz.
Bütün bunlar size son bit'in en fazla 0.55 katı hata yuvarlama sağlar. Burada +, -, *, / son bitin en fazla 0.50 katı yuvarlama hataları vardır.