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 Commento

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.

Accedi per commentare.

Risposte (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 Commenti

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...
M
M il 23 Nov 2017
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?
M
M il 23 Nov 2017
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.

Accedi per commentare.

Categorie

Scopri di più su Mathematics in Centro assistenza e File Exchange

Richiesto:

il 23 Nov 2017

Commentato:

il 24 Nov 2017

Community Treasure Hunt

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

Start Hunting!

Translated by