Approximate a surface by set of points Given a set of points $(X, Y, Z)$ obtained from the experimental data that can be considered as a 3D surface.
What is the common approach to get an approximating function Z=f(x,y) that describes the surface in the best way (with specified precision)?
An example i'm dealing with is shown above. Need to approximate only the growing up surface, without projection.

The projection on XY plane of a surface is shown separately here:
.
 A: Well, there are many approaches to solve that problem. It depends on what you want, i.e. on the desired properties of the function $f(x,y)$. I can explain it better with a function $f$ of a single variable, but the principles are the same for two variables. So, let us assume that you have a set of points that describe a curve in the plane, and you want to approximate that curve by a function $f(x)$. You have several options:


*

*You want your function $f(x)$ to pass exactly through each point. In that case you could take $f$ as an interpolating polynomial (e.g. Lagrange's). If you have $n+1$ points, they uniquely determine a polynomial $f$ of degree $n$. The disadvantage is that $f$ will have too many "bends", and it may take unexpected twists outside the interval determined by the points. 

*If it is not strictly necessary that $f(x)$ passes exactly through each point, then you can choose $f$ as a polynomial with degree smaller than $n$, say 2 or 3. This polynomial will behave more smoothly, but it will not pass exactly through every point. In this case you want the polynomial that better approximates the set of points, and that is usually done by least squares. 

*A compromise is to use a spline, i.e. a function $f$ defined by "pieces". A spline consists of several polynomial functions of low degree, that join seamlessly and smoothly at the control points. A spline is both smooth and passes through every point. 

*There are other functions with nice properties, such as Bézier curves.
A: Are the data points sampled on a regular (x,y)-grid? If so, you could use the tensor-product B-spline interpolation. If the point were irregular, and not too many, you could consider using an RBF interpolant. But first, why don't you plot a few graphs z(x) for a few values of y: I suspect they might be linear! Perhaps the model that describes your data is a quadric which you'd fit with Least Squares, observing the fitting error.
