Re: surface fitting question
- To: mathgroup at smc.vnet.net
- Subject: [mg61362] Re: surface fitting question
- From: Ralph Smith <ralph at lkjlkj.com>
- Date: Mon, 17 Oct 2005 02:29:27 -0400 (EDT)
- References: <diprth$hpc$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On Sat, 15 Oct 2005 03:09:37 +0000 (UTC), Ralph Smith <ralph at lkjlkj.com> wrote: >I have this data in a file. It is a 2D table that 26 rows and 17 columns. > > | >----------------------------------------------------------------------- > | 0.000 0.000 0.000 ... 0.000 0.000 0.000 > | 0.050 0.050 0.155 ... 16.409 19.375 20.156 > | . > | . > | . > | 47.500 50.000 55.000 ... 2017.500 2075.580 2182.765 >----------------------------------------------------------------------- > | > >I would like to find an equation that describes this surface using >mathematica. I think that 3rd degree polynomials would be what I'm looking >for. So, maybe > data[x,y] = ax^3 + bx^2 + cx + d + ey^3 + fy^2 + gy > >I've seen and example that uses Fit[], so I think this can be done, but I'm >a novice at mathematica and don't know how to set this problem up. I have been >able to fit a polynomial to curve data, but now I need to fit a surface. > >thanks, >Ralph > > I finally understood the syntax and things are starting to work. It waw simple, but I needed to change my input text file to just the x,y,z points (one point per line) data1 = Table[ ReadList["c:\\curves1.txt", Number, RecordLists -> True]]; f1 = Fit[data1, { x, y, y^2, y^3}, {x, y}] Plot3D[f1, {x, 0, 250}, {y, 0, 3}, BoxRatios -> {1, 1, 1}, Axes -> True, AxesLabel -> {"RPM", "Amps", "Watts"}, ViewPoint -> {1.3, -3, .8}, Lighting -> True] Next I thought that I'd try ScatterPlot3D to just look at the raw data (unfitted). That was working yesterday, but after loading the notebook today. I no longer get a plot, just a printout of the numbers. At the top of the .nb file I have Needs["Graphics`Graphics3D`"]. The output looks like this: ScatterPlot3D[{0., 0., 0.}, {0., 0.05, 0.},....ViewPoint -> {1.3, -3, 0.8}, BoxRatios -> {1, 1, 1}, Lighting -> True, Axes -> True, AxesLabel -> {"RPM", "Amps", "Watts"}] with no error message. Here's what I'm trying to do. data0 = ReadList["c:\\curves1.txt", {Number, Number, Number} ]; ScatterPlot3D[data0, ViewPoint -> {1.3, -3, .8}, BoxRatios -> {1, 1, 1}, Lighting -> True, Axes -> True, AxesLabel -> {"RPM", "Amps", "Watts"}] I read about trying Remove[ScatterPlot3D] and reloading Graphics3D before using ScatterPlot3D, but I can't get the plot back. What's wrong? Also, I've never surface fitted before, I got a nice function with Fit[] but it doesn't fit my data very well at all. I threw out some terms since they were close to 0. w = 2.552*rpm*rpm - 1025.386*current + 1109.29*current*current - 220.538*current*current*current; Is there a way to fit this data more exactly with a function? I saw in another other post of this thread that some functions in the Statistics package may work but I haven't tried that yet. The scatterplot (when it worked) showed a fairly smooth (and simple) surface. The Fit[] with polynomials is way off at x=0. All of the z values should be 0 but I'm getting numbers like 100 or so for the surface along that line. thanks, Ralph