best fit 3D vector to points with a miss-distance specified
- To: mathgroup at smc.vnet.net
- Subject: [mg23122] best fit 3D vector to points with a miss-distance specified
- From: Wagner Truppel <wtruppel at ics.uci.edu>
- Date: Wed, 19 Apr 2000 02:30:51 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
At 1:01 AM -0500 on 3/31/00, Daniel Lichtblau wrote:
>Jim Fanning wrote:
>>
>> I would like to use Mathematica to solve for a vector in three dimensions
>> that best fits a set of data points where the points are given by {x,y,z,r}.
>> Where "x,y,z" is the data point location and "r" is the miss-distance from
>> the data point to the vector. Any suggestions would be greatly appreciated.
>>
>> Thanks, Jim
>
>Call the data points {x[1],y[1],z[1],r[1]}, ...{x[n],y[n],z[n],r[n]}.
>
>Then you might try something like
>
>FindMinimum[
> Sum[((x0-x[j])^2+(y0-y[j])^2+(z0-z[j])^2-r[j]^2)^2, {j,i,n}],
> {x0,0}, {y0,0}, {z0,0}]
>
>This tries to minimize total sum of squares of differences between
>actual distances and desired distances. Different formulations of your
>objective function could be used to minimize different error norms.
>
>Daniel Lichtblau
>Wolfram Research
Dear Daniel,
that approach looks fine, but how can Jim be sure he's found the
global minimum? For all we know, Mathematica may have
gradient-descended to a local one. It seems to me that the way to
alleviate the all-too-common problem of avoiding local extrema, in
this example, would be to try your suggestion a large number of
times, each with a randomly generated triplet of starting values for
{x0, y0, z0}, and record the resulting triplet whenever a lower
minimum is found.
Wagner Truppel
wtruppel at ics.uci.edu