Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

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

Search the Archive

Re: Variant of inner Product ...

  • To: mathgroup at smc.vnet.net
  • Subject: [mg56747] Re: [mg56683] Variant of inner Product ...
  • From: "Wolf, Hartmut" <Hartmut.Wolf at t-systems.com>
  • Date: Thu, 5 May 2005 06:01:29 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

 
>-----Original Message-----
>From: =?ISO-8859-1?Q?Detlef_M=FCller?= at smc.vnet.net 
To: mathgroup at smc.vnet.net
>[mailto:=?ISO-8859-1?Q?Detlef_M=FCller?= at smc.vnet.net] 
>Sent: Wednesday, May 04, 2005 6:33 AM
>Subject: [mg56747] [mg56683] Variant of inner Product ...
>
>Hello,
>
>I have the following to do:
>
>Given
>
>In[1]:= A={1,2,3}; B={{a,b},{c,d},{r,s}};
>
>And a Function f, I like to have
>
>Out[2] = {f[1,a],f[1,b]}+{f[2,c],f[2,d]}+{f[3,r],f[3,s]}
>
>The trial
>
>In[8]:=A={1,2,3}; B={{a,b},{c,d,e},{r,s}};
>In[9]:= Inner[f,A,B]
>Out[9]= f[1,{a,b}]+f[2,{c,d,e}]+f[3,{r,s}]
>
>looks promising,
>but if the Lists in B have the same length, "Inner"
>makes something different:
>
>In[15]:=
>A={1,2,3}; B={{a,b},{c,d},{r,s}}; Inner[f,A,B]
>
>Out[16]= {f[1,a]+f[2,c]+f[3,r],f[1,b]+f[2,d]+f[3,s]}
>
>So for now I have an ugly Table-Construction doing the job,
>but I can't imagine there is no elegant and clear solution
>for this ... any suggestions?
>
>Greetings,
>   Detlef
>
>

Detlef,

your desired expression will be reduced further, because Plus ist Listable. Such I'll show it with CirclePlus:

Observe:

In[38]:= Inner[f, A, B, g]
Out[38]=
{g[f[1, a], f[2, c], f[3, r]], g[f[1, b], f[2, d], f[3, s]]}


Such just use the right stuff for g:

In[39]:= CirclePlus @@ Transpose@Inner[f, A, B, List]
Out[39]=
{f[1, a], f[1, b]}\[CirclePlus]{f[2, c], f[2, d]}\[CirclePlus]{f[3, r], 
    f[3, s]}

Perhaps this appears simpler (?):

In[40]:= Thread[f[A, B]]
Out[40]= {f[1, {a, b}], f[2, {c, d}], f[3, {r, s}]}

In[41]:= CirclePlus @@ Thread /@ Thread[f[A, B]]
Out[41]=
{f[1, a], f[1, b]}\[CirclePlus]{f[2, c], f[2, d]}\[CirclePlus]{f[3, r], 
    f[3, s]}

--
Hartmut Wolf


  • Prev by Date: Re: Cases and Nonatomic expression
  • Next by Date: Re: changing algorithm, finding residuals w/FindFit
  • Previous by thread: Re: Variant of inner Product ...
  • Next by thread: Re: Re: Variant of inner Product ...