Bivariate Polynomial Regression - Maple Programming Help

Online Help

All Products    Maple    MapleSim


Home : Support : Online Help : Applications and Example Worksheets : Applications : applications/BivariatePolynomialRegression

Bivariate Polynomial Regression

This application:

• 

Allows arbitrary 3-D data to be specified (for example, a table of X, Y, Z points).

• 

Generates a bivariate polynomial with a customizable order.

• 

Fits the polynomial to the data with a least-squares fit.

• 

Plots the data against the best-fit polynomial surface.

Specify the Data Set

Below we include some sample point data in a DataTable component and associate it with the variable data.

 

Alternatively, this data could be imported from an external source using the Import command.

 

Define Model Equation

The general form of a bivariate polynomial of total degree n is given by:

f:=nj=0ni=0nai,jxiyj

n→j=0ni=0nai,jxiyj

(2.1)

For example, the general form for a bivariate quadratic is:

f2

x2y2a2,2+x2ya2,1+xy2a1,2+x2a2,0+xya1,1+y2a0,2+xa1,0+ya0,1+a0,0

(2.2)

Next, we choose the order of the bivariate polynomial which we will fit to the points. Increasing this value will refine the fit.

n  3

3

(2.3)

poly  unapplyfn,x,y

x,y→x3y3a3,3+x3y2a3,2+x2y3a2,3+x3ya3,1+x2y2a2,2+xy3a1,3+x3a3,0+x2ya2,1+xy2a1,2+y3a0,3+x2a2,0+xya1,1+y2a0,2+xa1,0+ya0,1+a0,0

(2.4)

 

Calculate Parameters by Least Squares Minimization

 

Separate and normalize the data

withLinearAlgebra:

X  Normalizedata.., 1, Euclidean

1 .. 176 VectorcolumnData Type: float8Storage: rectangularOrder: Fortran_order

(3.1)

Y  Normalizedata.., 2, Euclidean

1 .. 176 VectorcolumnData Type: float8Storage: rectangularOrder: Fortran_order

(3.2)

Z  data.., 3

1 .. 176 VectorcolumnData Type: float8Storage: rectangularOrder: Fortran_order

(3.3)

nRows  RowDimensiondata

176

(3.4)

Define objective function:

sse  addpolyXi, YiZi2, i = 1 .. nRows :

Minimize the objective function:

results  Optimization:-Minimizesse, iterationlimit = 10000000

5570.44474478066,a0,0=845.161626107228,a0,1=86.1947006441850,a0,2=1458.30435684886,a0,3=281.463539195548,a1,0=217.408601231052,a1,1=741.790713964468,a1,2=2291.92998724876,a1,3=40269.8139678463,a2,0=2406.91365945805,a2,1=2106.61413635431,a2,2=35753.8882512103,a2,3=2.91162032188594105,a3,0=378.725838677840,a3,1=24869.3026838967,a3,2=3.49072733326538105,a3,3=1.15434999607880106

(3.5)

 

Assign the values corresponding to the minimum value to the parameters:

assignresults2

 

Plot Original Data against Best Fit Surface

Original Data:

p1  plotspointplot3dX,Y,Z,color=black,symbol=solidsphere,symbolsize=10

Best Fit Surface:

p2:=plot3dpolyx,y,x=minX..maxX,y=minY..maxY,style=patchnogrid,transparency=0.5

plotsdisplayp1,p2