Thuật toán Remez là một thói quen lặp nổi tiếng để tính gần đúng một hàm theo một đa thức trong định mức minimax. Nhưng, như Nick Trefethen [1] nói về nó:
Hầu hết các [triển khai] này đã quay trở lại trong nhiều năm và trên thực tế, hầu hết chúng không giải quyết được vấn đề gần đúng tốt nhất như đã nêu ở trên mà là các biến thể liên quan đến các biến rời rạc hoặc lọc kỹ thuật số. Người ta có thể tìm thấy một vài chương trình máy tính khác đang lưu hành, nhưng nhìn chung, có vẻ như hiện tại không có chương trình nào được sử dụng rộng rãi để tính toán các xấp xỉ tốt nhất.
Người ta cũng có thể tính toán giải pháp minimax bằng cách áp dụng tối ưu hóa bình phương hoặc lồi tối thiểu, ví dụ như sử dụng Matlab và hộp công cụ CVX miễn phí được áp dụng cho hàm Runge trên [-1, 1]:
m = 101; n = 11; % 101 points, polynomial of degree 10
xi = linspace(-1, 1, m); % equidistant points in [-1, 1]
ri = 1 ./ (1+(5*xi).^2); % Runge function
tic % p is the polynomial of degree (n-1)
cvx_begin % minimize the distance in all points
variable p(n);
minimize( max(abs(polyval(p, xi) - ri)) );
cvx_end
toc % 0.17 sec for Matlab, CVX and SeDuMi
Phép tính gần đúng với đa thức Ch Quashev có một chỉ tiêu minimax 0.1090
trong khi cách tiếp cận này ở đây đạt đến mức tối thiểu 0.0654
, cùng giá trị được tính toán với thuật toán Remez trong chebfun
hộp công cụ Matlab .
Có bất kỳ lợi thế nào trong việc áp dụng thuật toán Remez phức tạp hơn nếu bạn có thể tính toán giải pháp minimax nhanh hơn và chính xác hơn với một bộ giải tối ưu hóa? Có bất kỳ báo cáo / bài viết so sánh hai phương pháp này về một số vấn đề khó khăn hoặc trường hợp thử nghiệm không?
-
[1] R. Pachon và LN Trefethen. BIT Toán số (2008) Tập. 46.