# Determining function from simple xy graph

I'm not sure if this question is too vague for here. Will delete if necessary.

I have a set of points, (1,782), (2,893), (3,992),... and I'm trying to determine the function that was used to generate them.

When plotted on a graph, it looks a lot like y = sqrt(x) * a + c, or something like y = Log(x - a) + c, but I've been playing around in excel, and these aren't quite right. I've also experimented with other roots, and not made progress.

Are there tools or methods I can use to get a better approximation, or any simple functions that I've overlooked?

1   782
2   893
3   992
4   1081
5   1164
6   1241
7   1313
8   1382
9   1447
10  1510
20  2031
30  2444
40  2796
50  3108
60  3392
70  3653
80  3897
90  4127
100 4344
200 6106
300 7462
400 8607


(The y values have been rounded to integers).

• I don't know much about this, but as my memory serves me Lagrange polynomials may be helpful to you. Nov 16, 2013 at 5:53
• Have you tried linear regression; maybe non-linear regression? Nov 16, 2013 at 6:23
• Some results using Alpha. Nov 16, 2013 at 13:27
• and the best fit of $(\sqrt{x},y)$ (better). Nov 16, 2013 at 14:04
• @RaymondManzoni. The simple fit y = sqrt(x) * a + c shows already a correlation coefficient equal to 0.9994 which is more than sufficient I guess. Nice to meet you here ! Nov 16, 2013 at 15:45

A simple and accurate solution could be : $$f(x):=\sqrt{432718+184284\;x}$$ \begin{array} {c|cc} x&y&f(x)\\ \hline\\ 1& 782&785\\ 2& 893&895\\ 3& 992&993\\ 4& 1081&1082\\ 5& 1164&1164\\ 6& 1241&1240\\ 7& 1313&1313\\ 8& 1382&1381\\ 9& 1447&1446\\ 10& 1510&1508\\ 20& 2031&2029\\ 30& 2444&2442\\ 40& 2796&2794\\ 50& 3108&3106\\ 60& 3392&3390\\ 70& 3653&3651\\ 80& 3897&3896\\ 90& 4127&4125\\ 100& 4344&4343\\ 200& 6106&6106\\ 300& 7462&7464\\ 400& 8607&8611\\ \end{array}
To me, y = sqrt(x) * a + c seems to be very good in particular for large values of x (above x=25 the fit is excellent). To me, the real question is : what do you want to do ? If it is interpolation, I think that Lagrange polynomials (as suggested by Mark) would be the best idea since there is no much noise in your data. If it is extrapolation for values such x > 400 , I suppose that the above regression would be very reasonable [in such a case, fit your data for, say, x > 50]. Where I see problems is for low values of x; but here again, I should use Lagrange polynomials.
• Thanks for your comment. I took another look at square roots and tried to make them fit better but it's never perfect. I'm trying to interpolate the missing values for 0 < x < 500. I believe the underlying function should be very simple. I'll try Lagrange polynomials and see if anything simple drops out... Nov 17, 2013 at 22:50