%% Least-squares data fitting and POLYFIT % Nick Trefethen, 1st October 2011 %% % (Chebfun example stats/LeastSquares.m) %% % In Matlab, a standard command for least-squares fitting by a polynomial % to a set of discrete data points is POLYFIT. The polynomial returned by % POLYFIT is represented in Matlab's usual manner by a vector of % coefficients in the monomial basis. %% % In Chebfun, there is an overloaded POLYFIT command in the domain class % that does the same thing, except that the polynomial is returned as a % chebfun rather than a coefficient vector. Here is an example: npts = 100; x = linspace(-1,1,npts); y = 1./(1+25*x.^2) + 1e-1*randn(1,npts); f = polyfit(x,y,10,domain(-1,1)); plot(x,y,'xk','markersize',12) hold on, plot(f,'r','linewidth',2) title('Discrete polynomial least-squares fit','fontsize',16) %% % Chebfun also has a POLYFIT command in the chebfun class, and this is for % continuous rather than discrete polynomial least-squares fitting. For % example, here is a least-squares fit to a jagged function: f = chebfun('abs(x+.2)-.5*sign(x-.5) ','splitting','on'); r = polyfit(f,10); hold off, plot(f,'k',r,'r','linewidth',2) title('Continuous polynomial least-squares fit','fontsize',16)