Left Nullspace of AConsider A=Transpose[Transpose[A]]. If M is the GJSF of A, then M=D.A Partition D by rows into D=Transpose[D11 D21], where D11 corresponds to the nonzero rows of M and D21 corresponds to the zero rows of M. The columns of Transpose[D21] form the standard basis for the Left Nullspace of A.
In[52]:=
a={{1,2,1,2},{2,1,2,1},{3,2,3,2},{3,3,3,3},{5,3,5,3}};
MatrixForm[a]
Out[52]=
1 2 1 2 2 1 2 1 3 2 3 2 3 3 3 3 5 3 5 3
In[53]:=
aI=AppendRows[a,IdentityMatrix[5]];
MatrixForm[aI]
Out[53]=
1 2 1 2 1 0 0 0 0 2 1 2 1 0 1 0 0 0 3 2 3 2 0 0 1 0 0 3 3 3 3 0 0 0 1 0 5 3 5 3 0 0 0 0 1
In[54]:=
GJSFofaI=RowReduce[aI];
MatrixForm[GJSFofaI]
General::spell:
Possible spelling error: new symbol name "GJSFofaI"
is similar to existing symbols {GJSFofAI, GJSFofatI}.
Out[54]=
1
-(-)
1 0 1 0 0 0 0 2
1
-
2
5
-
0 1 0 1 0 0 0 6
1
-(-)
2
7
-(-)
0 0 0 0 1 0 0 6
1
-
2
1
-
0 0 0 0 0 1 0 6
1
-(-)
2
1
-(-)
0 0 0 0 0 0 1 6
1
-(-)
2
Because this is large, let's get the last five columns; that will be D. Notice the TakeColumns command. The -5 means the last four columns.
In[55]:=
Clear[d]
d=TakeColumns[GJSFofaI,-5];
MatrixForm[d]
Out[55]=
1 1
-(-) -
0 0 0 2 2
5 1
- -(-)
0 0 0 6 2
7 1
-(-) -
1 0 0 6 2
1 1
- -(-)
0 1 0 6 2
1 1
-(-) -(-)
0 0 1 6 2
The last three rows correspond to the nonzero rows of M. The standard basis for the Left Nullspace of A is
{Transpose[1 0 0 -7/6 1/2], Transpose[0 1 0 1/6 -1/2],
Transpose[0 0 1 -1/6 -1/2]}.