A vector is a list of elements from a common field. A matrix is a list of vectors of equal length. Vectors and matrices are special kinds of lists without holes.
gap> v:= [3, 6, 2, 5/2]; [ 3, 6, 2, 5/2 ] gap> IsVector(v); true
Vectors may be multiplied by scalars from their field. Multiplication of vectors of equal length results in their scalar product.
gap> 2 * v; [ 6, 12, 4, 5 ] gap> v * 1/3; [ 1, 2, 2/3, 5/6 ] gap> v * v; 221/4 # the scalar product of 'v' with itself
Note that the expression v * 1/3
is actually evaluated by first
multiplying v
by 1 (which yields again v
) and by then dividing by 3.
This is also an allowed scalar operation. The expression v/3
would
result in the same value.
A matrix is a list of vectors of equal length.
gap> m:= [[1, -1, 1], > [2, 0, -1], > [1, 1, 1]]; [ [ 1, -1, 1 ], [ 2, 0, -1 ], [ 1, 1, 1 ] ] gap> m[2][1]; 2
Syntactically a matrix is a list of lists. So the number 2 in the second
row and the first column of the matrix m
is referred to as the first
element of the second element of the list m
via m[2][1]
.
A matrix may be multiplied by scalars, vectors and other matrices. The vectors and matrices involved in such a multiplication must however have suitable dimensions.
gap> m:= [[1, 2, 3, 4], > [5, 6, 7, 8], > [9,10,11,12]]; [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 9, 10, 11, 12 ] ] gap> PrintArray(m); [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 9, 10, 11, 12 ] ] gap> [1, 0, 0, 0] * m; Error, Vector *: vectors must have the same length gap> [1, 0, 0] * m; [ 1, 2, 3, 4 ] gap> m * [1, 0, 0]; Error, Vector *: vectors must have the same length gap> m * [1, 0, 0, 0]; [ 1, 5, 9 ] gap> m * [0, 1, 0, 0]; [ 2, 6, 10 ]
Note that multiplication of a vector with a matrix will result in a linear combination of the rows of the matrix, while multiplication of a matrix with a vector results in a linear combination of the columns of the matrix. In the latter case the vector is considered as a column vector.
Submatrices can easily be extracted and assigned using the { }{ }
operator.
gap> sm := m{ [ 1, 2 ] }{ [ 3, 4 ] }; [ [ 3, 4 ], [ 7, 8 ] ] gap> sm{ [ 1, 2 ] }{ [2] } := [[1],[-1]]; [ [ 1 ], [ -1 ] ] gap> sm; [ [ 3, 1 ], [ 7, -1 ] ]
The first curly brackets contain the selection of rows, the second that of columns.
In this section you have met vectors and matrices as special lists. You have seen how to refer to elements of a matrix and how to multiply scalars, vectors, and matrices.
Fields are described in chapter Fields. The known fields in GAP are Subfields of Cyclotomic Fields and Finite Fields. Vectors and matrices are described in more detail in chapters Vectors and Matrices. Vector spaces are described in chapter Vector Spaces and further matrix Matrix Groups.
GAP 3.4.4