Cross product via 3x3 anti-symmetric matrix



why not

cross33(v):= matrix([0, -v[3],  v[2]],
                    [v[3], 0 , -v[1]],
                    [-v[2], v[1], 0])$

?
RJF
             
                    

> -----Original Message-----
> From: maxima-bounces at math.utexas.edu 
> [mailto:maxima-bounces at math.utexas.edu] On Behalf Of weaker
> Sent: Tuesday, May 13, 2008 8:38 AM
> To: maxima at math.utexas.edu
> Subject: Cross product via 3x3 anti-symmetric matrix
> 
> Hi all you Maxima experts,
> 
> I need a cross product via a 3x3 anti-symmetric matrix.
> 
> And I don't want to use load("vect") due to the commutative behaviour
> with the dot product.
> 
> I want the following: A method/macro/whatever that takes a 3x1 vector
>                                     [ ax ]
>                                     [ ay ]
>                                     [ az ]
> and creates the following anti-symmetric matrix out of it
>                              [  0    - az   ay  ]
>                              [  az    0    - ax ]
>                              [ - ay   ax    0   ]
> 
> Just as a syntactical transformation, putting the vector elements into
> the right places inside the matrix (and adding a '-').
>                              
> I want to use this method in that way (the numbers reflect the
> dimensions):
> 
> resultmatrix33 : crossp33(matrix33 . vector31) . othermatrix33;
> 
> It is important that it can transform the vector even if it is the
> result of a calculation like  matrix33 . vector31
> 
> I don't know much about LISP so I might be thinking too much in C++
> return value terms :-)
> 
> Best regards,
> weaker
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
>