Factorizing linear equations



If U is your list of unknowns, how about
    [ U, makelist(ratcoef(eq,ui,1),ui,U) ]
?  This is with eq in the form of LHS-RHS, not LHS=RHS.

Example:

(%i1) eq: a*x+b*y+3*x+9*z-4;
(%o1)              9 z + b y + a x + 3 x - 4
(%i2) U: [x,y,z];
(%o2)               [x, y, z]
(%i3)     [ U, makelist(ratcoef(eq,ui,1),ui,U) ];
(%o3)               [[x, y, z], [a + 3, b, 9] ]


More efficient if you convert eq to CRE form beforehand: eq: rat(eq,U).
And more robust if you check that there are no non-linear terms. Word
to the wise: a typo can convert linear to non-linear.

                  -s

On Dec 2, 2007 9:14 AM, Adi Shavit <adish at eyetech.jp> wrote:
>    I have a linear equation set of the form A*x+B*y+C*z +... = 0
>  A,B,C.. are my parameters and x,y,z... are the unknowns.
>  However, not all equations contain all unknowns.
>
>  How can I split (or factorize) the equations into a vector dot product,
> e.g. [a,b,c,...] . [x,y,z...] for use later in a numerical linear solver of
> the form Ax=0?