;;;; STA: "Bases.RowColSpan.Null.txt" % (progn (setq *REWid* 10) (use-ring GaussRational-ring)) % (setq G (mat-make-initseq 4 7 #(18 30 -522 1470 15 -9 132 11 9 -459 749 -7 61 154 -6 -10 174 -490 -5 3 -44 2 7 -3 222 8 -27 -14)) ) [ 18 30 -522 1470 15 -9 132 ] [ 11 9 -459 749 -7 61 154 ] [ -6 -10 174 -490 -5 3 -44 ] [ 2 7 -3 222 8 -27 -14 ] % (scrutinize-matrix G :stepwise t) Reducing column-0 produces c0 c1 c2 c3 c4 c5 c6 Row operations |-------------------------------------------------------| r0 | 1 5/3 -29 245/3 5/6 -1/2 22/3 | 1/18 0 0 0 r1 | 0 -28/3 -140 -448/3 -97/6 133/2 220/3 | -11/18 1 0 0 r2 | 0 0 0 0 0 0 0 | 1/3 0 1 0 r3 | 0 11/3 55 176/3 19/3 -26 -86/3 | -1/9 0 0 1 |-------------------------------------------------------| Reducing column-1 produces c0 c1 c2 c3 c4 c5 c6 Row operations |-------------------------------------------------------| r0 | 1 0 -54 55 -115/56 91/8 143/7 | -3/56 5/28 0 0 r1 | 0 1 15 16 97/56 -57/8 -55/7 | 11/168 -3/28 0 0 r2 | 0 0 0 0 0 0 0 | 1/3 0 1 0 r3 | 0 0 0 0 -1/56 1/8 1/7 | -59/168 11/28 0 1 |-------------------------------------------------------| Reducing column-2 produces NO change. Reducing column-3 produces NO change. Reducing column-4 produces c0 c1 c2 c3 c4 c5 c6 Row operations |-------------------------------------------------------| r0 | 1 0 -54 55 0 -3 4 | 121/3 -45 0 -115 r1 | 0 1 15 16 0 5 6 | -34 38 0 97 r2 | 0 0 0 0 1 -7 -8 | 59/3 -22 0 -56 r3 | 0 0 0 0 0 0 0 | 1/3 0 1 0 |-------------------------------------------------------| Reducing column-5 produces NO change. Reducing column-6 produces NO change. JK: Found 3 pivots before the seventh column. Non-square matrix G, c0 c1 c2 c3 c4 c5 c6 [ 18 30 -522 1470 15 -9 132 ] [ 11 9 -459 749 -7 61 154 ] [ -6 -10 174 -490 -5 3 -44 ] [ 2 7 -3 222 8 -27 -14 ] has Rank=3 and nullity 4. Multiplying G by its RowOp matrix [ 121/3 -45 0 -115 ] [ -34 38 0 97 ] [ 59/3 -22 0 -56 ] [ 1/3 0 1 0 ] produces R := RREF(G) matrix x0 x1 x2 x3 x4 x5 x6 A B C D [ 1 0 -54 55 0 -3 4 ] [ 0 1 15 16 0 5 6 ] [ 0 0 0 0 1 -7 -8 ] [ 0 0 0 0 0 0 0 ] with pivot columns 0, 1, 4, and free columns 2, 3, 5, 6. A basis for LeftNull(G) is A B C D x0 [ 54 -55 3 -4 ] x1 [ -15 -16 -5 -6 ] A [ 1 0 0 0 ] B [ 0 1 0 0 ] x4 [ 0 0 7 8 ] C [ 0 0 1 0 ] D [ 0 0 0 1 ] A basis for ColSpn(G) is c0 c1 c4 [ 18 30 15 ] [ 11 9 -7 ] [ -6 -10 -5 ] [ 2 7 8 ] A basis for RowSpn(G) is [ 1 0 -54 55 0 -3 4 ] [ 0 1 15 16 0 5 6 ] [ 0 0 0 0 1 -7 -8 ] % (setq GTab *Tab*) ;;Store the tableau. c0 c1 c2 c3 c4 c5 c6 Row operations |------------------------------------| r0 | 1 0 -54 55 0 -3 4 | 121/3 -45 0 -115 r1 | 0 1 15 16 0 5 6 | -34 38 0 97 r2 | 0 0 0 0 1 -7 -8 | 59/3 -22 0 -56 r3 | 0 0 0 0 0 0 0 | 1/3 0 1 0 |------------------------------------| ;; Store the bases for, respectively, RowSpn(G), ColSpn(G) and LeftNull(G): % (setf GR (MTB-RowSpnBsis GTab) GC (MTB-ColSpnBsis GTab) GLNull (MTB-LNullBsis GTab)) [ 54 -55 3 -4 ] [ -15 -16 -5 -6 ] [ 1 0 0 0 ] LNullBsis = [ 0 1 0 0 ] [ 0 0 7 8 ] [ 0 0 1 0 ] [ 0 0 0 1 ] ;; Checking, we multiply G by the LNull matrix, expecting ;; to get all zeros... % (mat-mul G GLNull) [ 0 0 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ] ;; which we do. ;; Let's verify that GC has the same col-span as G. [Hence, ;; since the col-set of GC is lin.indep, our GC-col-set is ;; indeed a basis for ColSpn(G).] % (mat-Horiz-concat G GC) [ 18 30 -522 1470 15 -9 132 18 30 15 ] [ 11 9 -459 749 -7 61 154 11 9 -7 ] [ -6 -10 174 -490 -5 3 -44 -6 -10 -5 ] [ 2 7 -3 222 8 -27 -14 2 7 8 ] % (rref-mtab-beforecol *) ;;RREF the foregoing matrix c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 Row operations |--------------------------------------------------------| r0 | 1 0 -54 55 0 -3 4 1 0 0 | 121/3 -45 0 -115 r1 | 0 1 15 16 0 5 6 0 1 0 | -34 38 0 97 r2 | 0 0 0 0 1 -7 -8 0 0 1 | 59/3 -22 0 -56 r3 | 0 0 0 0 0 0 0 0 0 0 | 1/3 0 1 0 |--------------------------------------------------------| ;; To make this clearly, I'll omit the zeros below the RREF staircase: c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 Row operations |--------------------------------------------------------| r0 | 1 0 -54 55 0 -3 4 1 0 0 | 121/3 -45 0 -115 r1 | 1 15 16 0 5 6 0 1 0 | -34 38 0 97 r2 | 1 -7 -8 0 0 1 | 59/3 -22 0 -56 r3 | | 1/3 0 1 0 |--------------------------------------------------------| ;; Now we use the OTHER ORDER. % (mat-Horiz-concat GC G) [ 18 30 15 18 30 -522 1470 15 -9 132 ] [ 11 9 -7 11 9 -459 749 -7 61 154 ] [ -6 -10 -5 -6 -10 174 -490 -5 3 -44 ] [ 2 7 8 2 7 -3 222 8 -27 -14 ] % (rref-mtab-beforecol *) ;; Again, omitting the below-staircase zeros. c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 Row operations |--------------------------------------------------------| r0 | 1 0 0 1 0 -54 55 0 -3 4 | 121/3 -45 0 -115 r1 | 1 0 0 1 15 16 0 5 6 | -34 38 0 97 r2 | 1 0 0 0 0 1 -7 -8 | 59/3 -22 0 -56 r3 | | 1/3 0 1 0 |--------------------------------------------------------| ;; Store our putative RowSpn basis, as column-vectors. % (setq GRowSpnAsColsONE (mat-tpose (MTB-RowSpnBsis GTab))) [ 1 0 0 ] [ 0 1 0 ] [ -54 15 0 ] [ 55 16 0 ] [ 0 0 1 ] [ -3 5 -7 ] [ 4 6 -8 ] ;; Transposing G, we RREF again. % (setq TposeG (mat-tpose G)) Col0 Col1 Col2 Col3 [ 18 11 -6 2 ] [ 30 9 -10 7 ] [ -522 -459 174 -3 ] [ 1470 749 -490 222 ] [ 15 -7 -5 8 ] [ -9 61 3 -27 ] [ 132 154 -44 -14 ] % (scrutinize-matrix TposeG :stepwise t) Reducing column-0 produces c0 c1 c2 c3 Row operations |-----------------------------| r0 | 1 11/18 -1/3 1/9 | 1/18 0 0 0 0 0 0 r1 | 0 -28/3 0 11/3 | -5/3 1 0 0 0 0 0 r2 | 0 -140 0 55 | 29 0 1 0 0 0 0 r3 | 0 -448/3 0 176/3 | -245/3 0 0 1 0 0 0 r4 | 0 -97/6 0 19/3 | -5/6 0 0 0 1 0 0 r5 | 0 133/2 0 -26 | 1/2 0 0 0 0 1 0 r6 | 0 220/3 0 -86/3 | -22/3 0 0 0 0 0 1 |-----------------------------| Reducing column-1 produces c0 c1 c2 c3 Row operations |----------------------------| r0 | 1 0 -1/3 59/168 | -3/56 11/168 0 0 0 0 0 r1 | 0 1 0 -11/28 | 5/28 -3/28 0 0 0 0 0 r2 | 0 0 0 0 | 54 -15 1 0 0 0 0 r3 | 0 0 0 0 | -55 -16 0 1 0 0 0 r4 | 0 0 0 -1/56 | 115/56 -97/56 0 0 1 0 0 r5 | 0 0 0 1/8 | -91/8 57/8 0 0 0 1 0 r6 | 0 0 0 1/7 | -143/7 55/7 0 0 0 0 1 |----------------------------| Reducing column-2 produces NO change. Reducing column-3 produces c0 c1 c2 c3 Row operations |----------------------------| r0 | 1 0 -1/3 0 | 121/3 -34 0 0 59/3 0 0 r1 | 0 1 0 0 | -45 38 0 0 -22 0 0 r2 | 0 0 0 1 | -115 97 0 0 -56 0 0 r3 | 0 0 0 0 | -55 -16 0 1 0 0 0 r4 | 0 0 0 0 | 54 -15 1 0 0 0 0 r5 | 0 0 0 0 | 3 -5 0 0 7 1 0 r6 | 0 0 0 0 | -4 -6 0 0 8 0 1 |----------------------------| JK: Found 3 pivots before the fourth column. Non-square matrix TposeG, [ 18 11 -6 2 ] [ 30 9 -10 7 ] [ -522 -459 174 -3 ] [ 1470 749 -490 222 ] [ 15 -7 -5 8 ] [ -9 61 3 -27 ] [ 132 154 -44 -14 ] has Rank=3 and nullity 1. Multiplying TposeG by its RowOp matrix [ 121/3 -34 0 0 59/3 0 0 ] [ -45 38 0 0 -22 0 0 ] [ -115 97 0 0 -56 0 0 ] [ -55 -16 0 1 0 0 0 ] [ 54 -15 1 0 0 0 0 ] [ 3 -5 0 0 7 1 0 ] [ -4 -6 0 0 8 0 1 ] produces R := RREF(TposeG) matrix [ 1 0 -1/3 0 ] [ 0 1 0 0 ] [ 0 0 0 1 ] [ 0 0 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ] [ 0 0 0 0 ] with pivot columns 0, 1, 3, and free columns 2. A basis for LeftNull(TposeG) is [ 1/3 ] [ 0 ] [ 1 ] [ 0 ] A basis for ColSpn(TposeG) is Col0 Col1 Col3 [ 18 11 2 ] [ 30 9 7 ] [ -522 -459 -3 ] [ 1470 749 222 ] [ 15 -7 8 ] [ -9 61 -27 ] [ 132 154 -14 ] A basis for RowSpn(TposeG) is [ 1 0 -1/3 0 ] [ 0 1 0 0 ] [ 0 0 0 1 ] % (setq TG-tab *Tab*) ;;Save the tabular. c0 c1 c2 c3 Row operations |-------------------------------| r0 | 1 0 -1/3 0 | 121/3 -34 0 0 59/3 0 0 r1 | 0 1 0 0 | -45 38 0 0 -22 0 0 r2 | 0 0 0 1 | -115 97 0 0 -56 0 0 r3 | 0 0 0 0 | -55 -16 0 1 0 0 0 r4 | 0 0 0 0 | 54 -15 1 0 0 0 0 r5 | 0 0 0 0 | 3 -5 0 0 7 1 0 r6 | 0 0 0 0 | -4 -6 0 0 8 0 1 |-------------------------------| % (setq GRowSpnAsColsTWO (MTB-ColSpnBsis TG-tab)) Col0 Col1 Col3 [ 18 11 2 ] [ 30 9 7 ] [ -522 -459 -3 ] [ 1470 749 222 ] [ 15 -7 8 ] [ -9 61 -27 ] [ 132 154 -14 ] % (mat-Horiz-concat GRowSpnAsColsTWO GRowSpnAsColsONE TposeG) B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 [ 18 11 2 1 0 0 18 11 -6 2 ] [ 30 9 7 0 1 0 30 9 -10 7 ] [ -522 -459 -3 -54 15 0 -522 -459 174 -3 ] [ 1470 749 222 55 16 0 1470 749 -490 222 ] [ 15 -7 8 0 0 1 15 -7 -5 8 ] [ -9 61 -27 -3 5 -7 -9 61 3 -27 ] [ 132 154 -14 4 6 -8 132 154 -44 -14 ] % (rref-mtab-beforecol *) b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 Row operations |-----------------------------------------------------------| r0 | 1 0 0 121/3 -34 59/3 1 0 -1/3 0 | 121/3 -34 0 0 59/3 0 0 r1 | 0 1 0 -45 38 -22 0 1 0 0 | -45 38 0 0 -22 0 0 r2 | 0 0 1 -115 97 -56 0 0 0 1 | -115 97 0 0 -56 0 0 r3 | 0 0 0 0 0 0 0 0 0 0 | -55 -16 0 1 0 0 0 r4 | 0 0 0 0 0 0 0 0 0 0 | 54 -15 1 0 0 0 0 r5 | 0 0 0 0 0 0 0 0 0 0 | 3 -5 0 0 7 1 0 r6 | 0 0 0 0 0 0 0 0 0 0 | -4 -6 0 0 8 0 1 |-----------------------------------------------------------| % (mat-Horiz-concat GRowSpnAsColsONE GRowSpnAsColsTWO TposeG) B3 B4 B5 B0 B1 B2 B6 B7 B8 B9 [ 1 0 0 18 11 2 18 11 -6 2 ] [ 0 1 0 30 9 7 30 9 -10 7 ] [ -54 15 0 -522 -459 -3 -522 -459 174 -3 ] [ 55 16 0 1470 749 222 1470 749 -490 222 ] [ 0 0 1 15 -7 8 15 -7 -5 8 ] [ -3 5 -7 -9 61 -27 -9 61 3 -27 ] [ 4 6 -8 132 154 -14 132 154 -44 -14 ] % (rref-mtab-beforecol *) b3 b4 b5 b0 b1 b2 b6 b7 b8 b9 Row operations |- -------------------------------------------------| r0 | 1 0 0 18 11 2 18 11 -6 2 | 1 0 0 0 0 0 0 r1 | 0 1 0 30 9 7 30 9 -10 7 | 0 1 0 0 0 0 0 r2 | 0 0 1 15 -7 8 15 -7 -5 8 | 0 0 0 0 1 0 0 r3 | 0 0 0 0 0 0 0 0 0 0 | -55 -16 0 1 0 0 0 r4 | 0 0 0 0 0 0 0 0 0 0 | 54 -15 1 0 0 0 0 r5 | 0 0 0 0 0 0 0 0 0 0 | 3 -5 0 0 7 1 0 r6 | 0 0 0 0 0 0 0 0 0 0 | -4 -6 0 0 8 0 1 |---------------------------------------------------| % (mat-Horiz-concat TposeG GRowSpnAsColsTWO GRowSpnAsColsONE) B6 B7 B8 B9 B0 B1 B2 B3 B4 B5 [ 18 11 -6 2 18 11 2 1 0 0 ] [ 30 9 -10 7 30 9 7 0 1 0 ] [ -522 -459 174 -3 -522 -459 -3 -54 15 0 ] [ 1470 749 -490 222 1470 749 222 55 16 0 ] [ 15 -7 -5 8 15 -7 8 0 0 1 ] [ -9 61 3 -27 -9 61 -27 -3 5 -7 ] [ 132 154 -44 -14 132 154 -14 4 6 -8 ] % (rref-mtab-beforecol *) b6 b7 b8 b9 b0 b1 b2 b3 b4 b5 Row operations |-----------------------------------------------------------------| r0 | 1 0 -1/3 0 1 0 0 121/3 -34 59/3 | 121/3 -34 0 0 59/3 0 0 r1 | 0 1 0 0 0 1 0 -45 38 -22 | -45 38 0 0 -22 0 0 r2 | 0 0 0 1 0 0 1 -115 97 -56 | -115 97 0 0 -56 0 0 r3 | 0 0 0 0 0 0 0 0 0 0 | -55 -16 0 1 0 0 0 r4 | 0 0 0 0 0 0 0 0 0 0 | 54 -15 1 0 0 0 0 r5 | 0 0 0 0 0 0 0 0 0 0 | 3 -5 0 0 7 1 0 r6 | 0 0 0 0 0 0 0 0 0 0 | -4 -6 0 0 8 0 1 |-----------------------------------------------------------------| ;;;; END: "Bases.RowColSpan.Null.txt"