MathGroup Archive 2003

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

Search the Archive

What is a smart way to do this?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg38881] What is a smart way to do this?
  • From: nobody at this.org
  • Date: Fri, 17 Jan 2003 05:38:39 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

Dear Mathematica user,


I have a very simple problem to solve, but no elegant solution for it.

I deal with NxN matrices of integral entries where rows and columns are all
proportional, e.g. for 3x3:

    ( 4   8  12 )
    (           )
M = ( 5  10  15 )
    (           )
    ( 6  12  18 )

I need to decompose these matrices as a (Times) product:

 M = {{1,2,3},{1,2,3},{1,2,3}} * {{4,4,4},{5,5,5},{6,6,6}}
there is no error: * is Times, not Dot.

which I shall write M = {1,2,3}<*>{4,5,6}

Finding the absolute values of components of the product M is easy, using
Gcd on rows of M then of Transpose[M].

I MUST be blind, but what I don't see is how to restore correct signs
efficiently without resorting to ugly code. For instance:

    ( -4  -8  12 )
    (            )
M = (  5  10 -15 )
    (            )
    (  6  12 -18 )

 M = {{1,2,-3},{1,2,-3},{1,2,-3}} * {{-4,-4,-4},{5,5,5},{6,6,6}}
   = {1,2,-3} <*> {-4,5,6}

There always are two solutions with global sign change, since if
M = u <*> v, then M = (-u) <*> (-v). Any of {u,v} or {-u,-v} will do.

Shame on me for asking such an elementary question!

Thank you.


  • Prev by Date: Re: Mathematica, Windows 2000 and Service Pack 3 (The good, the bad and the ugly ?)
  • Next by Date: Re: solving matrix equations or joining mathgroup
  • Previous by thread: Re: Use of units and simplification
  • Next by thread: RE: What is a smart way to do this?