finding Annihilator matrix on the left for a matrix
6 ビュー (過去 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?
0 件のコメント
回答 (1 件)
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.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Matrices and Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!