MathGroup Archive 2009

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

Search the Archive

Re: symbolic matrix manipulation



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