#
distance_to_position

**distance_to_position**,
a MATLAB code which
estimates the positions of cities given a city-to-city distance table.

In 2D, the problem is singular. In particular, the position of one
city is completely arbitrary, and one component of a second city is
completely arbitrary (and a third city's position can be "flipped"
about the line connecting cities one and two). To remove some of this
singularity, the program assigns city #1 the position (0,0) and city #2
is given a zero Y coordinate.

In N-dimensional space, a similar set of constraints must be placed
on the first N cities, or the least squares solver is likely to fail.
(That is, we specify all N components of the first city to be 0,
N-1 components of the second one, and so on, up to the N-th city
which has a single zero component).

The computations carried out by this program assume that the cities
lie on a plane. If the distance data is for international cities,
the effect of spherical geometry may make the planar approximation
very bad.

Once the nonlinear least squares problem is set up, MATLAB's
LSQNONLIN function is called to seek a solution.

###
Usage:

**distance_to_position** ( *'distance.txt'* )

reads the distance information in *'distance.txt'*, estimates the
positions of the cities, and writes out a position table in *distance.coord.txt*.
###
Licensing:

The computer code and data files described and made available on this web page
are distributed under
the MIT license

###
Languages:

**distance_to_position** is available in
a FORTRAN90 version and
a MATLAB version.

###
Related Data and Programs:

chain_letter_tree,
a MATLAB code which analyzes a similarity matrix for 11 versions
of a single chain letter and produces a dendrogram or tree diagram
that suggests the degrees of relatedness and the evolutionary history
of the letters.

cities,
a dataset directory which
contains sets of information about cities and the distances
between them;

cities,
a MATLAB code which
handles various problems associated with a set of "cities" on a map.

distance_to_position_sphere,
a MATLAB code which
estimates the positions of cities on a sphere (such as the earth)
based on a city-to-city distance table.

distance_to_position_test

partial_digest,
a MATLAB code which
solves the partial digest problem.

###
Source Code:

*
Last revised on 07 January 2019.
*