# Matrix of vectors

Hi.

Suppose that I have a collection of vectors $v_1, \ldots, v_n \in \mathbb{R}^3$ and I wish to compute all cross products $v_i \times v_j \in \mathbb{R}^3$ where $1 \leq i < j \leq n$. Is it possible to store the output in a matrix, i.e. can I form a matrix M in Sage where $M(i,j) = v_i \times v_j$?

edit retag close merge delete

Sort by » oldest newest most voted

What kind of operations would you do on a 3-dimensional matrix? As far as I know this is not possible in Sage because the matrix needs to be defined over some ring. If you are not doing any fancy operations, then you might as well just store the vectors in a list of lists.

sage: v = vector(ZZ, [1,2,3])
sage: w = vector(ZZ, [2,3,4])
sage: V = [v, w]
sage: L = [[a.cross_product(b) for b in V] for a in V]
sage: L
[[(0, 0, 0), (-1, 2, -1)], [(1, -2, 1), (0, 0, 0)]]

more

What I would like is to create a matrix M where M(i,j) is a vector, not just a real number!

The code you gave produces a 2x2 matrix just of real numbers I believe. I want vectors to specify the entries M(i,j) of M, not the rows/columns.

more

You should have written this as a comment to calc314's answer, not as an answer to your question. On the other hand, ppurka's answer is appropriate and you should accept it (click the "accept" button) so that you question is displayed as solved and the correct answer is highlighted.

( 2013-04-15 10:14:24 -0600 )edit