$SPAD/src/input matrix.input

Timothy Daly December 3, 2016

Abstract

Contents

2

1 License

— license —

--Copyright The Numerical Algorithms Group Limited 1991.

———-

— * —

)set break resume
)spool matrix.output
)set message test on
)set message auto off
)clear all

———-

A number of matrix computations over the integers and over the rationals using various algortihms and indexing schemes.

The Hilbert matrix — * —

--S 1 of 42
mat : MATRIX FRAC INT := matrix [[1/(i + j) for i in 1..5] for j in 1..5]
--R
--R
--R        +1  1  1  1  1 +
--R        |-  -  -  -  - |
--R        |2  3  4  5  6 |
--R        |              |
--R        |1  1  1  1  1 |
--R        |-  -  -  -  - |
--R        |3  4  5  6  7 |
--R        |              |
--R        |1  1  1  1  1 |
--R   (1)  |-  -  -  -  - |
--R        |4  5  6  7  8 |
--R        |              |
--R        |1  1  1  1  1 |
--R        |-  -  -  -  - |
--R        |5  6  7  8  9 |
--R        |              |
--R        |1  1  1  1   1|
--R        |-  -  -  -  --|
--R        +6  7  8  9  10+
--R                                              Type: Matrix(Fraction(Integer))
--E 1
--S 2 of 42

matinv := inverse mat
--R
--R
--R        +  450     - 4200    12600    - 15120     6300  +
--R        |                                               |
--R        |- 4200    44100    - 141120   176400   - 75600 |
--R        |                                               |
--R   (2)  | 12600   - 141120   470400   - 604800   264600 |
--R        |                                               |
--R        |- 15120   176400   - 604800   793800   - 352800|
--R        |                                               |
--R        + 6300    - 75600    264600   - 352800   158760 +
--R                                   Type: Union(Matrix(Fraction(Integer)),...)
--E 2
--S 3 of 42
mat * matinv
--R
--R
--R        +1  0  0  0  0+
--R        |             |
--R        |0  1  0  0  0|
--R        |             |
--R   (3)  |0  0  1  0  0|
--R        |             |
--R        |0  0  0  1  0|
--R        |             |
--R        +0  0  0  0  1+
--R                                              Type: Matrix(Fraction(Integer))
--E 3

———-

Same computation, different indexing — * —

--S 4 of 42
mat1 : IMATRIX(FRAC INT,-3,47) := _
   matrix [[1/(i + j) for i in 1..5] for j in 1..5]
--R
--R
--R        +1  1  1  1  1 +
--R        |-  -  -  -  - |
--R        |2  3  4  5  6 |
--R        |              |
--R        |1  1  1  1  1 |
--R        |-  -  -  -  - |
--R        |3  4  5  6  7 |
--R        |              |
--R        |1  1  1  1  1 |

--R   (4)  |-  -  -  -  - |
--R        |4  5  6  7  8 |
--R        |              |
--R        |1  1  1  1  1 |
--R        |-  -  -  -  - |
--R        |5  6  7  8  9 |
--R        |              |
--R        |1  1  1  1   1|
--R        |-  -  -  -  --|
--R        +6  7  8  9  10+
--R                                 Type: IndexedMatrix(Fraction(Integer),-3,47)
--E 4
--S 5 of 42
mat1inv := inverse mat1
--R
--R
--R        +  450     - 4200    12600    - 15120     6300  +
--R        |                                               |
--R        |- 4200    44100    - 141120   176400   - 75600 |
--R        |                                               |
--R   (5)  | 12600   - 141120   470400   - 604800   264600 |
--R        |                                               |
--R        |- 15120   176400   - 604800   793800   - 352800|
--R        |                                               |
--R        + 6300    - 75600    264600   - 352800   158760 +
--R                      Type: Union(IndexedMatrix(Fraction(Integer),-3,47),...)
--E 5
--S 6 of 42
mat1 * mat1inv
--R
--R
--R        +1  0  0  0  0+
--R        |             |
--R        |0  1  0  0  0|
--R        |             |
--R   (6)  |0  0  1  0  0|
--R        |             |
--R        |0  0  0  1  0|
--R        |             |
--R        +0  0  0  0  1+
--R                                 Type: IndexedMatrix(Fraction(Integer),-3,47)
--E 6

———-

Vandermonde determinant — * —

--S 7 of 42

