finding Annihilator matrix on the left for a matrix

18 次查看(过去 30 天)
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?

回答(1 个)

David Goodmanson
David Goodmanson 2021-8-19
编辑:David Goodmanson 2021-8-19
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')' [1]
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 [1] 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.

类别

Help CenterFile Exchange 中查找有关 Matrices and Arrays 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by