🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: sci.math.num-analysis
1 messages
1 total messages Started by Veljko Roskar Fri, 05 Oct 1990 00:57
Fitting a surface to 3D data and plotting with Mathematica
#570
Author: Veljko Roskar
Date: Fri, 05 Oct 1990 00:57
145 lines
5603 bytes
Since only one person replied to my question about fitting a surface
to 3-dimensinal data, I am asking again for help.


This time I will be more general:

Using Mathematica, is there an easy procedure to plot both 3-dimensional
points and a surface that gives a best fit to these points?

The data is linear in one dimension and has a polynomial dependency
in the other, but a cubic-spline fit would give the best fit in both
dimensions.

Because of my time constraint, I cannot code the procedures from
Numerical Recipes in Fortran. Besides it's the 3D plot I'm after, not
an equation to model the data.

Below is a summary (long) of the correspondence I've exchanged with Jerry
who was my only help so far:

This is what my data looks like, the third variable is a function 
of the first two:

^L
...
My data:

co1=List[{.807,1.0,22.84},{.575,1.0,12.36},{.417,1.0,7.43},{.267,1
.0,3.44},{0,1.0,1.23}]

co2=List[{.807,1.1,24.41},{.575,1.1,13.82},{.417,1.1,8.40},{.267,1
.1,3.85},{0,1.1,1.27}]

co3=List[{.807,1.2,25.97},{.575,1.2,15.29},{.417,1.2,9.37},{.267,1
.2,4.26},{0,1.2,1.31}]

co4=List[{.807,1.3,27.54},{.575,1.3,16.75},{.417,1.3,10.3},{.267,1
.3,4.67},{0,1.3,1.35}]

Note that the first variable repeats itself in every Rco#S set, 
and that the second one is constant in each set.
...

+++++++++++++++
From:   IN%"trantow%csd4.csd.uwm.edu%rutgers@APLCEN.BITNET"  "Jerry J Trantow"  2-OCT-1990 10:06:11.71
To:	roskar%jhunix%aplcen@mimsy
Subj:	RE: Fitting surfaces (planes) to (x,y,f(x,y)) data:Mathematica

I don't think Fit[] will do what you want.  What you really want is simple
multiple regression.   I just had to do this for a HW assignment and I spent
a few extra minutes doing the graphics you also requested.
     
I'm not sure how this will cut/paste, but here goes
Problem 1.4.8 Multiple Regression
Multiple Regression fits two-dimensional data by a plane
y=C+Dt+Ez, instead of one-dimensional data by a line.  If we are given
(t,z,b)
Write down the 4 equations in the 3 unknowns C,D,E.  What is the least
squares solution from the normal equations?
givendata={{0,0,2},{0,1,2},{1,0,1},{1,1,5}}
{{0, 0, 2}, {0, 1, 2}, {1, 0, 1}, {1, 1, 5}}
A=Table[{1,givendata[[i,1]],givendata[[i,2]]},{i,1,4}];MatrixForm[A]
1  0  0
     
1  0  1
     
1  1  0
     
1  1  1
b=Table[{givendata[[i,3]]},{i,1,4}]
{{2}, {2}, {1}, {5}}
Aprime=Transpose[A].A;bprime=Transpose[A].b
{{10}, {6}, {7}}
solution=LinearSolve[Aprime,bprime]
{{1}, {1}, {2}}
yplane[w_]=Transpose[solution].w
{{1, 1, 2}} . w
ypoly=Polygon[{{0,0,yplane[{{1},{0},{0}}][[1,1]]},
               {0,1,yplane[{{1},{0},{1}}][[1,1]]},
               {1,0,yplane[{{1},{1},{0}}][[1,1]]},
               {1,1,yplane[{{1},{1},{1}}][[1,1]]}}]
Polygon[{{0, 0, 1}, {0, 1, 3}, {1, 0, 2}, {1, 1, 4}}]
abc=Table[Graphics3D[Point[givendata[[i]]]],{i,1,4}]
Show[Graphics3D[ypoly],ViewPoint->{2,1,2}]
Show[Graphics3D[PointSize[.02]],abc,ViewPoint->{2,1,2}]
Show[Graphics3D[PointSize[.02]],abc,Graphics3D[ypoly],ViewPoint->{2,1,2}]

I will also pop a copy of this into snail mail for you.  Good luck.
....


************
^L
My reply:
You mailed me:
...
Problem 1.4.8 Multiple Regression
Multiple Regression fits two-dimensional data by a plane
y=C+Dt+Ez, instead of one-dimensional data by a line.  If we are given
(t,z,b)
Write down the 4 equations in the 3 unknowns C,D,E.  What is the least
squares solution from the normal equations?
...
 
Did you mean y=Cb+Dt+Ez?  There is also the problem that in one dimension
my data is linear (the third variable w/respect to the second--from
co1 to co4), and in the second dimension it best fits a polynomial of the
2nd order (the third variable with respect to the first--for each co# set).
 
So my surface will look like a bent sheet of paper that's angled about an
axis perpendicular to the "axis" of the bend.
 
Any ideas?
...
***************
^L
From:   IN%"trantow@csd4.csd.uwm.EDU"  "Jerry J Trantow"  2-OCT-1990 22:19:44.39
To:	ROSKAR@JHUVMS.BITNET, trantow@csd4.csd.uwm.EDU
Subj:	RE: Fitting a plane to 3D data

The example I gave was correct as sent.  In one dimension

y=-mx+b with x being the variable

In two dimensions, you are fitting 

y=C+Dt+Ez  with t and z being the variables.  I didn't pick the variable
           names they were given in the book.  If your data requires a 
           second order  polynomial, I suspect you could set up the equation
           to be 

y=C+Dt+Ez+Fx^2

           the same technique as I gave should work.  I mailed it off to you
           today.  Find a linear algebra or statistic book that shows how
           to do multiple regression.  Your problem does not seem very bad.

****************
End of included text.


-- 
Veljko Roskar                            | roskar@jhuvms.bitnet
Department of Chemical Engineering       | roskar@jhuvms.hcf.jhu.edu  
The Johns Hopkins University, Baltimore  | uunet!mimsy!aplcen!jhunix!roskar
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads