### 14.2.2 Special matrices

##### Identity matrix.

The idn or identity command creates identity matrices.

- idn takes n, a positive integer or
  A, a square matrix.
- idn(n) returns the n× n identity matrix.
- idn(A) returns the identity matrix the same size as A.

#### Examples

idn(3)

⎡
⎢
⎢
⎣

1 | 0 | 0
0 | 1 | 0
0 | 0 | 1

⎤
⎥
⎥
⎦

idn([[2,3],[4,5]]

⎡
⎢
⎣

1 | 0
0 | 1

⎤
⎥
⎦

##### Zero matrix.

The newMat command creates a matrix of all zeros.

- newMat takes two arguments: n and p, two positive integers. newMat(n,p) returns the n× p zero matrix.

#### Example

newMat(4,4)

⎡
⎢
⎢
⎢
⎣

0 | 0 | 0 | 0
0 | 0 | 0 | 0
0 | 0 | 0 | 0
0 | 0 | 0 | 0

⎤
⎥
⎥
⎥
⎦

##### Diagonals of matrices and diagonal matrices.

The diag or BlockDiagonal command either creates a diagonal matrix or finds the diagonal elements of an existing matrix or creates diagonal matrices.

- diag takes L, a list or a square matrix.
- diag(L) (for a list L) returns the diagonal matrix with the entries of L on the diagonal.
- diag(L) (for a matrix L) returns a list consisting of the diagonal elements of L.

#### Examples

diag([1,4])

⎡
⎢
⎣

1 | 0
0 | 4

⎤
⎥
⎦

diag([[1,2],[3,4]])

| ⎡ ⎣ | 1,4 | ⎤ ⎦

##### Jordan blocks.

The JordanBlock command creates a Jordan block, i.e. a square matrix with the same value for all diagonal elements, ones just above the diagonal, and zeros everywhere else.

- JordanBlock takes two arguments:
  - a, an expression.
  - n, a positive integer.
  JordanBlock(a,n) returns the n× n matrix with as on the principal diagonal, ones above this diagonal and zeros everywhere else.

#### Example

JordanBlock(7,3)

⎡
⎢
⎢
⎣

7 | 1 | 0
0 | 7 | 1
0 | 0 | 7

⎤
⎥
⎥
⎦

##### Hilbert matrix.

A Hilbert matrix is a square matrix whose element in the ith row and jth column (recall that the indices are zero-based) is

aj,k=

1
j+k+1

.

The hilbert command creates Hilbert matrices. See Section 21.4.6 for other uses of hilbert.

- hilbert takes n, a positive integer.
- hilbert(n) returns the n× n Hilbert matrix.

#### Examples

hilbert(4)

⎡
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎣

1

1
2

1
3

1
4

1
2

1
3

1
4

1
5

1
3

1
4

1
5

1
6

1
4

1
5

1
6

1
7

⎤
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎦

Hilbert matrix is known for being regular but severely ill-conditioned. For example:

cond(hilbert(10))

3.53654789112×1013 |  |  |  |  |  |  |  |  |  |

##### Vandermonde matrix.

A Vandermonde matrix is a square matrix where each row starts with a 1 and is in geometric progression. The vandermonde command finds a Vandermonde matrix.

- vandermonde takes X=[x0,…,xn−1], a vector.
- vandermonde(X) returns the corresponding Vandermonde matrix; namely, the kth row of the matrix is the vector whose components are xik for i=0,…,n−1 and k=0,…,n−1.

##### Remark.

Remember that the indices of the rows and columns begin at 0 with Xcas.

#### Example

If a is symbolic else enter purge(a) before:

vandermonde([a,2,3])

⎡
⎢
⎢
⎣

1 | a | a2
1 | 2 | 4
1 | 3 | 9

⎤
⎥
⎥
⎦