Re: Problems with Outer

*To*: mathgroup at smc.vnet.net*Subject*: [mg2876] Re: Problems with Outer*From*: villegas (Robert Villegas)*Date*: Thu, 4 Jan 1996 03:04:15 -0500*Organization*: Wolfram Research, Inc.

In article <4caqcr$fc at dragonfly.wri.com> "Ross Moore <ross at zeus.mpce.mq.edu.au>" <ross at zeus.mpce.mq.edu.au> writes: > I want to create the outer product of some lists, whose > elements themselves may be lists. > But when the heads of the elements are List , the result > is quite different... > > (Zeus2.2.2) In[3]:= Outer[{#1,#2}& > , {List[a,a,a],List[b,b,b]} > , {List[c,c,c],List[d,d,d]}]//MatrixForm > > (Zeus2.2.2) Out[3]//MatrixForm= > a a a a a a a a a > c c c c c c c c c > a a a a a a a a a > d d d d d d d d d > > b b b b b b b b b > c c c c c c c c c > b b b b b b b b b > d d d d d d d d d If you are using version 2.2, then Outer accepts one or more integers after the lists specifying to what depth Outer should go in each of the lists. In general, Outer[f, list1, ..., listk, n1, ..., nk] means treat list1 as having depth n1, . . . , listk as having depth nk. We did not add this until version 2.2, which is why it did not appear in the second edition of the book. Applying this to your example: In[5]:= Outer[f, {{a, a, a}, {b, b, b}}, {{c, c, c}, {d, d, d}}, 1, 1] Out[5]= {{f[{a, a, a}, {c, c, c}], f[{a, a, a}, {d, d, d}]}, > {f[{b, b, b}, {c, c, c}], f[{b, b, b}, {d, d, d}]}} In[6]:= MatrixForm[%] Out[6]//MatrixForm= f[{a, a, a}, {c, c, c}] f[{a, a, a}, {d, d, d}] f[{b, b, b}, {c, c, c}] f[{b, b, b}, {d, d, d}] If you give just one depth specification, then it applies to all the lists, not just the first, so be careful not to assume that the rest will default to Infinity. In other words, Outer[f, list1, ..., listk, n] is equivalent to Outer[f, list1, ..., listk, n, n, ..., n] NOT to Outer[f, list1, ..., listk, n, Infinity, ..., Infinity]. Supply extra Infinity arguments if you don't want a lone depth specification to apply to all lists. Robby ==== [MESSAGE SEPARATOR] ====