Reformulate a matrix equation

Greetings everyone. I have a question: I have 3 matrices which contain numeral values, all of them are of the same order. The matrices are A,J and S.
The equation of is J = inv(S) * A * S;
Is there any way possible for me to solve this for S? i.e. J and A are known but S is unknown, can I do anything to obtain S from J and A? Thank you in advance.
Regards, M. Ayoub
*Edit: S is unknown, when I said it contains numeral values I meant that that unknowns are of numeral type (i.e. not string or char, etc...).
*Edit: all of the matrices are square matrices.

1 Comment

If it is assumed that an inverse exists for S, then your equation implies that S*J-A*S = 0. For n x n matrices, this is consequently n^2 linear equations in n^2 unknown S values. However, I think you will find that unless J and A bear a very special relation to one another, the associated n^2 x n^2 matrix of J and A coefficients has rank n^2, and this latter equation will have only the trivial solution S = 0. S would therefore possess no inverse. Consequently, in the general case there is no solution to your equation. That is, of course, not a fault of Matlab. It is a general mathematical property.

Sign in to comment.

Answers (1)

If J = inv(S)*A*S then J*inv(S) = inv(S)*A*S*inv(S) so J*inv(S) = inv(S) * A. Then S*J*inv(S) = S*inv(S) * A, so S*J*inv(S) = A and so
A = S*J*inv(S)
Your question assumes that S is invertable, so as long as you have the numeric values for S and J and S is invertable then you can calculate A.
Note: sometimes people ask this question when the matrices are not square. That case cannot usually be solved.

8 Comments

They’re actually all square. I’ll put that in my question thank you. As for your answer, I got it. But my main concern here is to calculate S. Is there any way possible? I tried
S = syms(‘S’, [4 4]) %A and J are of order 4
solve(S*J == A*S,S)
But it gives me weird outputs...
I think this is not that simple, as the question was to calculate S, with known matrices A and J.
But you can use nonlinear matrix solver to find the value of S.
Is there a way to solve nonlinear matrix equations using MATLAB?
One possible way is to solve fsolve.
Ah, unfortunately the solve(S*J==A*S,S) formulation gives S as all zero, which is a solution when written in that form...)
On the test random data I used, vpasolve(J == inv(S)*A*S) said there was no solution.
Oh well. I guess I can’t achieve that using MATLAB. Thank you very much! Much appreciated
It might have worked on other data.

Sign in to comment.

Categories

Find more on Mathematics in Help Center and File Exchange

Asked:

on 23 Nov 2017

Commented:

on 24 Nov 2017

Community Treasure Hunt

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

Start Hunting!