Question: Smoothing data points

I want to smooth the data but retain the shape. Here is a smaller set of points for an example.

with(plots):
a := [[1, 1], [3, 2], [3.5, 4], [4, 6], [5, 5], [6, 7], [7, 6], [8, 5], [9, 5.5], [10, 4], [11, 1], [12, -5], [11.5, -6], [12, -12], [10, -10], [8, -14], [7, -10], [3, -10], [2, -5], [1, -8], [0, 0], [1, 1]];
lisplot(a);

plots[listplot]([[1, 1], [3, 2], [3.5, 4], [4, 6], [5, 5], [6, 7], [7, 6], [8, 5], [9, 5.5], [10, 4], [11, 1], [12, -5], [11.5, -6], [12, -12], [10, -10], [8, -14], [7, -10], [3, -10], [2, -5], [1, -8], [0, 0], [1, 1]])

 

I want to use data smoothing to reduce the number of points and still retain the general shape.  I suppose I could take out every other pointset but I want an average shape with a minimum number of points.  I could probably best fit a circle but that's not what I'm after right now.  I don't think best fit line would work as it would just draw a straight line.  Any ideas?

Please Wait...