Next: Error Estimates for Fits, Previous: Linear Fits, Up: Curve Fitting [Contents][Index]

To fit the data to higher-order polynomials, just type one of the
digits `2` through `9` when prompted for a model. For example,
we could fit the original data matrix from the previous section
(with 13, not 14) to a parabola instead of a line by typing
`a F 2 RET`.

2.00000000001 x - 1.5e-12 x^2 + 2.99999999999

Note that since the constant and linear terms are enough to fit the
data exactly, it’s no surprise that Calc chose a tiny contribution
for ‘`x^2`’. (The fact that it’s not exactly zero is due only
to roundoff error. Since our data are exact integers, we could get
an exact answer by typing `m f` first to get Fraction mode.
Then the ‘`x^2`’ term would vanish altogether. Usually, though,
the data being fitted will be approximate floats so Fraction mode
won’t help.)

Doing the `a F 2` fit on the data set with 14 instead of 13
gives a much larger ‘`x^2`’ contribution, as Calc bends the
line slightly to improve the fit.

0.142857142855 x^2 + 1.34285714287 x + 3.59999999998

An important result from the theory of polynomial fitting is that it
is always possible to fit `n` data points exactly using a polynomial
of degree * n-1*, sometimes called an

0.04167 x^4 - 0.4167 x^3 + 1.458 x^2 - 0.08333 x + 4.

The actual coefficients we get with a precision of 12, like
‘`0.0416666663588`’, clearly suffer from loss of precision.
It is a good idea to increase the working precision to several
digits beyond what you need when you do a fitting operation.
Or, if your data are exact, use Fraction mode to get exact
results.

You can type `i` instead of a digit at the model prompt to fit
the data exactly to a polynomial. This just counts the number of
columns of the data matrix to choose the degree of the polynomial
automatically.

Fitting data “exactly” to high-degree polynomials is not always
a good idea, though. High-degree polynomials have a tendency to
wiggle uncontrollably in between the fitting data points. Also,
if the exact-fit polynomial is going to be used to interpolate or
extrapolate the data, it is numerically better to use the `a p`
command described below. See Polynomial Interpolation.

Another generalization of the linear model is to assume the
‘`y`’ values are a sum of linear contributions from several
‘`x`’ values. This is a *multilinear* fit, and it is also
selected by the `1` digit key. (Calc decides whether the fit
is linear or multilinear by counting the rows in the data matrix.)

Given the data matrix,

[ [ 1, 2, 3, 4, 5 ] [ 7, 2, 3, 5, 2 ] [ 14.5, 15, 18.5, 22.5, 24 ] ]

the command `a F 1 RET` will call the first row ‘`x`’ and the
second row ‘`y`’, and will fit the values in the third row to the
model ‘`a + b x + c y`’.

8. + 3. x + 0.5 y

Calc can do multilinear fits with any number of independent variables (i.e., with any number of data rows).

Yet another variation is *homogeneous* linear models, in which
the constant term is known to be zero. In the linear case, this
means the model formula is simply ‘`a x`’; in the multilinear
case, the model might be ‘`a x + b y + c z`’; and in the polynomial
case, the model could be ‘`a x + b x^2 + c x^3`’. You can get
a homogeneous linear or multilinear model by pressing the letter
`h` followed by a regular model key, like `1` or `2`.
This will be indicated by an “h” in the minibuffer after the help
message.

It is certainly possible to have other constrained linear models,
like ‘`2.3 + a x`’ or ‘`a - 4 x`’. While there is no single
key to select models like these, a later section shows how to enter
any desired model by hand. In the first case, for example, you
would enter `a F ' 2.3 + a x`.

Another class of models that will work but must be entered by hand
are multinomial fits, e.g., ‘`a + b x + c y + d x^2 + e y^2 + f x y`’.

Next: Error Estimates for Fits, Previous: Linear Fits, Up: Curve Fitting [Contents][Index]