       Re: Functional programming puzzle

• To: mathgroup at christensen.cybernetics.net
• Subject: [mg1827] Re: Functional programming puzzle
• From: Scott.A.Hill at williams.edu (Lancelot)
• Date: Thu, 3 Aug 1995 23:52:49 -0400
• Organization: Williams College, Williamstown MA

```In article <DCGM0w.5GH at wri.com>, Wm. Martin McClain <wmm at chem.wayne.edu> wrote:

>Let ptList = {{1,1,2},{2,1,3},{1,3,2}};
>
>I want a matrix of distances between the points in ptList.
>Any human would think you could get it with
>
>Rij[a_,b_]:=Sqrt[(a-b).(a-b)]
>
>followed by
>
>Outer[Rij,ptList,ptList]
[snip]
>I can do it for a short ptList this way:
>
>{p1->{1,1,2}, p2->{2,1,3}, p3->{1,3,2}}
>
>RijArray = Outer[Rij,{p1,p2,p3},{p1,p2,p3}];
>(gives output in terms of symbols p1, p2, and p3)
>
>Then replace the symbolic points by numerical
>points, and give it a hand with Dot[0,0]:
>
>RijNbrs = RijArray /.toNbrs /. Sqrt[0 . 0]->0;
>
>
>{{  0,     Sqrt,    2   },
> {Sqrt,    0,    Sqrt},
> {  2,     Sqrt,    0   }}
>
>But this gets out of hand when ptList is long.

Actually, this method will work with an arbitrary number of vectors,
with a little bit of tweaking.
Try this:

Rij[a_,b_]:=Sqrt[(a-b).(a-b)]
ptList={{1,1,2},{2,1,3},{1,3,2}}
vectors=Table[p[i],{i,Length[ptList]}]
RijArray=Outer[Rij,vectors,vectors]
RijNbrs=RijArray/.toNbrs/.Sqrt[0 . 0]->0

The trick, of course, is to replace your list {p1,p2,p3} with a list
of an aribitrary number of variables.  p,p,p,... does the
trick.  You might want to add a Clear[p] afterwards if you had a large
number of vectors and thus used a large number of p's.
There _should_ be a more elegant way of doing this, but I
don't know how.

>Also, with explicit indices I could cut the number of
>multiplies more than in half, because I know the
>result will be symmetric, with only zeroes on the
>diagonal.  Is there some way to include this
>knowledge in a functionally programmed version?

Again, not that I know of.

/
:@-) Scott
\

http://student_97ffa.williams.edu/~shill

```

• Prev by Date: Re: Functional programming puzzle
• Next by Date: Re: Mathematica Graphics
• Previous by thread: Re: Functional programming puzzle
• Next by thread: Re: Functional programming puzzle