mat2 : MATRIX INT := matrix [[j**i for i in 0..4] for j in 1..5]
--R
--R
--R        +1  1  1    1    1 +
--R        |                  |
--R        |1  2  4    8   16 |
--R        |                  |
--R   (7)  |1  3  9   27   81 |
--R        |                  |
--R        |1  4  16  64   256|
--R        |                  |
--R        +1  5  25  125  625+
--R                                                        Type: Matrix(Integer)
--E 7
--S 8 of 42
rowEchelon  mat2
--R
--R
--R        +1  0  0  0  0 +
--R        |              |
--R        |0  1  1  1  1 |
--R        |              |
--R   (8)  |0  0  2  0  2 |
--R        |              |
--R        |0  0  0  6  12|
--R        |              |
--R        +0  0  0  0  24+
--R                                                        Type: Matrix(Integer)
--E 8
--S 9 of 42
determinant mat2
--R
--R
--R   (9)  288
--R                                                        Type: PositiveInteger
--E 9
--S 10 of 42
minordet    mat2
--R
--R
--R   (10)  288
--R                                                        Type: PositiveInteger
--E 10

———-

Same computation, different indexing

— * —

--S 11 of 42
mat3 : IMATRIX(INT,13,-7) := _
   matrix [[j**i for i in 0..4] for j in 1..5]
--R
--R
--R         +1  1  1    1    1 +
--R         |                  |
--R         |1  2  4    8   16 |
--R         |                  |
--R   (11)  |1  3  9   27   81 |
--R         |                  |
--R         |1  4  16  64   256|
--R         |                  |
--R         +1  5  25  125  625+
--R                                           Type: IndexedMatrix(Integer,13,-7)
--E 11
--S 12 of 42
rowEchelon  mat3
--R
--R
--R         +1  0  0  0  0 +
--R         |              |
--R         |0  1  1  1  1 |
--R         |              |
--R   (12)  |0  0  2  0  2 |
--R         |              |
--R         |0  0  0  6  12|
--R         |              |
--R         +0  0  0  0  24+
--R                                           Type: IndexedMatrix(Integer,13,-7)
--E 12
--S 13 of 42
determinant mat3
--R
--R
--R   (13)  288
--R                                                        Type: PositiveInteger
--E 13
--S 14 of 42
minordet    mat3
--R
--R
--R   (14)  288
--R                                                        Type: PositiveInteger
--E 14

———-

Same computation, work over the rationals — * —

--S 15 of 42
mat4 : MATRIX FRAC INT := matrix [[j**i for i in 0..4] for j in 1..5]
--R
--R
--R         +1  1  1    1    1 +
--R         |                  |
--R         |1  2  4    8   16 |
--R         |                  |
--R   (15)  |1  3  9   27   81 |
--R         |                  |
--R         |1  4  16  64   256|
--R         |                  |
--R         +1  5  25  125  625+
--R                                              Type: Matrix(Fraction(Integer))
--E 15
--S 16 of 42
rowEchelon  mat4
--R
--R
--R         +1  0  0  0  0+
--R         |             |
--R         |0  1  0  0  0|
--R         |             |
--R   (16)  |0  0  1  0  0|
--R         |             |
--R         |0  0  0  1  0|
--R         |             |
--R         +0  0  0  0  1+
--R                                              Type: Matrix(Fraction(Integer))
--E 16
--S 17 of 42
determinant mat4
--R
--R
--R   (17)  288
--R                                                      Type: Fraction(Integer)
--E 17
--S 18 of 42
minordet    mat4
--R
--R

--R   (18)  288
--R                                                      Type: Fraction(Integer)
--E 18

———-

Same computation, different indexing — * —

--S 19 of 42
mat5 : IMATRIX(FRAC INT,-113,37) := _
   matrix [[j**i for i in 0..4] for j in 1..5]
--R
--R
--R         +1  1  1    1    1 +
--R         |                  |
--R         |1  2  4    8   16 |
--R         |                  |
--R   (19)  |1  3  9   27   81 |
--R         |                  |
--R         |1  4  16  64   256|
--R         |                  |
--R         +1  5  25  125  625+
--R                               Type: IndexedMatrix(Fraction(Integer),-113,37)
--E 19
--S 20 of 42
rowEchelon  mat5
--R
--R
--R         +1  0  0  0  0+
--R         |             |
--R         |0  1  0  0  0|
--R         |             |
--R   (20)  |0  0  1  0  0|
--R         |             |
--R         |0  0  0  1  0|
--R         |             |
--R         +0  0  0  0  1+
--R                               Type: IndexedMatrix(Fraction(Integer),-113,37)
--E 20
--S 21 of 42
determinant mat5
--R
--R
--R   (21)  288
--R                                                      Type: Fraction(Integer)
--E 21

--S 22 of 42
minordet    mat5
--R
--R
--R   (22)  288
--R                                                      Type: Fraction(Integer)
--E 22
--S 23 of 42
mat6 : MATRIX INT := matrix [[1,2,3],[4,5,6],[7,8,9]]
--R
--R
--R         +1  2  3+
--R         |       |
--R   (23)  |4  5  6|
--R         |       |
--R         +7  8  9+
--R                                                        Type: Matrix(Integer)
--E 23
--S 24 of 42
rowEchelon mat6
--R
--R
--R         +1  2  3+
--R         |       |
--R   (24)  |0  3  6|
--R         |       |
--R         +0  0  0+
--R                                                        Type: Matrix(Integer)
--E 24
--S 25 of 42
rank       mat6
--R
--R
--R   (25)  2
--R                                                        Type: PositiveInteger
--E 25
--S 26 of 42
nullity    mat6
--R
--R
--R   (26)  1
--R                                                        Type: PositiveInteger
--E 26
--S 27 of 42
nullSpace  mat6

