Subject: Cross product via 3x3 anti-symmetric matrix
From: Richard Fateman
Date: Tue, 13 May 2008 08:37:59 -0700
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
>