Application Center - Maplesoft

App Preview:

Classroom Tips and Techniques: Nonlinear Curve Fitting

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application


Image 

 

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 syntax-free manner. 

 

 

  • Control-drag from Table 1
 

 

  • Context Menu: Assign Name
 

 

 

  • Control-drag from Table 1
 

 

  • Context Menu: Assign Name
 

 

 

 

  • Control-drag from Table 1
 

 

 

  • Context Menu: Assign Function
 

f

Table 2   Syntax-free data-entry 

 

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 degree-1 and press Plot
 

 

  • On "Done" return Plot
 

 

  • Press Done
 

 

 

 

 

Image 

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). 

 

Plot_2d 

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 

 

>
 

`/`(`*`(`+`(1, `*`(325390.193369913, `*`(x)))), `*`(`+`(1, `*`(5344.75747184660213, `*`(x)))))
 

>  
 

where the numeric value of the option "iterationlimit" was found by trial-and-error.  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 for-loop.  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 

 

>
 

[a = 5344.75747184660213, b = 60.8802541712883000]
 

>  
 

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

 

>
 

325390.1934
 

>  
 

In Figure 2, we have graphed the least-squares fitting function, and added to it the graph of the data and their piecewise linear interpolant from Figure 1.  The graph of the least-squares 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. 

 

Plot_2d 

Figure 2   The least-squares 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 

 

>
 

{a = 5344.757555, b = 60.88025337}
 

>  
 

The value of at this solution is 

 

>
 

61.45669876
 

>  
 

in agreement with the value found earlier. 

 

Alternatively, can be minimized with the Optimization assistant, as per Figure 3. 

 

Image 

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 least-squares solution, I was further asked how another function could make use of the optimal parameters in an expression such as 

 

>
 

`+`(`*`(a, `*`(x)), `*`(b, `*`(`^`(x, 2))))
 

>  
 

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
 

G

Table 4   Forming a function containing the optimal parameters 

 

Proof that the desired function has been generated is given by 

 

>
 

`+`(`*`(5344.75747184660213, `*`(t)), `*`(60.8802541712883000, `*`(`^`(t, 2))))
 

>  
 

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 pop-up, 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. 

 

Plot_2d 

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 re-adjust 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 non-commercial, non-profit use only. Contact Maplesoft for permission if you wish to use this application in for-profit activities.