--R
--R
--R   (27)  [[1,- 2,1]]
--R                                                  Type: List(Vector(Integer))
--E 27
--S 28 of 42
mat7 : IMATRIX(FRAC INT,163,61657) := matrix [[1,2,3],[4,5,6],[7,8,9]]
--R
--R
--R         +1  2  3+
--R         |       |
--R   (28)  |4  5  6|
--R         |       |
--R         +7  8  9+
--R                             Type: IndexedMatrix(Fraction(Integer),163,61657)
--E 28
--S 29 of 42
rowEchelon mat7
--R
--R
--R         +1  0  - 1+
--R         |         |
--R   (29)  |0  1   2 |
--R         |         |
--R         +0  0   0 +
--R                             Type: IndexedMatrix(Fraction(Integer),163,61657)
--E 29
--S 30 of 42
rank       mat7
--R
--R
--R   (30)  2
--R                                                        Type: PositiveInteger
--E 30
--S 31 of 42
nullity    mat7
--R
--R
--R   (31)  1
--R                                                        Type: PositiveInteger
--E 31
--S 32 of 42
nullSpace  mat7
--R
--R

--R   (32)  [[1,- 2,1]]
--R                             Type: List(IndexedVector(Fraction(Integer),163))
--E 32
--S 33 of 42
mat8 : MATRIX INT := _
 matrix [[1,-2,13,0,5,-47],[-4,15,0,16,-2,1],[-7,0,8,-11,9,0]]
--R
--R
--R         + 1   - 2  13   0     5   - 47+
--R         |                             |
--R   (33)  |- 4  15   0    16   - 2   1  |
--R         |                             |
--R         +- 7   0   8   - 11   9    0  +
--R                                                        Type: Matrix(Integer)
--E 33
--S 34 of 42
rowEchelon mat8
--R
--R
--R         +1  5  65   16  23  - 234+
--R         |                        |
--R   (34)  |0  7  52   16  18  - 187|
--R         |                        |
--R         +0  0  203  21  80  - 703+
--R                                                        Type: Matrix(Integer)
--E 34
--S 35 of 42
rank       mat8
--R
--R
--R   (35)  3
--R                                                        Type: PositiveInteger
--E 35
--S 36 of 42
nullity    mat8
--R
--R
--R   (36)  3
--R                                                        Type: PositiveInteger
--E 36
--S 37 of 42
nullSpace  mat8
--R
--R
--R   (37)

--R   [[- 49,- 44,- 3,29,0,0],[1187,506,- 560,0,1421,0],[5624,1405,4921,0,0,1421]]
--R                                                  Type: List(Vector(Integer))
--E 37
--S 38 of 42
mat9 : IMATRIX(FRAC INT,163,61657) := _
 matrix [[1,-2,13,0,5,-47],[-4,15,0,16,-2,1],[-7,0,8,-11,9,0]]
--R
--R
--R         + 1   - 2  13   0     5   - 47+
--R         |                             |
--R   (38)  |- 4  15   0    16   - 2   1  |
--R         |                             |
--R         +- 7   0   8   - 11   9    0  +
--R                             Type: IndexedMatrix(Fraction(Integer),163,61657)
--E 38
--S 39 of 42
rowEchelon mat9
--R
--R
--R         +         49    1187    5624+
--R         |1  0  0  --  - ----  - ----|
--R         |         29    1421    1421|
--R         |                           |
--R         |         44     506    1405|
--R   (39)  |0  1  0  --  - ----  - ----|
--R         |         29    1421    1421|
--R         |                           |
--R         |          3    80      703 |
--R         |0  0  1  --   ---    - --- |
--R         +         29   203      203 +
--R                             Type: IndexedMatrix(Fraction(Integer),163,61657)
--E 39
--S 40 of 42
rank       mat9
--R
--R
--R   (40)  3
--R                                                        Type: PositiveInteger
--E 40
--S 41 of 42
nullity    mat9
--R
--R
--R   (41)  3
--R                                                        Type: PositiveInteger
--E 41

--S 42 of 42
nullSpace  mat9
--R
--R
--R   (42)
--R       49   44    3         1187  506    80         5624 1405 703
--R   [[- --,- --,- --,1,0,0],[----,----,- ---,0,1,0],[----,----,---,0,0,1]]
--R       29   29   29         1421 1421   203         1421 1421 203
--R                             Type: List(IndexedVector(Fraction(Integer),163))
--E 42
)spool
)lisp (bye)

———-

References^{[1] nothing}

15