Remez algoritması, minimaks normunda bir polinom tarafından bir işleve yaklaşık olarak yaklaşmak için iyi bilinen bir yinelemeli rutindir. Ancak, Nick Trefethen'in [1] söylediği gibi:
Bu uygulamaların çoğu uzun yıllar öncesine dayanmaktadır ve aslında, çoğu yukarıda belirtildiği gibi en iyi genel yaklaşım problemini değil, farklı değişkenler veya dijital filtreleme içeren varyantları çözmektedir. Dolaşımda birkaç bilgisayar programı daha bulunabilir, ancak genel olarak, en iyi yaklaşımları hesaplamak için şu anda yaygın olarak kullanılan bir program olmadığı görülmektedir.
Minimax çözümünü, örneğin Matlab ve [-1, 1] 'deki Runge işlevine uygulanan ücretsiz CVX araç kutusunu kullanarak en küçük kareler veya dışbükey optimizasyon uygulayarak da hesaplayabilirsiniz:
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
Chebyshev polinomları ile 0.1090
yaklaşımın bir minimum normu vardır, buradaki bu yaklaşım 0.0654
, Matlab chebfun
araç kutusundaki Remez algoritması ile hesaplanan minimum değere ulaşır .
Minimax çözümünü bir optimizasyon çözücü ile daha hızlı ve daha doğru hesaplayabiliyorsanız, daha karmaşık Remez algoritmasını uygulamanın herhangi bir avantajı var mı? Bazı zor problemler veya test vakaları hakkında bu iki yaklaşımı karşılaştıran raporlar / makaleler var mı?
-
[1] R. Pachon ve LN Trefethen. BIT Sayısal Matematik (2008) Vol. 46.