Der Remez-Algorithmus ist eine bekannte iterative Routine zur Approximation einer Funktion durch ein Polynom in der Minimax-Norm. Aber, wie Nick Trefethen [1] dazu sagt:
Die meisten dieser [Implementierungen] reichen viele Jahre zurück und in der Tat lösen die meisten von ihnen nicht das allgemeine Problem der besten Näherung, wie oben dargestellt, sondern Varianten, die diskrete Variablen oder digitale Filterung beinhalten. Man kann ein paar andere Computerprogramme im Umlauf finden, aber insgesamt scheint es derzeit kein weit verbreitetes Programm für die Berechnung der besten Annäherungen zu geben.
Man kann die Minimax-Lösung auch durch Anwendung von Least-Squares oder konvexer Optimierung berechnen, beispielsweise mit Matlab und der kostenlosen CVX-Toolbox, die auf die Runge-Funktion unter [-1, 1] angewendet wird:
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
Die Approximation mit Chebyshev-Polynomen hat eine Minimax-Norm von, 0.1090
während dieser Ansatz hier ein Minimum von 0.0654
demselben Wert erreicht, der mit dem Remez-Algorithmus in der Matlab- chebfun
Toolbox berechnet wird .
Gibt es einen Vorteil bei der Anwendung des komplizierteren Remez-Algorithmus, wenn Sie die Minimax-Lösung mit einem Optimierungslöser schneller und genauer berechnen können? Gibt es Berichte / Artikel, die diese beiden Ansätze zu einigen schwierigen Problemen oder Testfällen vergleichen?
-
[1] R. Pachön und LN Trefethen. BIT Numerical Mathematics (2008) Bd. 46.