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 **interpolating polynomial**.
Using the modified (14) data matrix, a model number of 4 gives
a polynomial that exactly matches all five data points:

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 section 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`.

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.

Go to the first, previous, next, last section, table of contents.