MathGroup Archive 2009

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

Search the Archive

Re: symbolic matrix manipulation

  • To: mathgroup at smc.vnet.net
  • Subject: [mg96064] Re: symbolic matrix manipulation
  • From: dh <dh at metrohm.com>
  • Date: Wed, 4 Feb 2009 05:18:24 -0500 (EST)
  • References: <gm99t7$70$1@smc.vnet.net>


Hi Ashwin,

Dot is not automatically distributed over Plus. Therefore, we must teach 

it. The save way is to define your own dot operator. But for simplicity 

let me be a bit sloppy and chnage the built in definition of Dot:

Unprotect[Dot];

x1__.(x2_ + x3__) = (x1.x2 + x1.x3)

(x2_ + x3__).x1__ = (x2.x1 + x3.x1)

x1__.(x2_ + x3__).x4__ = (x1.x2 + x1.x3).x4



Now we can apply a replacement rule several times:

a.b.b.a //. a.b -> (b.a + 1)

this gives: 1.b.a + b.1.a + b.b.a.a not yet what you want. Must must 

teach Mathematica that 1.b=b.1=b:

1 . x1_ = x1

x1_ . 1 = x1

now we get from:

2 b.a + b.b.a.a



hope this helps, Daniel





ashwin.tulapurkar at gmail.com wrote:

> Hi,

> I am trying to simplify the following matrix expression:

> a.b.b.a with the rule: replace a.b by (b.a+1). So I expect the final

> output to be

> a.b.b.a --> (b.a+1).b.a --> b.a.b.a+b.a --> b.(b.a+1).a+b.a -->

> b.b.a.a + 2 b.a

> 

> Can you tell me how to do this?

> 

> Thanks.

> -Ashwin

> 




  • Prev by Date: Loop programming; how do i do this ???
  • Next by Date: Split Screen Redux
  • Previous by thread: Re: symbolic matrix manipulation
  • Next by thread: Re: symbolic matrix manipulation