# finding Annihilator matrix on the left for a matrix

12 views (last 30 days)
Waqar Ahmed on 18 Aug 2021
Edited: David Goodmanson on 19 Aug 2021
I have a matrix A which is m by n. I want to find matrix F which annhilates the matrix A on the left i.e F*A = 0. The book suggest that this can be done if matrix F kernel is in the range of matrix A. How can I implement in Matlab?

David Goodmanson on 19 Aug 2021
Edited: David Goodmanson on 19 Aug 2021
HI Waqar,
The matlab function null(A) creates a matrix such that A*null(A) = 0. But you want the matrix F to multiply A on the left. Replacing A by its transpose, A'*null(A') = 0. Then taking the transpose of that expression, null(A')'*A = 0 . So
F = null(A')' 
works. But you also have a choice about the size of F. For example, suppose A is 8x4. The rank of A is the number of linearly independent (LI) columns of A. There are only 4 columns, so rA = rank(A) is at most 4 and could be less.
Since the columns of A have 8 elements, then (regardless of what appears in any matrix), there can be 8 LI columns all together. Suppose rA = 3. This means that one can construct 8-rA = 5 LI column vectors in the so-called null space, each of which can be constructed to be perpendicular to all 3 LI columns in A.
Each of the vectors in the null space is a row of F (so that matrix multiplication F*A works out dimensionally). The F created by  has all 5 LI vectors and is 5x8. F*A = 0 and the resultng 0 matrix is 5x4. But every row of F annihilates A independently. Depending on what you want to do, you could use, say, just the third row of F as the new F, in which case F*A = 0 and the resulting 0 matrix is 1x4. Or the first two rows of F as the new F, in which case the resulting 0 matrix is 2x4. Or you can make n linear combinations of the rows of F as the new F, in which case the resulting 0 matrix is nx4.