Go forward to Error Estimates for Fits.
Go backward to Linear Fits.
Go up to Curve Fitting.
Polynomial and Multilinear Fits
-------------------------------
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 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'.