Creating a matrix
There are several ways to create a matrix in Algosim.
Basic methods
Vector brackets can be used to specify the numbers of the matrix in row-major order:
A ≔ ❨❨4, 1, 5❩, ❨0, 1, 3❩❩
⎛4 1 5⎞ ⎝0 1 3⎠
Alternatively, the matrix
function can be used to specify the numbers of the matrix as a single list (in row-major order) together with the desired number of columns:
matrix(5, 4, 3, 2, 0, 1, 4, 5, 2, 0, 1, 1, 2, 3, 6, 5)
⎛4 3 2 0 1⎞ ⎜4 5 2 0 1⎟ ⎝1 2 3 6 5⎠
Row- and column-centric methods
The MatFromCols
function creates a matrix from a given sequence of vectors, using the vectors as the columns of the matrix:
MatFromCols(❨1, 4, 2❩, ❨5, 1, 2❩)
⎛1 5⎞ ⎜4 1⎟ ⎝2 2⎠
Similarly, the MatFromRows
function creates a matrix from a given sequence of vectors, using the vectors as the rows of the matrix:
MatFromRows(❨1, 4, 2❩, ❨5, 1, 2❩)
⎛1 4 2⎞ ⎝5 1 2⎠
Notice that MatFromRows
produces the same result as ordinary vector brackets (and the underlying vector
function).
From blocks
The MatFromBlocks
function creates a block matrix from a sequence of blocks (in row-major order) and the desired number of block columns.
A ≔ ❨❨1, 2❩, ❨3, 4❩❩; B ≔ ❨❨5, 1, 3❩, ❨1, 0, 2❩❩; C ≔ ❨❨5, 1❩, ❨0, 1❩❩; D ≔ ❨❨5, 1, 2❩, ❨5, 6 ,7❩❩;
MatFromBlocks(2, A, B, C, D)
⎛1 2 5 1 3⎞ ⎜3 4 1 0 2⎟ ⎜5 1 5 1 2⎟ ⎝0 1 5 6 7⎠
Using a formula
The compute
and matrix
functions can be used to generate a matrix using a formula for its entries:
matrix(compute(a⋅b, a, 1, 12, b, 1, 12))
⎛ 1 2 3 4 5 6 7 8 9 10 11 12⎞ ⎜ 2 4 6 8 10 12 14 16 18 20 22 24⎟ ⎜ 3 6 9 12 15 18 21 24 27 30 33 36⎟ ⎜ 4 8 12 16 20 24 28 32 36 40 44 48⎟ ⎜ 5 10 15 20 25 30 35 40 45 50 55 60⎟ ⎜ 6 12 18 24 30 36 42 48 54 60 66 72⎟ ⎜ 7 14 21 28 35 42 49 56 63 70 77 84⎟ ⎜ 8 16 24 32 40 48 56 64 72 80 88 96⎟ ⎜ 9 18 27 36 45 54 63 72 81 90 99 108⎟ ⎜ 10 20 30 40 50 60 70 80 90 100 110 120⎟ ⎜ 11 22 33 44 55 66 77 88 99 110 121 132⎟ ⎝ 12 24 36 48 60 72 84 96 108 120 132 144⎠
Special types of matrices
The diag
function can create diagonal matrices:
diag(1, 2, 3, 4)
⎛1 0 0 0⎞ ⎜0 2 0 0⎟ ⎜0 0 3 0⎟ ⎝0 0 0 4⎠
More generally, block-diagonal matrices can be created as direct sums:
❨❨1, 2❩, ❨5, 1❩❩ ⊕ ❨❨5, 6, 3❩, ❨1, 2, 2❩❩
⎛1 2 0 0 0⎞ ⎜5 1 0 0 0⎟ ⎜0 0 5 6 3⎟ ⎝0 0 1 2 2⎠
Rank-1 matrices can be created as outer products:
❨1, 2, 3❩ ⊗ ❨6, 2, 1, 2❩
⎛ 6 2 1 2⎞ ⎜12 4 2 4⎟ ⎝18 6 3 6⎠
The IdentityMatrix
and ZeroMatrix
functions create identity and zero matrices, respectively.
Additionally, the following functions create special matrices:
Creating a matrix from other matrices
Casting
Any object can be cast to a matrix using the matrix
function:
matrix('('(1, 2, 3), '(4, 5, 6)))
⎛1 2 3⎞ ⎝4 5 6⎠