function [p,x,E1all,E2all,xall]=remez(f,a,b,x,maxiter,eps) % Remez-Algorithmus zur Polynom-Approximation % der Funktion f:[a,b]->R mit Polynomen vom % Grad n % % Input: % x: Vektor, enthält die Startreferenz % n=length(x)-2 ist der Polynomgrad % maxiter: Max. Zahl der Iterationen % eps: Abbruch des Verfahrens bei Fehlergenauigkeit eps % % Output: % p: Polynom der Bestapproximation, Ausgabe erfolgt als % Koeffizientenvektor p=[c0,c1,c2,...,cn] mit den % Koeffizienten der Newton-Polynome 1, x-x(1), ... % x: Vektor der letzten Referenz (Approx. einer Extremal- % alternante) % E1: obere Schranke des Approx.grades für alle Iterierten % E2: untere Schranke des Approx.grades für alle Iterierten % xall: Matrix, enthält die Referenzen der gesamten Iteration als Zeilen % % Bei erfolgreichem Ende ist E1-E2eps) & (keps) & (k<(maxiter-1))) % finde auszutauschendes x(j) j=find((xneu-x)>0); if length(j)>0 jj=j(end); xj=x(j(end)); z1=feval(f,[xj,xneu]); z2=newton_eval(p,x(1:end-1),[xj,xneu]); k=((z1(1)-z2(1))*(z1(2)-z2(2)))<0; x(jj+k)=xneu; else % xneu ist kleiner als das alte x(1) x(1)=xneu; end xall=[xall;x]; end E1all=[E1all;E1]; E2all=[E2all;E2]; k=k+1; pause end