About Data Structures in the LinearAlgebra Package - Maple Programming Help

Home : Support : Online Help : Mathematics : Linear Algebra : LinearAlgebra Package : Data Structures : LinearAlgebra/General/aboutdata

About Data Structures in the LinearAlgebra Package

 LinearAlgebra routines operate on three principal data structures: Matrices, Vectors, and scalars. The implementation of Matrices and Vectors is based on Maple's rtable data structure. As a result, table-based arrays, matrices and vectors are not interchangeable with LinearAlgebra Matrices and Vectors.
 Note:  The documentation regarding the LinearAlgebra package uses the convention that "matrix" (lowercase "m") refers to a table-based matrix used by routines in the linalg package, and "Matrix" (uppercase "M") refers to an rtable-based Matrix used by routines in the LinearAlgebra package. The convention is similar for vectors and Vectors.

Matrices

 • A Matrix is implemented as an rtable with subtype option Matrix.
 • Matrices are created by using the Matrix(..) constructor command, or by using the shortcut notation ().
 • The mathematical Matrix types supported in the LinearAlgebra package are: rectangular, triangular, Hessenberg, band, and diagonal. Each of these Matrix types can be created in dense or sparse format, and the first three also come in several varieties.
 i.  rectangular:

 symmetric, skew-symmetric, hermitian, skew-hermitian

 ii.  triangular:

 upper, upper unit, lower, lower unit

 iii.  Hessenberg (triangular plus one extra diagonal):

 upper, lower

 There is no special Matrix type for block forms of the above Matrix types. That is, while the facility exists for the construction of block Matrices of various types (e.g., block diagonal, block triangular, etc.), the blocks are flattened during the construction process, and the resulting Matrix does not preserve the block form.
 • A number of special Matrices are provided in the LinearAlgebra package (e.g., the Identity Matrix, the Zero Matrix, and the Constant Matrix). In addition, the LinearAlgebra package includes many Matrix operations. See Details of the LinearAlgebra Package for more information.
 • The type recognizer for a Matrix is type/Matrix.
 • The i, jth entry of the Matrix A is accessed, extracted, and assigned to by using the notation A[i, j]. For more information see Matrix Entry Extraction and Matrix Entry Assignment.
 • Matrix algebra expressions such as A+B, A-B, and A.B are evaluated directly.  For more information on performing Matrix algebra and using the Matrix multiplication operator, see rtable_algebra and dot, respectively.
 • The map, Map, map2, and Map2 commands can be used to apply a function to each entry in a Matrix.

Vectors

 • A Vector is implemented as an rtable with subtype option Vector[column] or Vector[row].
 • Vectors are created by using the Vector(..) constructor command, or by using the available shortcut notation ().
 • A number of special Vectors are provided in the LinearAlgebra package (e.g., the Unit Vector, the Zero Vector, and the Constant Vector). In addition, the LinearAlgebra package includes many Vector operations. See Details of the LinearAlgebra Package for more information.
 • The type recognizer for a Vector is type/Vector.
 • The ith entry of the Vector V is accessed, extracted, and assigned to by using the notation V[i]. For more information see Vector Entry Extraction and Vector Entry Assignment.
 • The map, Map, map2, and Map2 commands can be used to apply a function to each entry in a Vector.

Scalars

 • A scalar is a Maple object of type algebraic which neither is nor includes a Matrix or a Vector.

Compatibility with Other Maple Objects

 The following objects are not recognized as Matrices, Vectors or scalars.
 •
 • lists of lists
 •
 • table-based arrays
 • linalg matrices
 • linalg vectors
 • rtable-based Arrays (rtables with subtype option Array)