EnteringMatrices.mws

Creating Matrices and Vectors in Maple

Version .8 for Maple V R7.

Load pointers to functions in the linear algebra package.

> with(linalg):

Warning, the protected names norm and trace have been redefined and unprotected

Entering a matrix as a list of lists.

> A1 := matrix([ [1,2,3], [4,5,6], [7,8,9] ]);

Enter a vector - will be viewed as a column vector.

> v1 := vector([1, 2, 3]);

We could now multiply A1 times v1 by evalm(A1 &* v1);
Another form of the vector call is vector(3,1) producing a column vector of dim 3 with
initial entries 1.

> v2 := vector(3,1);

Enter a 2 by 3 matrix with entries taken in row major order from the list.

> A2 := matrix(2,3,[x,y,z,w,u,v]);

Enter a 2 by 2 matrix with all entries initialized to 0.

> A3 := matrix(2,2,0);

One can also define a function of row and column indices to initialize a matrix.

> f := (i,j) -> j * x^(i + j);

> A4 := matrix(2,2,f);

A 1 by 3 matrix; i.e. a row vector.

> v3 := matrix(1,3,4);

Another form of a column vector.

> v4 := matrix(2,1,[ 5, 6]);

Matrices can be partially specified:

> A4 := matrix(2,3,[[x,y,z]]);

And then updated with a for loop.

> for j from 1 to 3 do
A4[2,j] := x * y^j:
od:

> print(A4);

Nested loops are also possible to update all entries of a matrix.

Matrices can be stacked horizontally.

> A5 := augment(A2,A4);

Or vertically:

> A6 := stackmatrix(A2,v3);

One can delete a range of rows from a matrix.

> delrows(A1,1..2);

(Use delcols for columns.)

Block diagonal or diagonal matrices can also be easily generated.

> A6 := diag(lambda_1, lambda_2);

(These commands can be used with more than two arguments.)

> A7 := diag(A6,A6):

One can create a 5 x 5 banded matrix by:

> band([a,b,c],5);

A 3 by 3 Jordan block with diagonal entry 5 can be generated by:

> JordanBlock(5,3);

Extract a submatrix using rows 1..3 of A1 and columns 2..3.

> A8 := submatrix(A1,1..3,2..3);

Extract rows and columns as vectors.

> row(A8,2); col(A8,1);

>

>