Algorytm Remeza jest dobrze znaną procedurą iteracyjną przybliżającą funkcję wielomianem w normie minimax. Ale, jak mówi o tym Nick Trefethen [1]:
Większość tych [wdrożeń] sięga wielu lat wstecz, a właściwie większość z nich nie rozwiązuje ogólnego problemu najlepszego przybliżenia przedstawionego powyżej, ale warianty obejmujące zmienne dyskretne lub cyfrowe filtrowanie. W obiegu znajduje się kilka innych programów komputerowych, ale ogólnie wydaje się, że obecnie nie ma powszechnie stosowanego programu do obliczania najlepszych przybliżeń.
Można obliczyć rozwiązanie minimax również przez zastosowanie optymalizacji najmniejszych kwadratów lub wypukłej, na przykład za pomocą Matlaba i darmowego zestawu narzędzi CVX zastosowanego do funkcji Runge na [-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
Przybliżenie wielomianów Czebyszewa ma 0.1090
minimalną normę, podczas gdy to podejście osiąga minimum 0.0654
, tej samej wartości, która jest obliczana za pomocą algorytmu Remeza w chebfun
przyborniku Matlaba .
Czy jest jakaś korzyść ze stosowania bardziej skomplikowanego algorytmu Remeza, jeśli można szybciej i dokładniej obliczyć rozwiązanie minimax za pomocą solvera optymalizacyjnego? Czy są jakieś raporty / artykuły porównujące te dwa podejścia do niektórych trudnych problemów lub przypadków testowych?
-
[1] R. Pachon i LN Trefethen. BIT Numerical Mathematics (2008) Vol. 46