Classroom Tips and Techniques: Nonlinear Curve Fitting
Robert J. Lopez
Emeritus Professor of Mathematics and Maple Fellow
Maplesoft
Introduction
I was recently asked for help in fitting a nonlinear curve to data, and then drawing related graphs of the data and the fitting curve. This month's article summarizes all the advice about nonlinear least squares I generated in response to the user's questions.
Initializations
Problem Statement
Table 1 contains, with simplified notation, the data and fitting function presented to me. The data points , were presented in the form of two vectors X and Y, and the fitting function was given as , with and as two parameters to be found. The fitting function is indeed nonlinear in these parameters.
, ,

Table 1 The data for the nonlinear least squares fit

Graph of the Data Points
Table 2 shows how the data can be entered in a syntaxfree manner.
 Controldrag from Table 1
 Context Menu: Assign Name


 Controldrag from Table 1
 Context Menu: Assign Name


 Controldrag from Table 1
 Context Menu: Assign Function


Table 2 Syntaxfree dataentry 
Figure 1, a graph of the points and their piecewise linear interpolant, can be obtained with the Curve Fitting Assistant, as per the steps articulated in Table 3.
 Enter the sequence and press the Enter key.
 Context Menu: Curve Fitting?Interactive Curve Fitting?
 In the Splines section, select degree1 and press Plot



Table 3 Use of the Curve Fitting Assistant to graph data points and their piecewise linear interpolant

The points in Figure 1 were rendered as solid dots by using the Context Menu for the graph (click on one of the points) and selecting Symbol?Circle (Solid).

Figure 1 Data points and piecewise linear interpolant

If the Curve Fitting Assistant is not used, the graph in Figure 1 would have to be constructed by overlaying the separate graphs of the points and the interpolant.
Least Squares
The Fit command in the Statistics package decides if a linear or nonlinear algorithm is called. The fitting function is obtained with
> 

where the numeric value of the option "iterationlimit" was found by trialanderror. Additional information about the fitting function and its calculation can be obtained by generating the module
> 

and interrogating it with
> 

The module content is a sequence we have displayed elementwise by use of the forloop. The values of the parameters, the minimum value of the sum of squares of deviations, and the individual residuals are amongst the items recovered from the calculation. In particular, the values of the parameters and can be accessed via
> 

That the product in the numerator of the fitting function is ? can be verified by the following evaluation.
> 

In Figure 2, we have graphed the leastsquares fitting function, and added to it the graph of the data and their piecewise linear interpolant from Figure 1. The graph of the leastsquares function is obtained with the Plot Builder, launched from the Context Menu. The graph in Figure 1 is added by simply copying and pasting . Of course, the alternative would be creating two separate plots and joining them with the display command in the plots package.

Figure 2 The leastsquares fitting function, the data points, and their piecewise linear interpolant.

First Principles
The nonlinear fit can also be obtained by forming and minimizing the sum of squares of deviations
> 

differentiating to obtain the normal equations
> 

and solving numerically to obtain
> 

The value of at this solution is
> 

in agreement with the value found earlier.
Alternatively, can be minimized with the Optimization assistant, as per Figure 3.

Figure 3 Minimization of sum of squares by the Optimization Assistant

The Edit button is used to insert the Objective Function, and this can be referenced by its name, . On the left, select as solver the nonlinear simplex method. Setting the number of function evaluations to 200 will allow the Solve button to find the minimum.
Functions of the Optimal Parameters
After having provided this nonlinear leastsquares solution, I was further asked how another function could make use of the optimal parameters in an expression such as
> 

The simplest way to form the desired function is shown in Table 4. The alternative would involve use of the unapply command.
 Using the evaluation template from the Expression palette, form the equation
 Context Menu: Assign Function


Table 4 Forming a function containing the optimal parameters 
Proof that the desired function has been generated is given by
> 

To evaluate this function at the nodes , we could use the new syntax for elementwise operations, as in
> 

Alternatively, in the Context Menu for , select "Map Command Onto," and in the popup, provide the name .
Figure 4, a graph of and the points can be constructed from separate plots of the points and of (using the display command from the plots package), or it can be constructed interactively via the Context Menu.

Figure 4 Graph of and the points

The interactive construction of Figure 4 begins with juxtaposing the two vectors and selecting Plots?Plot Builder from the Context Menu. The domain for a plot of the six points is . The expression for can be dropped onto the graph of the points, with the Context Menu for the resulting composite graph used to readjust the plot window. Select Axes?Properties, and in the dialog that appears, uncheck "Use Data Extents" so appropriate Range values can be inserted.
Legal Notice: Maplesoft, a division of Waterloo Maple Inc. 2009. Maplesoft and Maple are trademarks of Waterloo Maple Inc. This application may contain errors and Maplesoft is not liable for any damages resulting from the use of this material. This application is intended for noncommercial, nonprofit use only. Contact Maplesoft for permission if you wish to use this application in forprofit activities.