MathGroup Archive 2014

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: FindFit and LeastSquares

  • To: mathgroup at smc.vnet.net
  • Subject: [mg132407] Re: FindFit and LeastSquares
  • From: Alexei Boulbitch <Alexei.Boulbitch at iee.lu>
  • Date: Mon, 10 Mar 2014 04:38:53 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-outx@smc.vnet.net
  • Delivered-to: mathgroup-newsendx@smc.vnet.net

Hello All,

I have an assignment to use Linear Least Squares to determine the orbital
parameters given the following observations as (x,y)
coordinates:  (1.02,.39), (.95,.32), (.87,.27), (.77,.22), (.67,.18),
(.56,.15), (.44,.13), (.30,.12), (.16,.13), (.01,.15). I am asked to plot
the resulting orbit for the given data points.

Here is what I have been playing with:

a1 = {{1.02, .39}, {.95, .32}};
b1 = {{.87, .27}, {.77, .22}};
c1 = {{.67, .18}, {.56, .15}};
d1 = {{.44, .13}, {.3, .12}};
e1 = {{.16, .13}, {.01, .15}};
r = ListPlot[{a1, b1, c1, d1, e1}]
points = {{a1}, {b1}, {c1}, {d1}, {e1}};
data = {{1.02, .39}, {.95, .32}, {.87, .27}, {.77, .22}, {.67, .18}, {.56, \
.15}, {.44, .13}, {.3, .12}, {.16, .13}, {.01, .15}}

model = a*y^2 + b*x*y + c*x + d*y + e - x^2
FindFit[data, model, {a, b, c, d, e}, {x, y}]
l = LeastSquares[{a1, b1, c1, d1, e1},_]

I've been getting the error that FindFit is not a list or a rectangular
array, among others.

I was wondering you have any suggestions.

Thanks!

Alexandra Lipson


Hi, Alexandra,

The problem with FindFit is that the data represents pairs of numbers, such as data={{x1,y1}, {x2,y2}...}, rather than triples. In this case FindFit can determine y=y(x), but cannot find z=z(x,y). This is, however, what you expect to do, since your model is a function depending on two variables x and y. For the latter you should have the data consisting of triples, such as data={{x1,y1,z1}, {x2,y2,z2}...}.

If finding y=y(x) is OK with you, this is readily done. Check this:

data = {{1.02, .39}, {.95, .32}, {.87, .27}, {.77, .22}, {.67, .18}, {.56, .15}, {.44, .13}, {.3, .12}, {.16, .13}, {.01, .15}};

model = a + b*x + c*x^2 + d*x^3;

ff = FindFit[data, model, {a, b, c, d}, x]

{a -> 0.150252, b -> -0.145231, c -> 0.108877, d -> 0.252976}

Then you may also have a visual check of the fitting quality by evaluating this:

Show[{
  ListPlot[data],
  Plot[model /. ff, {x, 0, 1.1}, PlotStyle -> Red]
  }]

Have fun, Alexei


Alexei BOULBITCH, Dr., habil.
IEE S.A.
ZAE Weiergewan,
11, rue Edmond Reuter,
L-5326 Contern, LUXEMBOURG

Office phone :  +352-2454-2566
Office fax:       +352-2454-3566
mobile phone:  +49 151 52 40 66 44

e-mail: alexei.boulbitch at iee.lu





  • Prev by Date: What comes on the media kit DVD?
  • Next by Date: Re: FindFit and LeastSquares
  • Previous by thread: Re: FindFit and LeastSquares
  • Next by thread: Re: FindFit and LeastSquares