Đánh giá nhanh (gần đúng) về đa thức Ch Quashev


9

Có cách nào ưu tiên để thực hiện đánh giá nhanh (gần đúng) về đa thức nội suy Ch Quashev trên lưới thống nhất (đưa ra các giá trị hàm tại các nút Ch Quashev) không? Vấn đề của tôi là phép nội suy trở nên chậm khi mức độ của đa thức nội suy tăng.

Những ý tưởng sau đây nảy ra trong đầu tôi:

  • Cố gắng điều chỉnh các kỹ thuật FFT (NFFT) không đồng nhất
  • Sử dụng FFT để tính toán các dẫn xuất tại các nút Ch Quashev, có khả năng sau lần đầu tiên đi đến lưới (Ch Quashev) tốt hơn. Sau đó sử dụng phép nội suy khối piecewise để đánh giá (gần đúng).
  • Sử dụng một số công thức chỉ sử dụng các giá trị hàm (và các dẫn xuất có khả năng) tại các nút Ch Quashev "gần đó" (điều này có liên quan đến một kỹ thuật NFFT cụ thể).

Có một cái nhìn tại chebfun ! Đó là toàn bộ thư viện dựa trên các biểu diễn hàm bằng đa thức Ch Quashev. Nó là nguồn mở, được tối ưu hóa cao và được duy trì tốt và tôi đoán rằng nếu tồn tại một cách ưa thích để đánh giá theo chiều của một đa thức, thì bạn sẽ tìm thấy nó ở đó.
Ngày

Câu trả lời:


11

Bạn đã nghĩ đến việc sử dụng Nội suy Barycentric ? Một mô tả chi tiết về cách thực hiện nó một cách hiệu quả cho các nút Ch Quashev được đưa ra trong Phần 5 của bài viết này .

Đây thực sự là một đánh giá chính xác của phép nội suy Ch Quashev. Nếu bạn đang đánh giá một đa thức bậc tại nút, chi phí tính bằng .nmÔi(nm)

Cập nhật

Một cách khác, nếu bạn có các hệ số Ch Quashev của đa thức nội suy của bạn, là sử dụng thuật toán Clenshaw . Nếu bạn chỉ có các giá trị hàm tại các nút Ch Quashev, nhưng phải đánh giá đa thức nhiều lần, bạn có thể tính các hệ số với FFT.

Thuật toán Clenshaw có phần nhanh hơn phép nội suy Barycentric vì nó chỉ yêu cầu các phép cộng và phép nhân, và nó cũng vector hóa khá độc đáo.


Hiện tại, tôi làm điều đó bằng cách tính toán các trọng số liên quan đến các giá trị hàm tại các nút Ch Quashev cho một điểm đánh giá cụ thể, sau đó đánh giá điểm này cho tất cả các phép nội suy tôi phải thực hiện (có rất nhiều, tất cả đều có các nút Ch Quashev giống hệt nhau và các điểm đánh giá giống hệt nhau) , và sau đó chuyển sang điểm đánh giá tiếp theo.
Thomas Klimpel

@ThomasKlimpel: Làm thế nào để bạn tính toán trọng lượng? Nếu bạn đang sử dụng các nút trên , chúng chỉ là hoặc ở các cạnh. Nếu tốc độ thực sự là điều cốt yếu, tôi đã thêm thuật toán Clenshaw vào câu trả lời của mình. Theo kinh nghiệm của tôi, nó nhanh hơn khoảng bốn lần trong mã được biên dịch. [-1,1]±1±1/2
Pedro
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.