5.1.1.1 VectorSpace Objects

class VectorSpace
The class VectorSpace is the base class for all vector spaces classes. (One never instantiates objects of this class.)
VectorSpace( )

To create an ambient space over a field with given dimension using the calling syntax VectorSpace(field, dimension, sparse=True) and to create a subspace use VectorSpace(list_of_vectors), where list_of_vectors is a list of vectors in a VectorSpace.

First we create some ambient spaces.

sage: from sage.rings.rings import RationalField, CyclotomicField
sage: V = VectorSpace(RationalField(), 389); V
Full Vector space of degree 389 over Rational Field
sage: V.dimension()
389
sage: K = CyclotomicField(7)
sage: VK = VectorSpace(K, 3); VK
Full Vector space of degree 3 over Cyclotomic Field of order 7
and degree 6
sage: K.gen(0)*VK.gen(1)
(0 zeta_7 0)

Next we create some subspaces.

sage: W = VectorSpace([VK.gen(1) + K.gen(0)*VK.gen(2)]); W
Vector space of degree 3, dimension 1 over Cyclotomic Field of
order 7 and degree 6
Basis matrix:
[     0      1 zeta_7]

sage: V = VectorSpace(RationalField(), 3)
sage: W = VectorSpace([V.gen(0)]); W
Vector space of degree 3, dimension 1 over Rational Field
Basis matrix:
[1 0 0]
sage: v0 = V([1,2,3])
sage: v1 = V([4,5,6])
sage: v2 = V([7,8,9])
sage: W = VectorSpace([v0,v1,v2]); W
Vector space of degree 3, dimension 2 over Rational Field
Basis matrix:
[ 1  0 -1]
[ 0  1  2]

We illustrate most of the functions on an ambient space:

sage: V = VectorSpace(RationalField(), 3)
sage: V.ambient_space()
Full Vector space of degree 3 over Rational Field
sage: V == V.ambient_space()
True
sage: V == VectorSpace(CyclotomicField(3), 3)
False
sage: V.base_field()
Rational Field
sage: V.basis()
[(1 0 0), (0 1 0), (0 0 1)]
sage: V.coordinates(V._0 + 2*V._1 - 3*V._2)
[1, 2, -3]
sage: V.degree()
3
sage: V.dimension()
3
sage: V.gen(0)
(1 0 0)
sage: V.is_dense()
True
sage: V.is_sparse()
False
sage: V.matrix()
[1 0 0]
[0 1 0]
[0 0 1]
sage: V.ngens()
3
sage: V.random_element() in V
True
sage: V.vector([1,2,3])
(1 2 3)
sage: V.vector_space(100)
Full Vector space of degree 100 over Rational Field
sage: V.zero_vector()
(0 0 0)

We create a sparse ambient vector space, and demonstrate each of the above functions on it.

sage: V = VectorSpace(RationalField(), 3, sparse=True)
sage: V.ambient_space()
Full Vector space of degree 3 over Rational Field
sage: V == V.ambient_space()
True
sage: V == VectorSpace(CyclotomicField(3), 3)
False
sage: V.base_field()
Rational Field
sage: V.basis()
[(1 0 0), (0 1 0), (0 0 1)]
sage: V.coordinates(V._0 + 2*V._1 - 3*V._2)
[1, 2, -3]
sage: V.degree()
3
sage: V.dimension()
3
sage: V.gen(0)
(1 0 0)
sage: V.is_dense()
False
sage: V.is_sparse()
True
sage: V.matrix()
[1 0 0]
[0 1 0]
[0 0 1]
sage: V.matrix().is_sparse()
True
sage: V.ngens()
3
sage: V.random_element() in V
True
sage: v = V.vector([1,2,3]); v
(1 2 3)
sage: v.is_sparse()
True
sage: W = V.vector_space(100); W
Full Vector space of degree 100 over Rational Field
sage: W.is_sparse()
True

We create a subspace of a dense vector space, and illustrate each function on it:

sage: V0 = VectorSpace(RationalField(), 3)
sage: V = VectorSpace([V0([1,2,3]), V0([4,5,6]), V0([7,8,9])]); V
Vector space of degree 3, dimension 2 over Rational Field
Basis matrix:
[ 1  0 -1]
[ 0  1  2]
sage: V.ambient_space()
Full Vector space of degree 3 over Rational Field
sage: V == V.ambient_space()
False
sage: V.base_field()
Rational Field
sage: V.generators()
[(1 2 3), (4 5 6), (7 8 9)]
sage: V.coordinates(V([1, 0, -1]))
[1, 0]
sage: V.coordinates(V([1, 0, 0]))
Traceback (most recent call last):
...
ArithmeticError: v is not in self
sage: V.degree()
3
sage: V.dimension()
2

Note that the ith generator of a subspace is not the ith element of the list of vectors that generators, but is the free generator, i.e., the ith basis vector.

sage: w = V.gen(0); w
(1 0 -1)
sage: w.is_sparse()
False
sage: V.is_dense()
True
sage: V.matrix()
[ 1  0 -1]
[ 0  1  2]
sage: V.matrix().is_sparse()
False
sage: V.ngens()
2
sage: V.random_element() in V
True
sage: V.vector([1,2,3])
(1 2 3)
sage: V([1,2,3])
(1 2 3)
sage: V.vector([1,0,0])
Traceback (most recent call last):
...
ArithmeticError: v is not in self
sage: V.zero_vector()
(0 0 0)

We create a subspace of a sparse vector space, and illustrate each function on it:

sage: V0 = VectorSpace(RationalField(), 3, sparse =True)
sage: V0.is_sparse()
True
sage: V = VectorSpace([V0([1,2,3]), V0([4,5,6]), V0([7,8,9])]); V
Vector space of degree 3, dimension 2 over Rational Field
Basis matrix:
[ 1  0 -1]
[ 0  1  2]
sage: V.is_sparse()
True
sage: V.ambient_space()
Full Vector space of degree 3 over Rational Field
sage: V == V.ambient_space()
False
sage: V.base_field()
Rational Field
sage: V.generators()
[(1 2 3), (4 5 6), (7 8 9)]
sage: V.coordinates(V([1, 0, -1]))
[1, 0]
sage: V.coordinates(V([1, 0, 0]))
Traceback (most recent call last):
...
ArithmeticError: v is not in self
sage: V.degree()
3
sage: w = V.gen(0); w
(1 0 -1)
sage: w.is_sparse()
True
sage: V.is_dense()
False
sage: V.matrix()
[ 1  0 -1]
[ 0  1  2]
sage: V.matrix().is_sparse()
True
sage: V.ngens()
2
sage: V.random_element() in V
True
sage: V.vector([1,2,3])
(1 2 3)
sage: V.vector([1,0,0])
Traceback (most recent call last):
...
ArithmeticError: v is not in self
sage: V.zero_vector()
(0 0 0)

Instances of class VectorSpace have the following methods (in addition to inherited methods and special methods):

These methods are defined as follows:

See About this document... for information on suggesting changes.