Đa thức Ch Quashev, như đã đề cập trong một câu trả lời khác, là các đa thức trong đó sự khác biệt lớn nhất giữa hàm và đa thức càng nhỏ càng tốt. Đó là một khởi đầu tuyệt vời.
Trong một số trường hợp, lỗi tối đa không phải là điều bạn quan tâm, mà là lỗi tương đối tối đa. Ví dụ, đối với hàm sin, sai số gần x = 0 phải nhỏ hơn nhiều so với các giá trị lớn hơn; bạn muốn một lỗi tương đối nhỏ . Vì vậy, bạn sẽ tính đa thức Ch Quashev cho sin x / x và nhân đa thức đó với x.
Tiếp theo bạn phải tìm ra cách đánh giá đa thức. Bạn muốn đánh giá nó theo cách sao cho các giá trị trung gian nhỏ và do đó sai số làm tròn là nhỏ. Nếu không, các lỗi làm tròn có thể trở nên lớn hơn rất nhiều so với các lỗi trong đa thức. Và với các hàm như hàm sin, nếu bạn bất cẩn thì có thể kết quả mà bạn tính cho sin x lớn hơn kết quả cho sin y ngay cả khi x <y. Vì vậy, lựa chọn cẩn thận thứ tự tính toán và tính toán giới hạn trên cho lỗi làm tròn là cần thiết.
Ví dụ: sin x = x - x ^ 3/6 + x ^ 5/120 - x ^ 7/4040 ... Nếu bạn tính sin sin x = x * (1 - x ^ 2/6 + x ^ 4 / 120 - x ^ 6/5040 ...), thì hàm đó trong ngoặc đơn đang giảm và sẽ xảy ra nếu y là số lớn hơn tiếp theo với x, thì đôi khi sin y sẽ nhỏ hơn sin x. Thay vào đó, hãy tính sin x = x - x ^ 3 * (1/6 - x ^ 2/20 + x ^ 4/5040 ...) khi điều này không thể xảy ra.
Khi tính toán các đa thức Ch Quashev, bạn thường cần làm tròn các hệ số để độ chính xác gấp đôi, ví dụ. Nhưng trong khi một đa thức Ch Quashev là tối ưu, thì đa thức Ch Quashev với các hệ số được làm tròn đến độ chính xác kép không phải là đa thức tối ưu với các hệ số chính xác kép!
Ví dụ: sin (x), trong đó bạn cần các hệ số cho x, x ^ 3, x ^ 5, x ^ 7, v.v. bạn làm như sau: Tính xấp xỉ tốt nhất của sin x với đa thức (ax + bx ^ 3 + cx ^ 5 + dx ^ 7) với độ chính xác cao hơn gấp đôi, sau đó làm tròn độ chính xác đến gấp đôi, cho A. Sự khác biệt giữa a và A sẽ khá lớn. Bây giờ hãy tính xấp xỉ tốt nhất của (sin x - Ax) với đa thức (bx ^ 3 + cx ^ 5 + dx ^ 7). Bạn nhận được các hệ số khác nhau, bởi vì chúng thích ứng với sự khác biệt giữa a và A. Làm tròn chính xác đến gấp đôi B. Sau đó xấp xỉ (sin x - Ax - Bx ^ 3) với đa thức cx ^ 5 + dx ^ 7, v.v. Bạn sẽ nhận được một đa thức gần như tương đương với đa thức Ch Quashev ban đầu, nhưng tốt hơn nhiều so với Ch Quashev được làm tròn với độ chính xác gấp đôi.
Tiếp theo, bạn nên tính đến các lỗi làm tròn trong việc lựa chọn đa thức. Bạn đã tìm thấy một đa thức có lỗi tối thiểu trong đa thức bỏ qua lỗi làm tròn, nhưng bạn muốn tối ưu hóa đa thức cộng với lỗi làm tròn. Khi bạn có đa thức Ch Quashev, bạn có thể tính giới hạn cho lỗi làm tròn. Giả sử f (x) là hàm của bạn, P (x) là đa thức và E (x) là lỗi làm tròn. Bạn không muốn tối ưu hóa | f (x) - P (x) |, bạn muốn tối ưu hóa | f (x) - P (x) +/- E (x) |. Bạn sẽ nhận được một đa thức hơi khác nhau, cố gắng giữ các lỗi đa thức ở nơi sai số làm tròn lớn và làm giảm các lỗi đa thức một chút trong đó sai số làm tròn nhỏ.
Tất cả điều này sẽ giúp bạn dễ dàng làm tròn các lỗi nhiều nhất 0,55 lần bit cuối cùng, trong đó +, -, *, / có các lỗi làm tròn nhiều nhất là 0,5 lần so với bit cuối cùng.