MathGroup Archive 2012

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

Search the Archive

Re: Non Commutative Multiply

  • To: mathgroup at smc.vnet.net
  • Subject: [mg128614] Re: Non Commutative Multiply
  • From: daniel.lichtblau0 at gmail.com
  • Date: Thu, 8 Nov 2012 19:04:11 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-newout@smc.vnet.net
  • Delivered-to: mathgroup-newsend@smc.vnet.net
  • References: <k7fm4l$jko$1@smc.vnet.net>

On Thursday, November 8, 2012 1:16:35 AM UTC-6, digo wrote:
> Dear group,
> 
> 
> 
> I want to multiply two matrices, for example,
> 
> 
> 
> A = {{e, f}, {g, h}}
> 
> B = {{a, b}, {c, d}}
> 
> 
> 
> Using A.B, Mathematica returns
> 
> 
> 
> {{a e + b g, a f + b h}, {c e + d g, c f + d h}}
> 
> 
> 
> I would like to get, however, the following result:
> 
> 
> 
> {{e a + f c, e b + f d}, {g a + h c, g b + h d}}
> 
> 
> 
> since, for me, the entries {a,b,c,d,e,f,g,h} are operators, i.e., they
> 
> are non-commutative.
> 
> 
> 
> I could solve this problem clearing the attribute "Orderless" in the
> 
> built-in function Times:
> 
> 
> 
> ClearAttributes[Times, Orderless]
> 
> 
> 
> I know, however, this can be dangerous. I tried to define a function
> 
> Times2[a_,b_]:=Times[a,b]
> 
> and then use ClearAttributes[Times2, Orderless] but it doesn't work.
> 
> 
> 
> How could I solve this problem?
> 
> 
> 
> Thanks in advance
> 
> 
> 
> Rodrigo

Could use NonCommutativeMultiply inside Inner.

In[430]:= aA = {{e, f}, {g, h}};
bB = {{a, b}, {c, d}};

In[434]:= Inner[NonCommutativeMultiply, aA, bB, Plus]

Out[434]= {{e ** a + f ** c, e ** b + f ** d}, {g ** a + h ** c, 
  g ** b + h ** d}}

Daniel Lichtblau
Wolfram Research



  • Prev by Date: Re: Non Commutative Multiply
  • Next by Date: FindFit::eit Error Message in Mathematica
  • Previous by thread: Re: Non Commutative Multiply
  • Next by thread: Quirks of EventHandler