views:

472

answers:

4

This is something related with Mathematics as well. But this is useful in computing as well.

Lets say you have 10 coordinates. (x1,y1)(x2,y2)..... in 2D Space. (i.e on a X-Y Plane). Can we find a single smooth curve going across the each coordinate.

While expanding the question, If the space is 3D, then can we find an equation of a smooth surface that going across a given set of spacial coordinates?

Are there any Libraries (Any language) \ tools to perform such calculations?

+1  A: 

you can always fit an order-10 polynomial through the points. that's not necessarily what you want to do, though - fitting a smooth curve via a series of splines will give you a better-looking result. the curve-fitting article on wikipedia gives you a good overview of the various options.

Martin DeMello
+1  A: 

In the 2D case you are asking for curve fitting. This actually exists in excel, where you plot your points (I usually use XY scatter if you have x and y listed) and then right-click on the curve. Select Add Trendline. There you can choose which kind of function you want to fit to and you can ask excel to display it in the image (Tab named Options, check the box "Display equation on chart"). Nice and quick.

Otherwise you can use matlab and use the lsqr (least square method). If you want to find the polynomial closest that best describes your data you could use the polyfit function. It uses the least square method, but returns coefficients. Matlab has a whole set of other algorithms for solving/finding "best" approximations to systems of linear equations. I mention lsqr because it is one of the simplest to implement yourself if you don't have matlab. On the other hand it is for solving sets of linear equations - I don't know anything about your data.

AnnaR
that class of algorithms tries to plot a curve with few coefficients (low order polynomial, exponential, log function, etc) that passes near all the points, rather than an arbitrarily complicated curve that passes *through* all of them.
Martin DeMello
A: 

Have a look at splines

Searching for 'spline interpolation library' might give some useful hints for implementations.

Ralph Rickenbach
+2  A: 

What you should be looking for is some library implementing NURBS (or Non Uniform Rational B-Splines). This will solve your problem in both 2d and 3d, since 2d is just a special case of the 3d.

Roughly speaking, you are not interested in the actual equation, you are only interested in getting the points approximated with smooth curves or surfaces. This is done by finding "control points" in 2d or 3d space, which are multiplied with B-spline base functions. A NURBS library will do this for you.

Cheers !

Edit:

Have a look at this one

Magnus Skog