Code covered by the BSD License  

Highlights from
Chebfun V4

image thumbnail

Chebfun V4

by

 

30 Apr 2009 (Updated )

Numerical computation with functions instead of numbers.

Editor's Notes:

This file was selected as MATLAB Central Pick of the Week

Least-squares data fitting and POLYFIT

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)

Contact us