How to find matrix S, given by this equation

3 views (last 30 days)
NA
NA on 24 Apr 2022
Commented: Bruno Luong on 24 Apr 2022
I have matrix L and the right-hand side of equation below.
How can I get matrix S?
All the matrices are square matrix.
  1 Comment
Bruno Luong
Bruno Luong on 24 Apr 2022
L must have rank<n Do we know something else, such a is L Hermitian? Same question for J.

Sign in to comment.

Accepted Answer

John D'Errico
John D'Errico on 24 Apr 2022
There is no unique solution. Or, there may be no solution at all.
This looks vaguely like an algebraic Riccati equation. Your problem is of the general form
inv(S)*L*S = J
Where S is the unknown matrix. If the matrix S has an inverse, then L must have the same rank as your right hand side matrix. And we know that the right hand side matrix (J) is rank deficient.
First, make up a random problem.
J = zeros(4,4);
Jdel = magic(3);
J(2:end,2:end) = Jdel
J = 4×4
0 0 0 0 0 8 1 6 0 3 5 7 0 4 9 2
So the right hand side is a matrix of the indicated form. Now I'll choose a known non-singular matrix S. Here is a simple one:
S0 = toeplitz(1:4)
S0 = 4×4
1 2 3 4 2 1 2 3 3 2 1 2 4 3 2 1
L = S0*J*inv(S0)
L = 4×4
24.6000 -14.5000 -12.0000 10.1000 15.6000 -7.0000 -12.0000 8.6000 15.8000 -14.5000 -0.0000 3.3000 20.4000 -23.0000 12.0000 -2.6000
So the above problem must satisfy the equation: inv(S)*L*S==J. A solution MUST exist.
Now the problem becomes, given only J and L, can we recover S? I'll pretend I do not know the matrix S0.
Can we find a solution of the form L*S = S*J? Note that I have implicitly left multiplied by S to arrive at that form. But as long as S is non-singular, that is legal, and since you want a solution where S has an inverse, then S MUST be non-singular.
The solution is not too nasty. It uses what I long ago called the kron trick.
n = size(J,1);
M = kron(eye(n),L) - kron(J.',eye(n));
Note that M will be a singular matrix. The problem is, in this case M will have rank n^2-n, not just n^2-1.
rank(M)
ans = 12
We need to solve a homogeneous linear system now.
Mnull = null(M)
Mnull = 16×4
0 0 0 0.1826 0 0 0 0.3651 0 0 0 0.5477 0 0 0 0.7303 0.3545 0.1064 0.4677 0 0.3832 0.0768 0.3446 0 -0.2137 0.0748 0.1605 0 -0.4979 0.0412 0.1480 0 -0.3146 0.4670 0.2255 0 -0.2860 0.4375 0.1024 0
ANY linear combination of the columns of Mnull will suffice. So I will choose some random linear combination.
S = reshape(Mnull*randn(n,1),n,n)
S = 4×4
0.0332 -0.6289 0.0447 1.1861 0.0664 -0.6958 -0.0222 1.1192 0.0996 0.3750 -0.4935 0.4529 0.1327 0.9633 0.2897 -0.8517
Does this solve your problem? Well, yes. Sort of. But it is not a unique solution to that problem in any form.
norm(inv(S)*L*S - J)
ans = 1.3825e-13
Which results in floating point trash. So we have recovered a solution, but not the one I started with. The point is, again, there is no unique solution. And had I not been careful in how I created L then no solution at all may have existed.

More Answers (2)

Torsten
Torsten on 24 Apr 2022
L is NxN and 0_(N-1) is (N-1)x1 ? J_delta is a full (N-1)x(N-1) matrix ?
Then use the eigenvector corresponding to the eigenvalue 0 of L to build S.
  2 Comments
Torsten
Torsten on 24 Apr 2022
Ok, if J_delta is a given matrix, forget my answer.

Sign in to comment.


Sam Chak
Sam Chak on 24 Apr 2022
@NA, thanks for your clarification on the dimensions.
Is this some kind of a Linear Algebra problem?
It seems that the square matrix L is unique, and has to satisfy certain conditions.
For example, say the matrix is given by
L = [0 1 0; 0 0 1; 0 -6 -5]
L =
0 1 0
0 0 1
0 -6 -5
Then, the eigenvalues of matrix are
s = eig(L)
s =
0
-2.0000
-3.0000
Next, the matrix is constructed from the eigenvalues such that
S = [1 1 1; s(1) s(2) s(3); s(1)^2 s(2)^2 s(3)^2]
S =
1.0000 1.0000 1.0000
0 -2.0000 -3.0000
0 4.0000 9.0000
Finally, we can test if is a diagonal matrix where the diagonal elements are the eigenvalues of matrix :
D = S\L*S
D =
0 0.0000 0.0000
0 -2.0000 -0.0000
0 0.0000 -3.0000
Only a centain square matrix can produce such diagonal matrix. For example:
L = [0 1 0; 0 0 1; 0 -15 -8]
L =
0 1 0
0 0 1
0 -15 -8

Community Treasure Hunt

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

Start Hunting!

Translated by