Solving linear matrix equation

Hi folks! I need some help (Though I have a doubt whether this is an appropriate question for this group).
Can you please help me to solve this equation: AB=A, where A is a known symmetric, singular matrix. And diagonal elements of B are also known.
For clarification: All elements of A is known. And only diagonal elements of B are known. As an example, you can consider: [1 -1/2 -1/2; -1/2 1 -1/2; -1/2 -1/2 1] and diag B=[ 3 3 3].
Thanks in advance.

6 个评论

Show us A and B.
Maybe, a kind of a general optimization procedure can be employed with the off-diagonal elements of B chosen as the variables to be optimized. If only the exact solution exists at all, which is not clear. I believe, our Optimizer package can help, see it at https://sourceforge.net/projects/optimizer-sovkov/.
Is all of B known or just the diagonal elements? Is B all zero except at some diagonal elements?
When you describe A I am not sure whether you are saying that all of the elements of A are known, or if what is known about it is that it is symmetric and singular?
All elements of A is known. And only diagonal elements of B are known. As an example, you can consider: [1 -1/2 -1/2; -1/2 1 -1/2; -1/2 -1/2 1] and diag B=[ 3 3 3].
See my code below that gives
B =
3.0000 2.0000 2.0000
2.0000 3.0000 2.0000
2.0000 2.0000 3.0000

请先登录,再进行评论。

 采纳的回答

Bruno Luong
Bruno Luong 2020-8-17
编辑:Bruno Luong 2020-8-17
% Generate testexample of A, B (n x n) matrix such that A*B=A
% Here A is generated to be symmetric but it doesn't matter
n = 5;
C = rand(n,1)*rand(1,n);
K = null(C);
A = K*K.';
B = C.' + eye(n)
% INPUT
dB = diag(B);
clear B
% Reconstruct (off-diagonal elemenst of) B from A and dB
X = A.*(1-dB(:).');
n = size(A,2);
B = diag(dB);
for j=1:n
i = [1:j-1,j+1:n];
B(i,j) = A(:,i) \ X(:,j);
end
B

更多回答(0 个)

类别

Community Treasure Hunt

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

Start Hunting!

Translated by