>


Define Vectors X and Y, containing values of an independent variable x and a dependent variable y.
>


>


Find the values of a and b that minimize the leastsquares error when the model function is used.
>


 (1) 
Fit a polynomial of degree 3 through this data.
>


 (2) 
Use the output option to see the residual sum of squares and the standard errors.
>


 (3) 
Fit the model function , which is nonlinear in the parameters.
>


 (4) 
Consider now an experiment where quantities , , and are quantities influencing a quantity according to an approximate relationship
with unknown parameters , , and . Six data points are given by the following matrix, with respective columns for , , , and .
>


 (5) 
We take an initial guess that the first term will be approximately quadratic in , that will be approximately , and for we don't even know whether it's going to be positive or negative, so we guess . We compute both the model function and the residuals. Also, we select more verbose operation by setting .
>


>


In NonlinearFit (algebraic form)
 
 (6) 
We note that Maple selected the nonlinear fitting method. Furthermore, the exponent on is only about , and the other guesses were not very good either. However, this problem is conditioned well enough that Maple finds a good fit anyway.
Now suppose that the relationship that is used to model the data is altered as follows:
We adapt the calling sequence very slightly:
>


In Fit
In LinearFit (container form)
 
 (7) 
>


This time, Maple could select the linear fitting method, because the expression is linear in the parameters. The initial values for the parameters are not used.
Finally, consider a situation where an ordinary differential equation leads to results that need to be fitted. The system is given by
where and are parameters that we want to find, is a variable that we can vary between experiments, and is a quantity that we can measure at . We perform 10 experiments at , and the results are as follows.
>


 (8) 
>


 (9) 
We now need to set up a procedure that NonlinearFit can call to obtain the value for a given input value and a given pair of parameters and . We do this using dsolve/numeric.
>


 (10) 
>


 (11) 
We now have a procedure ODE_Solution that can compute the correct value, but we need to write a wrapper that has the form that NonlinearFit expects. We first need to call ODE_Solution once to set the parameters, then another time to obtain the value of at , and then return this value (for more information about how this works, see dsolve/numeric). By hand, we can do this as follows:
>


 (12) 
>


 (13) 
>


 (14) 
>


Note that for some settings of the parameters, we cannot obtain a solution. We need to take care of this in the procedure we create (which we call f), by returning a value that is very far from all output points, leading to a very bad fit for these erroneous parameter values.
>

f := proc(zValue, aValue, bValue) global ODE_Solution, a, b, z, x, t; ODE_Solution('parameters' = [a = aValue, b = bValue, z = zValue]); try return eval(x(t), ODE_Solution(1)); catch: return 100; end try; end proc;

 (15) 
>


 (16) 
We need to provide an initial estimate for the parameter values, because the fitting procedure is only performed in a local sense. We go with the values that provided a solution above: .
>


 (17) 